科技行者

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

知识库

知识库 安全导航

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

从Java开源说起……1

  • 扫一扫
    分享文章到微信

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

Sun 公司究竟为什么要开放Java虚拟机编译器和的源代码呢?进一步说,Sun 公司为何要彻底地进行自己的开放源代码运动,将自己在软件和硬件领域多年的积累拱手送给公众呢?

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

关键字: 开源 java

  • 评论
  • 分享微博
  • 分享邮件
Java为什么要开源?对于这个问题,很大一部分人的观点是Sun 公司终于抵挡不住开源社区和Java社区的种种压力,最终被迫开放Java虚拟机和编译器的源代码。持这种观点的人们可能没有意识到,在2005年6 月14日之前,Sun 公司对开源社区贡献的代码量仅次于加州大学伯克利分校。例如说在我们非常熟悉的Apache, Mozilla, Gnome, OpenOffice等等项目里面,就有大量Sun 公司贡献的代码。2005年6 月14日,Sun 公司在CDDL授权协议下开放了Solaris操作系统的源代码,从此成为对开源社区贡献代码量最大的实体。除了开放软件产品的源代码之外,Sun 公司还大胆地开放其核心硬件SPARC处理器 -- 包括2005年11月刚刚发布的8 核心32线程UltraSPARC T1处理器 -- 的全部设计文件,使得其他厂商能够生产和销售UltraSPARC T1以及经过改进的SPARC处理器。平心而论,不管是在软件开源还是在硬件开源领域,Sun 公司都不是第一个进行尝试的厂商,例如说IBM 公司早在2004年就有限度的开放Power构架技术,并且成立Power.org来为主要合作伙伴提供基于Power构架的处理器开发支持和应用开发支持。然而,在这场轰轰烈烈的开放源代码运动中,Sun 公司毫无疑问的是开放得最彻底的一个,从处理器(UltraSPARC T1)到操作系统(OpenSolaris),从集成开发工具(NetBeans)到应用软件(OpenOffice),无一例外。因此,公众的压力固然是促使Sun 公司开放Java虚拟机和编译器源代码的原因之一,但是即使这些压力有所减轻甚至是不复存在,Java的开源也早就在Sun 公司的蓝图之中。2005年3 月的时候Sun 公司以JRL授权协议(Java Research License, Java研究授权协议)在java.net上公开 -- 注意是公开,不是开放 -- 了JDK 5.0的全部源代码,可以认为是Sun 公司在Java开源之路上的一个重要环节。

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

  我曾经不止一次地在论坛上看到这样的言论:“真是羡慕国外的程序员,他们有优越的收入和充足的时间,丝毫不用担心住房和医疗等等让人头疼的问题,因此能够利用大量的业余时间编写和维护开放源代码软件。国内的程序员连生存下去都是问题,怎么可能给开放源代码运动作贡献呢?”不可否认,这世界上的确存在大量具有崇高精神的利用业余时间编写和维护开放源代码软件的程序员,不过我们只要粗略地阅读一下Linux、Eclipse、Apache、OpenOffice等等‌软件的源代码开头的注释部分,就知道这些开源软件的作者之中的大多数,仍然在为住房和医疗问题而劳心烦恼,而他们给开放源代码运动所作出来的贡献,大部分是在他们的正常上班时间作出的。很显然,对于这些作者来说,编写和维护开放源代码软件是他们的工作而不是他们个人的崇高爱好,他们所在的公司为他们编写和维护开放源代码的工作支付酬劳 -- 在这个数不胜数的公司名单上有IBM,有RedHat,有Novell,当然也有Sun 。可以这么说,这些商业公司参与和推进开放源代码运动的动机基本上是一致的,所不同的只是他们参与和推进开放源代码运动的方式,以及开源与不开源之间的尺度把握。

  商业公司参与和推进开放源代码运动的方式,大体上可以分为如下几种。

  1.将公司已经不再使用并且保密价值不大的源代码捐献给开源社区,不再维护,也不为其他愿意继续维护这些源代码其他公司或者个人提供技术支持,这种方式我们可以称之为“抛弃型开放源代码”。在开源社区中存在大量的抛弃型开放源代码项目,其主要表现形式为项目长期没有更新,没有缺陷报告和补丁发布,没有论坛或者是邮件列表活动,发给项目负责人的电子邮件通常来说有如泥牛入海。著名的开源社区sourceforge.net之所以被称为世界上最大的“恐龙停车场”,其原因之一就是这个社区“寄放”了大量不再活跃的抛弃型开放源代码项目。由于很少有人会注意到某个公司的某个开源项目是否为抛弃型开放源代码项目,因此有相当数量的公司将这种方式作为改变公司形象的一种有效手段,不定期地向开源社区贡献一些侏罗纪的代码。

  2.将能够直接地为公司带来盈利的产品和技术开放源代码,但是通过授权许可(最常见的形式是双授权许可)来保护公司的盈利。采取这种方式开放源代码的公司并不鼓励开源社区对该产品和技术本身进行改进,但是鼓励开源社区在该产品和技术的基础上开发可商业化的应用。例如QT,对于开发人员来说是完全开放和免费的,但是基于QT的应用要商业话的话,就必须向TrollTech公司交纳一定数量的授权费用。这种形式能够有效地扩大该产品或者是技术的市场占有率,并且有效地阻止了竞争对手利用开放的代码提高其竞争能力,但是也必须直面未授权商业化应用所带来的利润损失。

3.将能够间接地为公司带来盈利的产品和技术开放源代码,鼓励开源社区对该产品和技术本身进行改进,但是通过研发经费、人工投入、授权许可等多种方式来保护公司对该产品和技术的控制权。由IBM 控制的Eclipse项目和由Sun 公司控制的OpenSolaris项目,可以说是这种开源方式的杰出代表。

  4.针对为竞争对手带来盈利和产品和技术另起炉灶开发一个开放源代码项目,通过研发经费和人工投入鼓励开源社区对该产品和技术本身进行改进,并且在自己的商业应用中使用该产品和技术。举个例子,今年11月1 日摩托罗拉宣布要成立一个开放源代码的Java ME社区,这对于Sun 公司的Java ME商业授权来说毫无疑问是个强劲的威胁。

  从如上几种方式不难看到商业公司参与和推进开放源代码运动的动机所在,那就是提高企业形象,扩大市场份额,打击竞争对手。

  有的人就会问了:既然开放源代码有这么多好处,为啥这些公司没有向Sun 这样把自己的核心技术全都开放源代码了呢?因为开放源代码就向是一把双刃剑,机遇与风险总是同时存在的。下面列出的是几个在开放源代码运动中常见的风险。

  1.法律风险。这个风险至少包括两个方面,一个是被开放的源代码的所有权问题,也就是说源代码的原作者是否同意公司开放其编写和维护的源代码;另外一个源代码所涉及到的专利权问题,也就是说源代码中所使用到的专利技术有可能给没有被授权使用这些专利技术的用户造成法律问题。对于前者来说,大部分公司的做法是花费大量的人力和物力来征得原作者的同意将其代码开源,对于未征得同意的部分源代码需要寻找开放源代码的替代方案或者是重写甚至是将该功能彻底剔除。对于后者来说,有的公司会选择听之任之将法律责任推给使用开源技术的开发商,但是有的公司则会设法为使用开源技术的开发商提供保护伞 -- 例如说,在CDDL授权协议框架之下,Sun 公司承诺为使用OpenSolaris技术的厂商提供法律保护,使用Sun 公司的资金为厂商解决在使用OpenSolaris当中涉及的法律问题。

  2.竞争风险。选择将某个产品和技术开放源代码,也就选择了将自己的优点和缺点全部暴露在竞争者无比挑剔的眼光之下。然而这还不是最可怕的,最可怕的是竞争对手直接使用你的产品和技术去抢占原本属于你的市场。例如说,今年10月30日的时候Oracle宣布推出Unbreakable Linux,正式加入Linux市场抢夺战 -- Unbreakable Linux基于RedHat Linux的源代码,但是去掉了RedHat的Logo,同时加上了Oracle的Logo。还记得Oracle的总裁Larry Ellison在被问及是否会考虑收购RedHat的时候是怎么说的吗?他的回答是Oracle不会收购一家随时都有可能被淘汰的公司。

  3.技术分化。选择了某个产品和技术开放源代码,也就选择了让竞争对手参与到该开源项目的开发与维护当中来,从而出现多个版本互不兼容的实现。一个很实在的问题就是,Java语言开源之后,会不会出现多个互不兼容的Java虚拟机实现,从而导致Java语言的“一次编写,随处运行”特性成为一句空话?Eclipse基金会是不是会将AWT/SWING的竞争技术SWT 集成到Eclipse基金会发布的Java虚拟机里面去?

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

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

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