Sun 的承诺:可靠的、可移植的、功能强大的 Java Plug-In

  • Craig Wickesser
  • 曹云飞

2007 年 11 月 23 日

话题:Java语言 & 开发

Java Plug-In 已经有几年的历史了,其目标是在浏览器中运行 Java 程序。不幸的是,它给用户和开发者带来了很多头疼的事情和挫败感。许多消费者都经历过浏览器不兼容的问题,浏览器冻结甚至 JVM 崩溃。然而,几周以前有报道说 Sun 正在彻底重写 Java plug-in,为开发者和消费者带来期待已久的产品。

InfoQ 最近访谈了 Java SE 的项目经理 Nicolas Lorain,讨论了 Java SE 6 Update N 规划中的重写 Java plug-in 的事项。

当前的 Java Plug-In 的主要问题是什么,以至于需要彻底重写?

可靠性,可移植性和功能。当前的 Java Plug-in 版本是在几年之中“一块一块”的开发的,支持操作系统和浏览器家族的不同组合。现存代码基础的复杂性导致了在不同浏览器家族中不一致的行为。尤其在支持跨浏览器的脚本编程(Java/JavaScript 交互)的方面问题更加严重,这使得开发人员很难编写跨浏览器的与 web 页面交互的 applet。这不单单是对 Java 脚本的支持问题,Sun 对跨平台的交互是非常重视的。在以前的 Java Plug-in 架构中不支持 Java Web Start 应用的某些特征,例如选择 JRE 版本,确定 JVM 命令行参数。只有彻底重写才能让 applet 象 Java Web Start 应用一样强大。

Sun 将为 Solaris,Linux,Windows 这三个 Sun 支持的操作系统提供新的 plug-in。Apple 将与 Sun 紧密合作,为 Mac 操作系统提供 plug-in。在上述操作系统上 Sun 已经测试了新的 plug-in 在 Internet Explorer 6,Internet Explorer 7 和 Firefox 3 Alpha 上的运行情况。InfoQ 询问了新 plug-in 没有支持广泛采用的 Firefox 2 的原因,

为什么没有规划 plug-in 先在被广泛采用的 Firefox 2 上运行?

新 Plug-in 的一个主要变化是我们如何与 Firefox 浏览器接口。由于历史原因,目前的 Plug-in 使用一个复杂的,Java 特有的接口,叫做 OJI。在新的 Plug-in 中我们转而采用了工业标准的 NPAPI 和 NPRuntime 接口,这两者更广泛的被其他浏览器的 Plug-in 使用。我们发现需要为 NPAPI 和 NPRuntime 增加少量 API 来支持可移植的多线程的 Plug-in,支持特定的高级 JavaScript 互操作。这些增加的 API 不是 Java 特有的,而是任何合适的复杂的 Plug-in 都需要它们。Firefox 2 的代码有一些假设是基于 Java Plug-in 是实现了 OJI 接口的,所以需要做一些改变来支持基于 NPRuntime 接口的 Java Plug-in。另外,我们期待 Firefox 3 在 Java SE 6 Update N 发布的几个月之内可用,这意味着绝大多数 Java 和 Firefox 用户将会在一个短的期间内分别升级到 Java 6 Update N 和 Firefox 3。由于这些原因,我们决定开始集中精力让新的 Java Plug-in 支持 Firefox 3,在第二阶段再支持 Firefox 2。
Nicolas 提到了其他的浏览器,例如 Safari 和 Opera,支持它们是相当容易的,

我们这一次没有明确的宣布支持 Safari 和 Opera,但是事实上新的 Plug-in 是很容易移植到它们上面的,尽管由于支持 Mac 操作系统并支持 Safari 的 JRE 的问题,我们不能代表 Apple 做任何承诺,但是我们认为移植不是问题。

新的 plug-in 会与 Java SE 6 Update N (也叫 6uN) 一起发布,然而,新的 plug-in 会被缺省的关掉。因此,最终用户需要配置 plug-in(在 Windows 控制面板或者在 Unix 平台改变一个 symlink)来使用最新的,最酷的 plug-in。

最后,InfoQ 与 Nicolas Lorain 总结了消费者想要采用新的 plug-in 的原因, 

  1. 绝对可靠
  2. 更好的用户体验:在 applet 启动或者关闭的时候不会造成浏览器停顿
  3. 鲁棒的支持包括 3D 图形和其他特征的高级 applet 内容

欲得到更多信息请访问下列链接:

查看英文原文Sun's Promise: Reliable, Portable, Functional Java Plug-in
译者简介曹云飞,西安交通大学计算机软件硕士。现就职于Ethos,热衷于新技术的钻研,软件架构与敏捷开发,目前从事 Home Control 方面的工作。参与 InfoQ 中文站内容建设,请邮件至china-editorial[at]infoq.com

Java语言 & 开发