非浏览器Webkit内核软件 解密豌豆荚2.0的技术秘密

原创
企业动态 移动开发
非浏览器的软件为何想到用浏览器的技术?又为何选择Webkit技术而不是Gecko、Trident这样的技术?全新构架的豌豆荚2.0相比之前的版本到底有哪些方面的提升?开发过程中是否遇到什么障碍?豌豆荚的两位技术工程师高雄和范怀宇在接受51CTO采访时为我们一一解答了这些疑问

  众所周知中国的IT界有个很奇怪的现象,一旦某个市场被认为有前景,很多同类型的厂商都会一拥而入。手机管理软件这个市场也不例外。目前,这一市场林立的产品有91手机助手、豌豆荚、腾讯应用助手、360手机助手,摩乐手机管家等等。

  作为创新工场首个曝光投资项目、手机管理软件的先行者之一,豌豆荚如何看待和应对目前的竞争局面——特别是在像腾讯、360这样实力强劲的公司也进入到这一领域之后,成为众多媒体朋友关注的话题。不过,在豌豆荚2.0的产品发布会上,面对这样的提问,豌豆荚联合创始人王俊煜只用了几句轻描淡写的话就“四两拨千斤”的回答了这一问题。他说:“模仿是最好的奉承”;他说,“我们很骄傲,因为我们看的更深入更长远”;他说,“模式是可以复制的,但团队是无法copy的”。他把更多的时间放在了对新产品的介绍上,因为“豌豆荚2.0是国内首家大规模使用WebKit技术开发的非浏览器软件”,因为豌豆荚团队已再次用自己的实力诠释了“创新”二字的含义。

[[58448]]

(豌豆实验室联合创始人 王俊煜)

  非浏览器的软件为何想到用浏览器的技术?又为何选择WebKit技术而不是Gecko、Trident这样的技术?全新构架的豌豆荚2.0相比之前的版本到底有哪些方面的提升?开发过程中是否遇到什么障碍?豌豆荚的两位技术工程师高雄和范怀宇(51CTO PhoneClub移动开发沙龙第三期演讲嘉宾)在接受51CTO采访时为我们一一解答了这些疑问,向我们揭示了豌豆荚2.0背后的技术秘密。

  用互联网的思路做豌豆荚2.0

  豌豆实验室高级软件工程师高雄表示,使用浏览器内核技术做非浏览器类软件,正是豌豆荚区别于其他PC软件的一个最重要的地方:“我们用这套架构,实际上就是更体现出我们超前的意识。我们现在看到Chrome,或者是其他的一些浏览器,它对新技术的支持会越来越重视,比如对HTML5的支持。如果是简简单单PC上面的软件,可能以后就和HTML5分道扬镳了。”

  “WebKit 的特点有两点,一个就是非常快。第二个就是它是开源的,你可以从这上面做很多功能和内容。因为它是一个全开放的东西,所以我们接入任何的内容都非常方便,这对于我们之后接入上百家东西创造了可能性,这点是同类的产品非常难跟进的”, 豌豆实验室软件工程师范怀宇表示。

  范怀宇说,1.0版本的豌豆荚采用的是.Net技术,这类技术无论是在开发难度、开发进度、软件的运行速度甚至技术本身的发展速度上,都要比Web开发技术稍逊一些,而且“Web技术人才更丰富”。

  之所以没有选择比如Gecko这样的其他浏览器内核技术,高雄表示,主要还是从技术难度、技术成熟度方面考虑的。“Gecko的代码如果不是对内核了解非常深入的人的话,看起来是非常非常困难的,它的可读性非常差。另外,在对CSS3,或者CSS2.1,HTML4,HTML4.01,HTML5这种标准的支持上,Gecko跟WebKit还是有一定的差距的。原来像比较老一点的版本,CSS2.1和HTML4,CSS2.1的得分都不是一百分,但是WebKit是一百分,所以从标准的支持上面来说,很显然是WebKit要比Gecko好得多。从整个内核的加载速度和解析的一些性能上面来说,WebKit也是强于Gecko的”,高雄说。

  WebKit技术提升豌豆荚反应速度

[[58449]]

(豌豆实验室软件工程师 范怀宇)

  记者在现场看到,诚如豌豆荚技术工程师所介绍,豌豆荚2.0的运行速度相比之前版本确实有显著提升。几乎是在手机连接到PC的瞬间,豌豆荚2.0就自动启动了,而之前的1.0版本总要“搜索”那么半天。

  “我们之前用的是.Net Framework,它天生的局限性导致我们加载一些东西的时候都会比较慢,而且我们1.0会因为一些架构上的问题,会有多个实例, 2.0改进架构之后,我们只有一个实例,这样就非常快了”,范怀宇介绍到。

  “速度提升方面主要表现在两个方面,一个是我们在网络传输的时候,我们会做一些压缩等等这些处理。另外一个,我们还是要做缓存”,高雄说,“其实我们的速度相比较Chrome来说,可能会比它稍微慢一点。我最近了解到Chrome有一个新的技术,叫SPDY,在网络层这一块,会有一个新的机制,会提升网络传输的速度,这个对Chrome的速度的影响是非常非常大的,提升的效率是非常高。接下来我们是想引进SPDY技术,来进一步提升我们的速度”。

#p#

  使用WebKit的技术细节及对HTML5的支持

[[58450]]

(豌豆实验室高级软件工程师 高雄)

  高雄是豌豆荚2.0版开发团队里主力攻克WebKit技术的高级工程师,他向我们透露了豌豆荚2.0使用WebKit技术的一些细节:“比如WebKit在Windows平台上面的porting并不是特别的完善。我们把WebKit的图形库换成了SKIA这样一个图形库,这使得我们2.0在渲染的速度上面和渲染的效果上面会更好。 第二点,我们把WebKit原生的网络库换成了IE的网络库,使得我们2.0我们可以复用IE缓存,加载速度会更快。第三点,我们WebKit做了很多JS的扩展,我们使用了一套WebKit和Windows native代码之间的一个通讯,这个架构叫Onering架构,这个是我们在国内首创的”。

  而在对HTML5的支持方面,高雄表示,豌豆荚所使用的WebKit技术与Chrome浏览器的开源项目Chromium是有比较大的区别的,Chrome对HTML5的支持做的非常全面,但是豌豆荚2.0没有没有基于Chromium来去做,而是简单基于WebKit做的。因此在对HTML5支持上没有Chrome那么全面,很多功能都是基于前端工程师的要求后加的。

  范怀宇举例说“比如说你看到现在豌豆荚2.0,你会发现收到短信它会弹出框,那个框就是HTML5的Notification机制做出来的,不是和传统的Windows弹框一样,它和Gmail弹是类似的,如果你放到浏览器里面,其实它也会弹那个框。还有比如说LocalStorage我们会用来存储很多比如说询问一下你是不是使用。”

  曾经遭遇的技术难点

  豌豆荚的两位工程师坦言,在Windows上做WebKit还是有很大难度的。高雄称, “WebKit它在对HTML5的支持是已经非常好了,但是他说的这个非常好,实际上是在Safari或Chrome上。我们很多PC软件,你真正去拿Chrome或者是Safari来用的话,几乎是不可能的,因为太大。所以只有是拿WebKit来用是比较适合的,但是WebKit在Windows上面的porting,这个HTML5支持程度是非常非常弱的,这个是非常大的难度,有很多HTML5的功能你需要自己去实现”。

  “另外,我们在用WebKit的时候,会对JS会做非常深入的扩展,这也是一个非常难的地方,你在扩展的时候,要遵循HTML5的一些标准去做扩展,扩展出来的GS的对象,你要怎么去管理它,不然的话,会出现很多内存泄露,或者垃圾回收等等一系列的问题,我们也是在探索之中”。

  范怀宇则表示,由于WebKit是一个很庞大的项目,豌豆荚2.0很多前端需要的功能需要定制,所以在开发过程中经常会遇到一些“陷阱”。比如,早期关于数据的序列化和反序列化问题上曾耗时良久,在做了许多尝试之后,才成功把速度提升了许多倍。又比如,作为一个非浏览器软件,如何让本地的前端的接口直接调到后端的功能,没有前车之鉴的情况下,只能自己一步步摸索。

  未来会把核心技术开源

  用一种全新的技术革新产品当然会遇到很多的困难,幸运的是,豌豆荚团队最终克服了开发中的种种障碍,在历时十个月的长久酝酿后,终于如期发布了全新架构的豌豆荚2.0。“十个月,差不多是豌豆荚全部历程中的一小半(豌豆荚推出不到2年时间)”,联合创始人王俊煜谈到这段时光似乎感慨颇多。令人振奋的是,在成功攻克了各种技术难关、顺利发布新品之后,豌豆荚团队宣布在不久的将来,将把其基于WebKit的2.0产品开源。

  范怀宇表示“我们把WebKit扩展之后,能够真正的把Web开发能够放到Windows上来,Web开发工程师,可以完全写纯Web代码,后面也可以运行。这整个实现部分,我们都会开源”。范怀宇进一步介绍道,核心代码会以打包的形式开源,其中包括对WebKit的扩展、改进,对HTML5的支持等等,以及定义好的接口协议、对Windows的接口调用等,都会实现好再开源。

责任编辑:佚名 来源: 51CTO原创
相关推荐

2012-07-24 10:05:26

豌豆荚百宝袋

2014-03-28 12:48:17

豌豆荚应用内搜索

2014-04-23 17:21:45

Cooliris豌豆荚

2014-03-28 09:59:39

豌豆荚应用内搜索

2012-02-23 00:22:55

2013-09-26 09:47:42

豌豆荚

2011-12-14 20:54:24

Android

2012-05-09 08:32:34

豌豆荚张涛ASO

2011-08-08 09:25:55

2013-10-31 14:31:09

2012-06-29 14:11:14

豌豆荚Android 4.1

2012-03-20 15:00:49

Android

2013-07-25 09:18:58

豌豆荚

2014-01-16 14:09:03

豌豆荚移动内容搜索

2015-08-03 17:28:02

2009-11-11 13:00:05

GNOME浏览器Webkit内核

2011-08-29 14:27:33

QTWebkit浏览器

2010-01-21 09:02:51

搜狗浏览器Webkit

2012-06-13 13:24:01

Between豌豆荚设计奖

2012-06-25 17:26:38

豌豆荚Flipboard
点赞
收藏

51CTO技术栈公众号