自从Sun公司宣布Java开源以来已经过去一年的时间,在这一年中发生些了什么?虽然Java的最终用户可能已经开始对Java的开源感到怀疑,一年之后,那些专注于创建一个“繁荣”的开源Java社区的人们依然在努力的对其进行彻底改造。
在2006年11月13日Sun宣布Java开源之前就存在的开源Java社区,或者被整合到OpenJDK社区中,或者继续提供备选但更强大的代码方 面的资源。同时在Sun内部,Java工程师在学习与一个更大的社区交互的同时正在彻底检查他们的程序。但是,问题依然存在,确切的说,这些问题包括 OpenJDK的管理和替换阻碍Java开源代码的需要。不过,尽管你可以从网上经常搜索到对Java开源的批评,那些专注于Java开发的人们似乎依然 保持乐观态度。
事情并非总是如此。社区迫使Sun发布Java源代码已有几年的时间,而且当Sun最终确实这样做的时候,人们却对 Java的开源却持谨慎看好的观点,尤其是只有一部分代码被发布。在2007年2月的自由与开源软件开发者欧洲会议上,当社区开发者和Sun工程师首次会 面的时候,某种程度的Java开源社区就已经形成雏形。但是,据Sun的Java首席工程师Mark Reinhold表示,直到六个月后的JavaOne大会上多数其余Java代码被发布后,这个社区才真正开始形成。
Reinhold表示,Java开源的过程从某种程度上来说比较轻松,因为事实上Sun此前就已经发布过部分源代码,尤其是针对 OpenOffice.org和OpenSolaris开源项目。“我从OpenSolaris项目中的人们那儿学到很多,”Reinhold表示。他还 回忆道,Java研究许可(Java Research License,JRL)曾经被批评为Sun回避完全发布Java源代码的方式,但对于Sun的员工来说它实际上就是一次模拟训练,帮助他们学会与外界进 行交互。
Java开源之成长的烦恼
在过去的一年中,Java开源社区的成长总体来说比较小,Reinhold表示,不过他又补充说,鉴于社区先于Java开放源代码就已经存在,鉴于社区要求人们贡献更高级别的专家意见,他对社区的这种成长幅度并不感到意外。
一个例外是Java移动和嵌入式社区,这是一个伴随Sun宣布开源Java而创建的社区。Sun公司负责Java技术开发的专家Terrence Barr表示,在过去一年中这个社区已经发展的具有500名注册的志愿者,同时还有很多其他方面的发展。“在这个社区中我们已经收获了许多开发者的想 法,”Barr表示,“这种活跃性是你在业界任何其他地方所不能发现的,我们对此感到非常自豪。”
同时,对于那些奋斗了数年来通过反 设计来实现一个免费的Java实现的人们来说,将不得不使自己适应一个完全不同的环境。虽然有些人因为个人原因拒绝参与OpenJDK项目,他们甚至不愿 意签订Sun捐赠协议(Sun Contributor Agreement,SCA),但是其他人则已经热情的接受了这种已经改变的现实。最高级的免费Java实现之一Kaffe项目的首席研发人员 Dalibor Topic,现在已经成为Open JDK临时管理委员会中的一员。
类似的情况,GNU Classpath项目并没有像有的人预测的那样逐渐淡出,它依然是一个主要的Java项目,为Sun没有公布的许多代码提供备选方案,同时还提供为Sun的商业Java代码中某些部分提供一些节省资源和空间的备选方案。
事实上,根据Classpath的开发者Michael Koch表示,Classpath长期建立起来的社区已经成为Sun的最强大的同盟者和建议者之一。“Sun与Classpath社区的人们经常交流如何在开源社区中发展,”Koch表示。
在Sun公司内部,开发者也一直在努力进行自我调整。“Sun的首席开源官员Simon Phipps经常提到的一点是,”Reinhold表示,“当你将曾经的专有内部技术团队转向开放开发的时候,正确的模式不是‘现在我们要开始创建一个我 们公司之外的社区,然后找出与它们交互的正确方式。’”
“正确看待它的方式应该是,在此之前一直以封闭方式运行的技术团队就是最初的 社区。扩展这个社区的任务就是为那些想加入进来的外部人员创建一个桥梁,培训那些希望了解Java技术标准和过程的公司之外的人,并且改变最初技术团队的 某些行为,这样他们可以通过一个更加开放和透明的方式进行合作。这实际上是一个在现有基础上进行改造和完善的过程,而不是重新打造一个全新的东西。”
Topic对此表示同意。“就我们的这些问题的本身而言,主要是由于在Sun内部的某些基础体系必须被取代,新的体系要同时支持Sun和社区的开发者来研究JDK。这种规模的项目通常要花费一些时间来合适的完成。仅仅讨厌这种转变是不会有任何作用的。”
Java开源中面临的关键问题
在今天 的Java社区中一个比较突出的问题就是管理。Java开源社区在开始成立六个月后,也就是在JavaOne大会上,它的临时管理委员会才成立,而且它成 立后又花费了大量的时间来建立负责指导社区的基本原则。这样,很多工作就必然缓慢了下来,诸如贡献者将被看做个人还是某个公司或项目的代表之类的问题,需 要被管理委员会仔细的分析并在社区中进行讨论来确定。不可避免,结论的得出要比社区中很多人所希望的慢的多,因此有的人开始批评临时管理委员会的低效。
Reinhold表示,“现在Sun依然是OpenJDK的善意的独裁者,但是Sun会像它承诺的一样不干涉开源社区。”尽管具有这种规定的不确定性,新的子项目已经发布,而且Reinhold表示,“我们依然希望到年底能推出一个规定草案。”
在技术方面,主要的问题依然是Sun不能提供某些缺少的代码,因为它是被授权给第三方团体的,或者它不愿意提供是因为它希望保护它的版权财产。Barr和Reinhold都表示,这部分代码在所有的Java代码库中占大约4-5%,但是它依然有几十万行代码。
而且,尽管其余的代码对于很多用途来说已经足够,缺少的部分通常是一些比较重要的代码。IcedTea是一个专门弥补这些功能上空白的项目,根据在 Fedora wiki上的一个对IcedTea首席开发者Thomas Fitzsimmons的采访,缺少的功能包括字体光栅化、图形光栅化、颜色管理、插件支持和声音管理等。
尽管在这方面已经在进行很 多工作来替代这些功能,它们依然不完整。这个事实比任何其他事情都导致人们对Java的开源失去信心。在一年之后,尽管Sun曾做出开源所有代码的承诺, 事实依然是开源软件依然没有一个完整的Java实现,而Sun继续整合社区产生的代码和它自己的专有代码,它依然是一个完整Java实现的销售商。经过数 年的等待,如果它依然如此不合理的话,人们的抱怨或许可以理解。
明年Java开源重点何在?
当被问及Java的开源将会在明年显示出存在的意义的时候,Reinhold的回答颇具哲学性。
“我以前从来没有放弃这种努力,因此我不会做这样或那样的预测。对于在Sun工作的人来说,这个项目从一开始就是一个非常具有激情的过程。它的许多方面 一直在有条不紊的成长,我们知道接下来需要完成的一些事情是什么,我们一直在关注开源世界以明确哪些是我们忘记的,哪些我们可以做的更好。现在回顾一下, 我认为实际上一切都在良好的发展。”
这些观点是Java权威人士的共识。Classpath开发者Mario Torre开玩笑称,“明年Java将完全开源,.NET/C#将成为过去”。但是在开源Java社区中的这种值得注意的乐观情绪有时候看起来并非有多少根据。
Reinhold表示,“Java开源第一年的工作主要是关于代码方面,第二年将主要让社区的管理到位,并且让Sun的工程师进一步深入到开源世界中。”据Barr表示,这些计划包括让社区成员可以访问或选择Sun的内部质量保证和漏洞报告工具。
“尽管你还会在这个圈子中发现一些唱反调的人,但是你也将发现我们正在向好的方面发展,”Reinhold表示,“我认为,从现在起的一年后,我们可能会对于Java开源的发展情况感到非常满意。”