Intel朱永盛谈Webkit和HTML5的现状和趋势

个人简介 朱永盛2006年毕业后一直就职于英特尔亚太研发有限公司(上海)。2010年之前,主要XML和XSLT编译器的工作。从2010年开始,我开始从事于WebKit和Chromium的开发工作,包括公司的浏览器项目以及WebKit和Chromium开源社区的贡献等等,去年成为Chromium项目的committer。为了分享个人这两个大型项目的经历,去年,开始利用业余时间撰写WebKit和Chromium相关的技术文章并发表在CSND博客上(http://blog.csdn.net/milado_nju)。这期间,收到很多爱好者的邮件和讨论,关于HTML5,WebKit和Chromium。

QCon是由InfoQ主办的全球顶级技术盛会,每年在伦敦、北京、东京、纽约、圣保罗、杭州、旧金山召开。自2007年3月份首次举办以来,已经有包括传统制造、金融、电信、互联网、航空航天等领域的近万名架构师、项目经理、团队领导者和高级开发人员参加过QCon大会。

   

1. 我是豆瓣音乐的工程师苏丹:,麻烦您自我介绍一下。

朱永盛:大家好,我是朱永盛,我来自于英特尔亚太研发有限公司,我目前在公司里面主要是关注Html5和WebKit方面的一些技术,参与社区的一些开发和各个方面的一些活动。

   

2. 刚才朱老师讲了一下关于WebKit的一些事情,我正好涉及到做这方面的一些东西,就希望跟你探讨一下这方面的问题。因为我之前,我自己做豆瓣音乐人的应用,当时我们技术选型上,就是希望就是尽快的去完成这个事情,就跨平台去做,然后我就说选用WebKit的这种方式去做,它其实是一个混合的架构,然后用了PhoneGap这个框架去做。当时我的感觉就是做起来非常快,也很爽,就是做一个所有的的平台上就可以跑了。但是会遇到一些问题,比如在Android上会有一些性能的问题,我开始用了很多css 3效果,后来几乎把这些效果全部都去掉了。 比如像透明、半透明,这个我后来就全去掉了,你对做这些优化有什么建议吗?

朱永盛:对,首先这个问题提的很好,我觉得这个问题基本上涵盖了现在想使用Html5,或者想使用Web来做开发你的Application的共同的问题。就首先PhoneGap这个东西现在比较流行。我先说它好的一方面,它流行的地方就说,我刚刚说了,它跨平台很好,像现在iOS、Android,像Symbian,包括像BlackBerry上面都有这方面支持,然后本身HTML5做得也是跨平台,然而PhoneGap正迎合了这些Web开发者的这些需求,所以就说,那双方正好接起来。所以这个方面PhoneGap现在影响比较大;另外一方面,PhoneGap 他本身的核心功能在于他提供了那些打包和分发的机制。你可以通过他的方式,可以帮你分发,可以帮你打包 。因为我们知道,如果让你的HTML5程序,或者你的Web程序也运行起来,你下面要有个支撑平台,那么这个平台可能就说基于WebKit,或者基于其他的渲染引擎的平台。那么PhoneGap本身,他不提供这样的平台。他利用的是每个OS上面已经带的这个平台。举个例子来说,在Android上面他就是用Android的渲染的平台, 通常叫做WebView。那么在iOS上面,可能就要是另外一个,就苹果提供的叫英文这样一个平台,所以它本身就是Runtime没有提。所以这就是为什么你刚刚说在某些平台上性能好,某些平台上性能不好。就是因为在于它对后端支撑的平台它是不一样的,就我说的Web渲染的这个平台是不一样的,所以会导致这些问题。还有另外一个问题,你刚才说的Android上面性能不好的问题,这个问题我刚刚可能也部分的解释,就是因为他用了渲染引擎。我们知道Android上面是有一个叫做Android Browser,他其实上跟那个是Share同样的一个技术的架构。这个架构里面有很多缺陷,这就是为什么Google最近需要把Chrome这个浏览器推到Android上,因为Android的平台里面有很多硬件加速的东西没有做。在我们刚刚的session当中我也介绍了,硬件加速其实分为很多块,它实际上就是说Android的英文只做了其中的一方面 。但是Chrome现在说这个平台它已经投入到Android的阵营来,所以说他现在的硬件加速是做得非常多的;另一个方面,我刚刚说的PhoneGap所依赖的那个 Web渲染的平台, 那现在可能未来的方向就是把他们切换到基于Chrome的渲染机制上,我相信,当这个切换完成。因为我们最近也在参与这方面的一些事情,所以我相信这个东西切换到基于Chrome这套渲染效果上来说,我相信里面的渲染的效果会得到进一步提升。本身我是非常看好这个方向,因为PhoneGap这种用户成型,我觉得是可以说是使用HTML5开发应用程序起了非常好的头,开了非常好的头,所以未来风向,我觉得PhoneGap这种框架会非常的发扬光大,应该会有更多的厂商会参与进来,做这样的事情。因为从各个方面的需求来看,大家也都很关心这些方面的一些事情,所以我很看好它。

   

3. 谢谢,我也希望以后能用Chrome的内核,就没有这些问题了。其实现在造成问题的也是Android比较早期的版本。想跟你谈谈另外一个问题,刚才说的是移动平台上的跨平台,就是桌面上我觉得WebKit也有这方面的能力,可以拿来使用。我们之前有做豆瓣FM的桌面客户端,我们也是希望说能够快速的开发,然后移植到多个平台上使用,所以我们当时同事冯强宁开发了一个叫做OneRing的一个框架,就是他其实是一个框架可以把WebKit包了一个类似浏览器的东西在里面。我们就可以用Python来写了一个Server,前面就用Html5、JS写了一个应用。我们也遇到一些问题,就是比如说包就会特别大,QtWebKit 那个是比较大的。如果不用它的话,我们又会面临很多跨平台的问题,就要求我们自己再去做。而且WebKit自己还有些Bug,很多Feature用不到,他没有支持所以不能用,对这个方向的开发你有什么建议?

朱永盛:是这样的,这块现在刚说,你想说,我们因为PhoneGap 有点感觉是在这个之上,PhoneGap之下我们需要一个统一的Web平台可以支撑PhoneGap,我们想统一后面的一个Web平台。其实这个东西现在我觉得应该是一个很热门的方向,包括其实我个人觉得,像Google、英特尔,我知道很多公司都想参与进来,共同推进这个事情的发展。这个东西现在一个问题,的确像你说的,比如像Webkit,他可能有自己的一些问题。那我觉得这个问题很好, 为什么呢?因为这也是我们未来努力的一个方向,像作为我来说,我参与这个HTML5的Web开发,也有蛮长一段时间了。我个人感觉像性能,包括一些Native的开发所使用的一些能力,现在HTML5里面还没有办法能够提供这些功能。所以你现在你的下面所使用的Web平台,比如类似于像QT WebKit,就要提供这样的能力。但是各种各样的有些这个平台提供的Performance,或者性能方面的一些问题是有缺陷的。缺陷在于渲染的这些架构,包括它的一些使用图形方面这些或者说还有很多工作需要去完善。所以我们其实也在积极的参与,想说提供一套这样的一个Solution。比如说我们想说,用WebKit打造一个这样的平台,这样的平台可能比如说,可以把目前最新的这些比如说硬件加速的机制、多核的一些能力都给使用起来,然后共同打造一个可以支撑HTML5应用程序的这么一个平台。然后跨平台,能做到这样的话,我相信以后应该是这个方向努力的重点。因为目前我个人觉得,像我们其实参与Chrome的,他也想做一个WebView的这样东西。那这样的东西其实就使用这样的东西,这样的一个东西在Android上我们也想提供,在Windows上我们也想提供,在Mac上,在Linux上,可能其他平台上我们都想提供这样的东西,我想这样的东西可能就是符合你们这样的需求。但是的确说的很对,现在这就是一个问题,现在因为没有一个很好的Solution可以解决这个问题,我觉得这是一个机会。我希望更多的公司可以参与进来,比如说像我们这边做得这块,我们也想参与进来。

   

4. 有可能官方提供一个这样的解决方案了就好。

朱永盛:对,我想可能这个希望Intel自己攻破还是什么,因为我不方便说一些后面的事情。但是,我们作为开发人员,和我们的组的一些同事,我们在积极往这方面努力,争取做一个这方面的平台。因为刚刚会后跟有些人聊,也有这方面的需求。他跟你的这个需求非常的接近,所以我觉得这个方面是一个很有潜力的地方。然后我觉得有问题的地方,就是有潜力的地方, 就是大家可以去投入其中,在这个领域当中做出自己的贡献来。

   

5. 现在就是传统的桌面Native开发的方式,可能在我们WEB开发人员眼里看起来就会比较复杂困难,然后各个平台又不一样,学习门槛又比较高,我们是希望做到能够用Web的这些工具、方法,做出贡献真是特别好,同时也可以提供跨平台。

朱永盛:我觉得你这点说的很好,现在就说HTML5这个里面,还有你刚刚说的那些工具这些东西,就说有很多工具也在做。但是可能未必没有像以前那些开发工具做的那么成熟。所以现在就说,可能像以前那些比如做Flash的人,他们现在做比如Adobe做一些这方面的Tools,还有很多其他的公司 。实际上这些Tools我觉得是很有必要,一方面帮助你降低HTML5开发的难度,方便你开发;另一方面我觉得这样的Tools帮助你去提高你的应用程序的性能,所以呢我今天我也重点强调,我觉得了解一下Web,你不需要很深入的了解渲染背后的道理。但是你有个大概的了解,可以帮助你写出更高效的程序来。比如说我们刚刚提到的Canvas应用场景,你可以通过不同Layout,来达到比较小的这种渲染级的开销,这样可以达到更高性的能,等等这样的东西。我觉得这些东西以后在比如工具里面都可以做这样的事情。其实现在我们也有一个工具,比如我最近用的一个工具,叫Cache Building这样的工具,他就可以帮助你,就是说你一个Application,你的瓶颈在什么地方,你哪个地方花得时间多了,你只要Run一遍你的应用程序,他就可以把你的瓶颈,把瓶颈给你列出来,你可以在这方面做改进,教你怎么改进。我觉得这些东西都是很好的东西,这些东西我觉得这些工具,这些帮助你优化性能的这些方面,再加上支撑的平台,合起来做成一个完整的生态系统,把这个生态系统做好,就说达到成熟之后,我估计这个基于HTML5的应用开发,我估计还有一个更大的井喷。因为我觉得现在Android的那个或者那些App Store,或者Android的 Google Play Store里面,已经有都很多这样的HTML5的程序,所以我估计未来应该还有更多的。因为有很多程序其实还是挺适合用,因为HTML5的跨平台。因为他写UI上面一些方便性,也就是它的易用性方面,我觉得还是有很大的优势的。这个方便以后,当我们把这些刚刚理出的这些性能、把这些工具整合,把这些性能瓶颈给逐步逐步的解决,因为这个东西肯定不是一蹴而就的。 把这些东西解决了之后,我觉得这个还是一个非常好的方向,值得大家去探索。

   

6. 你刚才说到生态系统的问题,我就觉得,这里你说到比如HTML5发展到比较成熟的话,他有可能会就是替代Flash现在的地位,你觉得它会替代Flash吗?或者说它的前景?

朱永盛:我觉得这个问题,应该前段时间应该都是大家都在讨论的比较多。其实说Flash本身这个东西也挺好用的,它的工具也很完善,很完善。但是Flash我们刚刚说了,Flash也有它的蛮多缺陷,包括Adobe自己已经也放弃了这个东西。这些缺陷也很明显,像我自己本身在开过程中,就发现像Flash,因为它是单独的一个模块运行的东西,它没有跟我们渲染引擎整合的很紧密,这样导致我们很多优化,有很多这些机会我们没有办法去实现,没有办法去做。本身Flash这些东西它运行的非常消耗内存, 可能你执行一个简单的东西,大概消耗的内存,可能比如说就是几百兆,上百兆以上的,这个对我们的Mobile应用来说不是很友好。所以我们就需要HTML5。HTML5的优势就在于它可以和渲染引擎结合的很紧,他就是渲染引擎自身就支持的。所以你像现在的3D的各种技术,HTML5引擎自己就支持的,他不需要单独的划出一个模块出来,单独的一个东西去执行它。那么他们之间的交互,首先他在交互上面也会更加的方便,所以就说HTML5肯定是未来的方向。因为包括微软也把它的silverlight给停止掉,未来就不再支持,Flash也停止掉了。同时当中我们也看到这些主流的市场上的公司,都在停止掉自己这些独立的,都再支持一个更开放的HTML5平台。我觉得这个平台肯定需要很多,大家这些公司这些厂商共同的合力的去助推这个平台,他可能更有希望。你现在搞封闭的、搞自己的一套东西,可能大家都不是很买账,更开放的东西那可能是未来的方向。当然HTML5现在的,刚刚我们也提到了,它的一些劣势,跟Flash也存在一些劣势,短期一段时间内肯定是存在的。但是我觉得现在是说,很多像我们现在的这些互联网公司都是各种各样的公司,包括像我们英特尔都希望说,把这个东西助推HTML5的发展,当然这个仅代表我个人的理解,我不代表公司。但是我个人觉得,我们起码做HTML5的部门很想助推这个HTML5去发展。因为这方面确实机会很多,问题很多,但是就代表着机会更多。这个方向也是比较明显的,很多大家都在推进这个。

   

7. 这个事情也都只有靠你们主流公司来推进。如果你们不推,然后就是大家各搞各的HTML5,实现的方式也不一样,支持的东西也不一样,这对我们开发人员来说其实也很痛苦。

朱永盛:其实上这个借鉴很重要,因为我们刚刚说了,HTML5他推出来一个特性就是说要跨平台,如果说各公司每个标准、规范都不一样,那这个跨平台就没有意义。所以就说这点其实很重要,所以我觉得这个东西肯定是需要一个标准化组织来推进,我们现在比如像W3C,大家都在里面协商,可能里面有很多很多的讨论再推进这个事情,但是这肯定是一个比较艰巨的过程。本身这个东西,就大家需要达成一个比较就是统一的意见,那肯定需要各方面的协调,肯定是一个慢慢的讨论过程,这个过程可能是比较慢长。现在你看到HTML5的规范已经有相当大一部分已经是有一个定稿,还有一部分在进行当中。这个没关系,就说我觉得未来的话,一定就是说,标准化上面一定做到各个厂商都支持这个统一的标准。你标准你的标准下面,你是怎么做得,那我们没关系,你可以自己的实现自己的做法。但是我们要达到,标准你最好就是一定要达到制式标准。那这样,我觉得对业界、对HTML5的开发者来说,那绝对是一个很大的,我想这样有这个在支撑,那可以省去很多的一些额外的一些工作。

   

8. 就像我做的音乐人的,因为我们要播放MP3,有的浏览器就是他支持Audio标签,但是它不支持MP3,对我们来说完全没有用。

朱永盛:这个方面也是一个,这是一个编码的问题,英文实际上也是HTML5里边一个争论比较大的问题。像现在 编码主要的问题是音频和视频,音频方面现在出的比较多的,一个是H.264,另外一个是WebM的方式。 还有类似这样的东西 争论比较大, 未来的方向我现在不好说。所以这个可能够依赖于专利授权,因为涉及到很多License问题,所以可能就争论的时候会比较长一点,以后是怎么样发展,其实我 目前看来还是比较困难。但是就说一个比较好的做法,肯定就说希望内核最好就是支持这些主流的编码,加进去支持,这个比较好的。因为我们实际上现在用主流,也就那么两三种。所以说肯定要把这些主流加入进去这个问题比较好解决。但是从统一上来说,我最近就是关注这块不是特别多,所以我不是很知道一个什么具体的时间表,还是比较困难的。当然我在这,我是没有一个比较统一的软件,这样大家比较方便。但这里面涉及到视频和音频方面的确是比较,特别是。

   

9. 这个我可以理解。像HTML5、CSS3这块解决方案的话,我感觉在工具和一些中间层或者FrameWork方面会比较欠缺一些,比如像3D方面WebGL就欠缺一些3D的FrameWork,没有真正能够做一个使用的东西出来的这种感觉。像Flash他会有一些中间层、像 Unity3D这类的,其他的对它的支持如果能更好一些的话,就会有更多的开发人员加入到里面来做。

朱永盛:如果你去搜索Github上面那些开源项目,你会发现有蛮多是做这方面事情,为什么有蛮多做这方面事情呢?肯定这个方面还有很多东西可以做。实际上说你刚提到一些东西,我了解 比如像three.js这样的,那么他就是帮你做3D,然后他做3D有个很好玩儿的地方,他可以用不同的方式来模拟3D, 就可以通过一些参数设计来做,对于那些API,因为我们知道这样的API,他是很多Level,就说你可能去画,你想生成一个圆形的东西。那么你生成这个圆形的东西,你可能要调用很多API才能生成,所以JS帮你解决这样的问题,它可以用API帮你生成一个石头的东西,甚至各个东西。 比如说我实现一个场景,就这块区域的场景,JS可以比较方便的,可以通过几十行代码就可以帮你做到这样的事情,所以这个也是一个方面比较大的进步。还有一些比如说像帮助你做游戏,像有些物理引擎,因为有些物理引擎,这方面也有一些JS。但是我个人感觉,这些方面FrameWork,像你说的,感觉第一个是不够系统,还要系统;第二个还需要跟我们的这些Tools这些东西进行整合,所以就说我再做这个里面,我可以就很方便调用它,我可以很方便依赖它,就可以做到这件事情。这个方面我觉得可能做这个Tools的方面,我觉得这是一个蛮好的一块事情。

   

10. 而且现在有了这这些库,对开发者友好,但是对设计师并不友好。

朱永盛:对。

苏丹:有一个IDE,真可以把它整合进去。

朱永盛:对,这个方面我是蛮有体会的,因为我这次的一个演讲,我就是用一个HTML5来写了一个Slide,这个Slide当时就是不是通过UI, 比如说我传统的 拖拽,就是我用HTML5手写的。然后我在网上也在看到了有个工具,它可以帮你拖。但是我实际拖拽效果发现达不到我的要求,因为我想在这边做个布局,在这边放一些东西,它的那个调整位置就不是很方便。那觉得这种拖拽的UI是一个比较大的挑战。所以我觉得这方面的工具也要加强。但是这个好的消息又说,本身拖拽这些能力,其实HTML5已经提供给你了。但是你没有一个工具把这些拖拽综合起来,让人可以比较方便的,就是让那个比如UI Design做这样的事情,所以说这个东西没错。但是本身HTML5的这个能力已经提供给你了。

   

11. 可以做到的。

朱永盛:对,可以做到。

苏丹:但是没有做。

朱永盛:对,只是没人做这个事情,我相信就是有越来越的人有需求,大家就需要这个东西,有需求,应该有很多人。

   

12. 这个需求肯定很大的。

朱永盛:对,很多人就愿意,我觉得应该有人去探索,去做这个事情,所以我觉得这个体验,我感悟得还是比较深刻的。

苏丹:行,那就差不多聊到这里。

你可能感兴趣的:(Intel朱永盛谈Webkit和HTML5的现状和趋势)