计算机程序员一直受跨平台问题的困扰,自从需要涉及第二个平台开始。自那之后,问题的数量便迅速增加。如今,开发人员至少需要同时针对四个操作系统(以及更多细分的系统)进行开发,运行这些操作系统的设备具有各种外观、尺寸大小、分辨率、持久度、输入方法、运营商网络、连接速度和状态、用户界面的规定、应用商店、部署及更新机制等。 全球许多开发人员一度曾将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,它就能在该设备上运行。您甚至无需进行编译;您只需要编写程序,它就会被分发和执行。 Lines of JavaScript Code: JavaScript代码的行数 Gmail 50x larger in 6 years: Gmail在6年内增长了50倍 图1:Adam de Boor,Google |