HTML5下一步如何发展?

摘要:为了更好地了解HTML5的成功原因、现状以及未来发展方向,《Intel Software Adrenaline》杂志采访了英特尔软件与服务事业部软件开发产品部的资深首席工程师Moh Haghighat。

计算机程序员一直受跨平台问题的困扰,自从需要涉及第二个平台开始。自那之后,问题的数量便迅速增加。如今,开发人员至少需要同时针对四个操作系统(以及更多细分的系统)进行开发,运行这些操作系统的设备具有各种外观、尺寸大小、分辨率、持久度、输入方法、运营商网络、连接速度和状态、用户界面的规定、应用商店、部署及更新机制等。 全球许多开发人员一度曾将Java视为跨平台开发的首选。确实,Sun(现在为Oracle)的这种结构化语言持续在解决许多跨平台问题,但它也会引入不少障碍,而其中最重要的一个障碍之一便是,类结构甚至会给最微小的程序功能造成沉重负担。在开发人员转为使用浏览器来进行应用交付时,Java带来的负担变得更加沉重;Java小应用程序对浏览器而言是不透明的黑箱,因为该语言对开发人员是封闭的(尽管我们非常尊重JCP)。

在Java使浏览器大战愈演愈烈的同时,一种名称相似的解析语言横空出世。这种语言开始名叫Mocha,后来改为LiveScript,最后定名为JavaScript。实践证明,它在一些方面比Java更加实用,因为它能够与浏览器进行交互,并能够使用HTML的级联样式表单(CSS)来控制内容显示。JavaScript支持很快便成为每个浏览器的标准功能。现在它就成为了HTML5编程语言,该语言被万维网联盟视为下一种标记语言的标准。

为了更好地了解HTML5的成功原因、现状以及未来发展方向,《Intel Software Adrenaline》杂志采访了英特尔软件与服务事业部软件开发产品部的资深首席工程师Moh Haghighat。Moh是英特尔针对Firefox浏览器开发的首个JavaScript即时编译器(JIT)的技术领导。他还领导了首个并行JavaScript JIT和并行浏览器布局引擎原型的开发工作,这二者都是在Firefox环境下进行开发。他目前负责领导英特尔的HTML5技术战略工作。

Intel Software Adrenaline:对于跨平台开发,HTML5为何优于Java?

Moh Haghighat:启动Java小应用程序会让我想起声名狼藉的“加载Java”状态栏。它在启动时会看到大量进度条,而不像如今的Web浏览器那样具有快速响应性,这起码会让人感到厌烦。这是该语言的根本问题,而[Adobe] Flash在某种程度上解决了这个问题。哪怕是运行一小段Java代码,也需要将整个JVM载入浏览器,而且在开始执行这些代码前还可能要执行一大串类初始化程序。对于服务器端的代码,您在服务器上针对大量客户端重复运行相同的代码,这种情形还可以接受。但在客户端,您希望运行的代码来自许多不同应用,看到如此大量的进度条会让人无法承受。运行Java的最佳位置被证明是服务器端的中间件,Java应用服务器先驱WebLogic便是一款优异的中间件。对于客户端开发来说,这也是HTML5优于Java的技术原因之一。虽说如此,在建立可管理编程语言的可行性,以及为更高效的高级语言(如JavaScript、PHP、Python和Ruby)奠定基础方面,Java发挥了重要作用。

Java还有一些确实非常出色的特性,可支持高效的代码生成,而几乎无需昂贵的编译器分析,如针对寄存的基于类型和基于偏移量的歧义消除。

另一个问题在于Sun对Java项目的运作。Java一开始并不是开放技术,同时Web技术也发生了演变。我认为Java没有成功的主要原因是Sun忽略了Web浏览器;在JavaScript变得日益强大的过程中,我们没有看到Java在浏览器方面有多少创新。JavaScript异步使用模型(AJAX)让浏览器成为出色的交互平台,这使得许多基于Web的应用大受欢迎,如Google Docs。同时,这些应用的复杂性不断增加。例如,Gmail的JavaScript代码从2004年的近万行增加到2010年的近50万行,仅在六年间就增长了50倍(参见图1)。随着Web在全球的迅猛增长,已有数百万网页使用JavaScript,因此就已安装的代码库而言,JavaScript目前是影响力最大的语言。在与浏览器集成方面,Java根本无法与JavaScript相提并论,因为JavaScript是浏览器的“原生”语言。另外,采用CSS和JavaScript的浏览器对UI和逻辑实现了完全分离,而Java平台则没有。

HTML5提供了更具吸引力的备选方案。您编写的应用可在任何类型的计算设备上运行,无论是电话、平板电脑、笔记本电脑、台式计算机还是电视。如果设备支持HTML5,它就能在该设备上运行。您甚至无需进行编译;您只需要编写程序,它就会被分发和执行。

ISA:JavaScript和HTML已存在多年。最近有什么变化使HTML5对跨平台开发如此有效?

MH:首先,在过去五年里,JavaScript的速度大幅提升,快了100倍(参见图2),这在很大程度上得益于JavaScript JIT的出现。由于Web应用复杂性和成熟度的显著增加,JavaScript JIT成为一项不可或缺的技术。在JavaScript性能方面,2011年的最新Internet Explorer版本比2001年的Internet Explorer快了100倍以上。其次,通过HTML5还突然引入了非常多的新功能。这可能是自浏览器推出以来,HTML实现创新最多的一次。现在,HTML的渲染方式已经与过去完全不同。在HTML5开始得到广泛采用之后,其性能有了显著提升,新功能也不断增多。

在技术采用方面,我观察到了另一个值得关注的趋势,IT部门日益发现HTML5极具吸引力,这是因为人们会在工作中使用各种不同设备。在如今的业务环境下,所涉及的智能手机、平板电脑和便捷式电脑达数百种之多。HTML5是唯一的可以让IT的应用跑在所有的设备上的方案。另外,公司也无力针对每种设备类型开发相关应用并提供支持。现在,基于HTML5的响应式设计模式不断出现,这种设计模式能够使内容适应设备的显示屏尺寸。这些全都是HTML的重要组成部分,因为利用CSS和JavaScript您能动态地适应不同的设备。

ISA:由于没有静态类型化功能,JavaScript一直因其仅局限于小型应用程序而饱受批评。这种批评有道理吗?

MH:JavaScript将来会提供类、模块及类型化功能。负责下一个JavaScript版本相关工作的ECMAScript委员会正在研究类的问题,类有利于维护工作。Java有类,C++也有类。JavaScript采用基于原型的继承模式,这将允许您实现类,但它不强制要求以某种特定方式实现类。Java有自己针对类的对象模式;目前JavaScript语言没有采用特定的类模式。它使让用户能够实现自己的类版本。

出于软件工程的原因,在有大量开发人员参与项目的情况下,人们可能需要特定的类模式。对于大型项目,您可能需要做一些限制,例如需要定义特定的编码原则等等。如果每个人都以自己的方式来使用JavaScript的话,其灵活性有可能会产生负面作用。

让我们类比一下老早以前,FORTRAN等编程语言都使用GOTO语句。但在20世纪70年代,Edsgar Dijkstra和其他人士发现以非结构化方式使用GOTO语句有害无利。因此,程序员被要求使用结构化的编程原则,而不要随意使用GOTO语句,从而使编程语言和应用更易于理解和维护。而在JavaScript变为低级语言,并在其基础上能够实现大量高级语言时,同样的事情也正在发生。JavaScript已变为所谓的“Web的汇编语言”。

ISA:您能给我们举一个这种情形的例子吗?

MH:最近,利用限制和结构方面最令人振奋的例子,是Mozilla正在开发的一个名为“asm.js”的项目,以及另一个有关联的名为“Emscripten”的项目,这基本上是一个将LLVM位码转换为JavaScript和HTML5 API的编译器。(LLVM是Apple公司赞助的一个项目,旨在为C/C++及其他语言开发低级虚拟机编译器基础架构和语言前端)。Emscripten实质上是将C++转换为JavaScript。

Asm.js是Emscripten的一个可选目标,可以提供近乎原生的性能,与经优化的原生代码相比,开销通常降低2倍,而目前的全JavaScript则约为5倍。虽然JavaScript使用动态类型,但asm.js的要求(如类型推断和注释)仍然完全基于JavaScript规范。使用asm.js,用户能够编写被证明是静态类型的代码。因此,在装载时,用户能够验证代码实际上是静态类型。提前编译器能够生成极其高效的代码而无需进行额外检查,这与动态类型语言不一样;这有助于同时提高灵活性和代码效率。

如我们所说,这些语言都在不断发展演变,将能够把大段计算密集型代码(如性能库和游戏引擎)转换为JavaScript,并使其可应用于全球每一个设备成为可能。JavaScript正在成为高级语言的目标语言。

ISA:目前有哪些与JavaScript相关的语言项目?

MH:现在有一种叫CoffeeScript的语言,Microsoft也在开发TypeScript语言,它是JavaScript的超集。Google的Dart是一种采用类概念的新语言,也编译为JavaScript。我不认为有人能让整个Web都更换Web浏览器的主语言。然而我相信,各种语言的优异特性汇集到一起,将会对JavaScript规范产生影响,而这些特性也将会添加到规范中。这基本上实现了演变、向后兼容性以及增量改变。

ISA:英特尔直接推动了HTML5和JavaScript的发展。您能否给我们介绍一下这方面的相关工作?

MH:英特尔在并行技术领域一直居于领先地位,并行性使HTML5能够满足多核的要求。您需要利用并行性提高响应速度和电源利用率。我们对Firefox布局引擎的CSS规则匹配实现了并行化,使其具有可扩展性。从编程语言的角度看,HTML5有一个称作“Web Workers”的并行性API。它非常适用于粗粒度的后台线程,但如果您希望执行大量小型并行[任务],Web Workers则无法胜任。英特尔一直与Mozilla在并行阵列方面开展合作;我们在英特尔实验室的同事首先建立了它的原型。目前我们正在努力解决实施中的所有问题,以使其进入到ECMAScript,即JavaScript的官方语言规范中。

另外,我们还与Mozilla和Google进行合作,以确保现在已有(如Sandy Bridge和Ivy Bridge等等)的SIMD矢量功能可以真正采用JavaScript进行编程。也就是说,如果您的JavaScript代码对数据进行并行的操作,那么该代码会真正实现矢量化,同时开发人员使用这些功能时能够保证代码的执行。这些功能终将进入标准之中。

结束语

面对操作系统和设备不断增多的趋势,全球许多开发人员都在寻找经济高效的方法来创建他们的应用。开发人员一度将Java视为跨平台开发解决方案。与较老的语言相比,Java有许多优势,但Java没有跟上移动平台的快速创新步伐。开发人员现在转为使用HTML5及其核心技术,即JavaScript和CSS,来实现所需的最新功能和跨平台可操作性,以便在当今的应用市场上取得成功。

据Haghighat说,英特尔工程师继续在英特尔平台上对HTML5引擎进行优化,并为HTML5增加新功能。英特尔将HTML5视为迈向透明计算时代的重要步骤。为进一步加快HTML5的广泛采用,英特尔现在还提供了英特尔XDK,这是一个完整的开发套件,可帮助开发人员在Android、Firefox OS和iOS等各种平台上,构建、测试、调试、打包及部署其HTML5应用。

原文链接:http://www.ithome.com/html/it/57815.htm

本站文章均由 HTML5梦工场 编辑从其他媒体精选HTML5相关文章转载,仅供网友学习和交流,如果我们的工作有侵犯到您的权益,请及时联系小编QQ:123464386,我们会在第一时间进行处理!