科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道从Java开源说起……2

从Java开源说起……2

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Sun 公司究竟为什么要开放Java虚拟机编译器和的源代码呢?进一步说,Sun 公司为何要彻底地进行自己的开放源代码运动,将自己在软件和硬件领域多年的积累拱手送给公众呢?这到底是“自由、平等、共享、创新、互助、团结”的开源精神,还是在自己走向毁灭之前试图让对手将来也无法立足之垂死挣扎?

来源:IT专家网 2008年6月4日

关键字: 开源 java

  • 评论
  • 分享微博
  • 分享邮件
Java开源还是不开源?在回答这个问题之前,还是让我们来看看Java语言和Sun 公司所面临的挑战吧。

  1.Java语言是“前人种树后人乘凉”的一个典型范例 -- Sun 公司发明、发展和维护了Java语言,但是从Java语言当中获利最大的却是IBM 和BEA 。

  2.在Java程序员与C/C++程序员的比例接近1:1的今天,Java语言遭遇到了开放源代码阵营的顽强抵抗。这种抵抗体现在Linux 厂商拒绝在Linux 发行版中集成基于Java语言的应用程序,而抵抗的理由非常的简单,那就是除非获得Sun 公司的授权Linux 厂商不允许在其Linux发行版中捆绑Java运行环境(Java Runtime Environment, JRE) -- 既然连JRE 都没有,当然就没有基于Java的应用程序。前两天在水木社区的ITExpress 版有一些关于为何Gnome 上面有很多软件是基于MONO而不是基于Java的讨论,Suzhe的观点是Java调用外部函数比较困难,不能够很好地利用现有的库资源,然而从更高的层次来说,Java的授权模式才是Java无法在开源阵营得到推广的结症所在。举个例子来说,2005年的时候我跟国内的两家小有名气的Linux厂商商谈将JRE捆绑(OEM)到他们的Linux发行版当中去,这本来是郎有情妹有意两厢情愿的事情,结果却在公司的律师们那里石沉大海。现在Java语言都已经开源了,我一年前递上去的授权申请还连个响都没有听到 -- 这里面的主要原因,是在当时的JRE授权模式下,很难向某个Linux厂商提供OEM 授权。基于类似的原因,在BSD 阵营里Java技术的推广也没有太大的进展,甚至给人一种Sun 公司敌视BSD 阵营的印象。

  3.经过多年的发展,市面上已经出现了多种开源和不开源的Java虚拟机和编译器实现,与Sun 公司提供的Java SDK相竞争 -- 不开源的虚拟机包括IBM 的JDK和BEA 的JRocket,开源的虚拟机包括Kaffe和Apache Harmony。由于这些开源虚拟机在授权许可方面对Linux 厂商相对友好,因此得到了众多Linux 厂商的广泛支持。这也意味着(1)如果听任这些开源的虚拟机项目继续发展,Sun 将在Linux 阵营上失去原本就来之不易的市场份额;(2)竞争厂商必然会将与Sun 公司相竞争的技术集成到开源的虚拟机项目中,从而导致Java技术的分化,使得Sun 公司失去对Java技术的控制权。如果Sun 公司主动将自己的Java虚拟机和编译器开源,就可以利用自身在该领域的强大号召力弱化其他开源项目的吸引力,从而达到保护自身的目的。

  4.作为世界上对开源社区贡献代码量最多的实体,Sun 公司已经从开放源代码运动里面尝到了甜头。例如2005年6 月Sun 公司开放Solaris操作系统源代码之后,开发者对Solaris操作系统的兴趣大为上升,在短短的几个月时间内,从Sun 公司网站上下载Solaris 操作系统的总份数就迅速超过以往所有下载份数的总和(过去Solaris操作系统也是可以免费下载的)。来自开发者的热情直接导致了Solaris操作系统市场占有率的增长,例如在2006财政年度(2005年7 月1 日到2006年6 月30日)间Sun 公司来自Solaris OEM授权的收入达到了预期的124%。2006年第二季度Sun 公司来自服务器销售的营收为16亿美元,比去年同期增长14%。这种财务上的强劲长势验证了Sun 公司高层在各种场合不断重复的一句话:“从长远来看,我们也不知道开源到底会给Sun 公司带来什么样的影响。但是从目前的状况来看,我们每一次开放核心技术的源代码,都给公司带来财务上的强劲增长。”

  决策层与众多律师昼夜焚膏推演博弈理论的结果是:采用GPLv2授权协议开放Java虚拟机和编译器的源代码。

  经过前面的讨论,我想大部分人都会认可Java开源是一件顺利成章的事情。不过熟悉Sun 公司开源历史的人可能会问了:为什么是GPLv2?为什么不是CDDL?Sun 公司在开放Solaris操作系统源代码的时候费尽心思的设计了CDDL授权协议,为什么在开放Java虚拟机和编译器源代码的时候不再使用?在CDDL刚刚发布的时候,Sun 公司曾经在多个场合批评GPL 授权协议,认为GPL 授权协议强制要求使用了GPL 代码的项目进行开源是不公平的,甚至认为GPL 是一个“掠夺性的授权协议”。Java开源使用GPLv2授权协议是不是暗示着Solaris开源使用CDDL授权协议是一个错误的选择?对于这些高层次的问题,Sun 公司软件部门执行副总裁Rich Green认为他会敞开心怀倾听任何关于修改Sun 公司开源策略的建议。很显然,作为对开源社区贡献代码量最大的Sun 公司,仍然在不断地学习和调整开源的技巧和策略。不过,Java采用GPLv2授权协议开源对于Sun 公司来说至少有如下好处:(1)禁止非开源的分叉实现,(2)得到F/OSS社区的支持,(3)与GNU/Linux的授权协议相兼容,可以迅速被Linux社区所接受,(4)通过Sun Contribution Agreement保证了对Java语言的控制权。在Sun 公司公布采用GPLv2授权协议开放Java虚拟机和编译器源代码的同一天,IBM 公司未来互联网技术部门的副总裁Rod Smith认为Sun 公司应该采用Apache授权协议来实现Java开源(因为IBM 公司控制着基于Apache 授权协议的Harmony项目,一个开放源代码的Java虚拟机实现)。对此Sun 公司首席执行官Jonathan Schwartz毫不客气地进行了坚决的回击:“我非常好奇IBM 公司为什么会反对GPL 授权协议。我真心的盼望他们不会站到开源社区的对立面。”如果不是GPLv2,如果没有整个GNU/Linux社区作为后盾,Jonathan Schwartz的反应还能够如此之铿锵有力么?

  Java开源,是Sun 公司的选择,也是顺应潮流的选择。我真心的希望开源之后的Java一路走好,也希望坚持彻底开源的Sun 公司一路走好。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章