最新对linux上browser和widget有些想法。理想情况下浏览器能够同时支持widget,就如opera,但也不介意他们分别独立,即便是手持设备,内存和flash的局限能力在减弱,主要还是CPU的能力,即使是微软,对于浏览器在手持设备上都需要进行了众多的裁剪,lightweight是重要的选项,Intel传说中的moorestown和medfield可能可以解决CPU的问题,但是这一两年,CPU能力的限制仍然是关键。
我有点想研究widget,去玩browser可能有点玩大。其实browser就是desktop是个很吸引的课题。
Opera在很多手机上装有,基于J2ME使得它的cross platform,尤其能用于brew这类CDMA的手机,看官方网站,UI不错,但是Opera不是开源的,使用可矣,改造难矣,可以集成,难以开发,所以不考虑。
对于开源社区,无疑是mozilla和webkit,这也是google的chrome的选择。对于widget项目,可以使用webkit,mozilla作为web engine,当然也可以考虑直接搬用chrome。但是chrome相对巨大,而google过于强悍,如果在上面进行裁剪,对于以后chrome升级可能带来不兼容的问题,这个因素同样体现在对mozilla的选择上。对于长期项目不能不考虑(虽然真的没有经历过所谓的长期项目)。widget相对来讲,不那么一个庞然大物,有可能可以在webkit Engine上和mainstream保持一致,而外围进行修订。或许可以先研究一下webkit。
对于手持设备,browser和widget需要类似的组件,例如webCore或者web Engine,JS Engine之类的。作为运行在同一个平台上,如果采用两套解决方案,是很山寨的。
wiki是这样描述webkit的:
WebKit是Mac OS X v10.3及以上版本所包含的軟件框架(對v10.2.7及以上版本也可通過軟件更新獲取)。 同時,WebKit也是Mac OS X的Safari網頁瀏覽器的基礎。WebKit是一個開源項目,主要由KDE的KHTML修改而來並且包含了一些來自蘋果公司的一些組件。 傳統上,WebKit包含一個網頁引擎WebCore和一個腳本引擎JavaScriptCore,它們分別對應的是KDE的KHTML和KJS。不過,隨着JavaScript引擎的獨立性越來越強,現在WebKit和WebCore已經基本上混用不分(例如Google Chrome和Maxthon 3採用V8引擎,卻仍然宣稱自己是WebKit內核)。
我们关心的是webkit在linux上的时候,Google的Chrome是一款稳定版浏览器。webkit用于Symbian,iPhone OS,Windows(safari),但是wiki上说:在桌面Linux战线,尽管Midori孤身奋战多年,Google Chrome声称要推出Linux版颇有时日,GNOME的Epiphany、KDE的Konqueror,乃至Flock都宣言要转向WebKit内核,但迄2009年3月为止,还没有稳定版的完整WebKit浏览器见于桌面Linux。
webkit的lightweight适合于手持设备,对于桌面,哪怕是WM的IE,实际也是裁剪过,少了很多功能,即便我们无限寄望于手持设备的能力的提供,但是目前是有性能瓶颈。
在webkit的官方网站 ,source code只提供了Mac OS X和Windows两个版本。对于linux版本,可在http://www.webkitgtk.org/ 下载,或者直接git clone git://git.webkit.org/WebKit.git,这是基于GTK+的版本。
webkit的backend似乎是QT或者GTK,是否clutter可能存在问题。Openhand曾经做过这个工作,但是自从去年12月就forzen了。我们也可以在网上看到一些webkit-clutter的东西,都是基于Openhand的工作。不清楚Openhand的Intel的关系,但是Openhand在clutter出了正式版本之后,并没有进行跟随。网上给出一些例子,效果大致是可以将网页作为一个2D图片的基础,使用clutter的动态效果,例如旋转啊什么的,但是如果真正在浏览网页,这些效果只可用于商业推广中的吸引眼球,实际并么有任何作用,网页是用来看里面的内容的,不是用来看浏览器的,就像电视机一样,我们看的是电视节目不是电视机本身,而这种效果影响了观看内容,而clutter stage不透明是硬伤。clutter基于webkit,一个好的用途不在于browser,而是引入widget。透明的问题,可以通过widget pannel来解决。曾经有OpenGL高手提供desktop的透明,可惜不能向clutter mainstream进行贡献。Openhand提供了如何将clutter作为backend的方式,即使不在继续,也是可以利用的宝贵资源。git clone git://git.o-hand.com/webkit。嘿嘿,正在慢慢地download。
对于widget的JS部分是否可以用Google的V8?嘿嘿,真正的山寨大一统。
附:我对山寨一词怀有崇高的敬意,并无贬低之意。
相关链接:
我的无限网络文章
我的Clutter相关博客