内容提示:Java 7技术规范背后的商业纷争像咒语一样影响着Java的技术进程,对持有技术标准的厂商而言Java却是商业利益和竞争的砝码。
我们一直在关注Java 7,对于Java这样占据软件开发领域半壁江山的技术平台,没人会忽略它的新版本。但对于一门技术,特别是IT技术,使用者和拥有者却有截然不同的理解。开发者的期望往往是更高效、更方便,更贴合当前应用场景的进化需求,也就是提高软件开发者的生产力。而对于持有技术标准的厂商而言,Java要比其自身技术的结构、语法和特性要复杂得多,是商业利益和竞争的砝码。一再延期的Java 7就是这样一个被施了商业咒语的技术标准。
在进一步说明之前,我们必须明确Java标准的两个重要组成部分——JCP和JSR。JCP(Java Community Process)是一个类似ISO标准委员会的组织,Java的一切标准化工作由JCP负责。JSR(Java Specification Requests)是Java请求规范,每一个JSR规范都包括一些Java技术细则、参考实现(RI)和一个兼容性测试工具(TCK)组成。Java标准的每一项新的功能组成由JSR来封装后递交JCP审核。
如果某个社区或厂商希望Java增加一项功能,那就需要向JCP提交JSR并等待JCP的执行委员会投票通过并建立这个Java规范。
对于Java的发展而言,JCP的权利极大,它可以决定一项Java规范是否会出现在下一个版本的Java标准中,也可以决定下一个标准对怎样的应用开发更有利。这其中的关键就是,JCP被谁所控制。JCP由Sun一手创建的,用来发展和更新Java技术规范、参考实现(RI)、技术兼容包(TCK),Sun被Oracle收购后,JCP也由Oracle接手。
事实上,在Oracle收购Sun之前,众多的Java开发者及已经开始纷纷逃离JCP而转换到一些小型的论坛。大批逃离者称,JCP已经失去了它的吸引力,它不再是被当成响应和解决Java开发者问题的社区,相反,JCP已经成为被一些大公司所利用JSP通过的橡皮图章。这些大公司凭着自身的影响和力量来指定各种规范从而达到满足自己的利益。整个JCP更像是一个商业擂台,多位法师念出自己的咒语试图在Java技术的发展中对自己有利。
这一切在Oracle接手Sun之后变得更糟。在Sun和Apache基金会之间,关于JDK规范应用范围的纷争由来已久。之前Sun考虑到Java ME在授权方面的收入,不愿意为Apache提供一个公平的竞争环境。目前大热的Google Android系统之所以会选择Dalvik虚拟机也是这个原因。类似的商业博弈和争论在Oracle接手JCP后没有改变,只是变得更为直接。
目前,Java 7的JSR的官方规范还从未被Sun或Oracle提交给JCP。Sun的工程师还没有启动OpenJDK JDK 7中的Java 7功能规划。恰恰在这段时间,我们听到各种技术项目的决策(不引入闭包,引入闭包,等等)。目前,大部分已有的功能还处于功能级别以下(under feature-level specs)。
注:这里所提到的OpenJDK JDK 7是目前正在进行的Java 7规范项目,由Oracle/Sun推动。OpenJDK之前称为Sun JDK,是由JCP定义的规范,是Java实现的官方参考。
在之前公开的日程表中,JDK 7功能完成版是在6月3日完成,最终的里程碑版本是在9月9日发布(正好赶在由Oracle举办的JavaOne大会之前)。如果我们相信这份安排,JDK 7将在今年年底的某一天完成。但这是JDK 7,对于Oracle这样一家极其依赖企业级Java中间件的软件厂商而言,在没有稳妥的解决Java 7规范的问题前,我们很难看到它正式发布。
这一切就像一个咒语,不断影响Java技术以一种偏离正确坐标的方向前进。