`
totoxian
  • 浏览: 1074028 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

三年后,又一封给Sun CEO的公开信

阅读更多
几个小时前,Apache软件基金会(ASF)的网站上登出了一封致Sun CEO的公开信,以及有关该公开信的FAQ。公开信的主要目的,是要求Sun公司在30天内给ASF一个可以接受的Java SE JCK license, 或者对长期以来拒绝ASF的相关要求做出公开的解释。看官中有心者或许记得,三年前差不多同样时间,IBM的VP Rod Smith曾经发表过著名的公开信请求Sun开源Java。三年之后,OpenJDK莺啼初试,天下似已大定,广大Java民工翘首以盼 JavaOne2007之英雄大会,一片歌舞升平之际,为什么又出来一个开源Java的公开信呢?看官莫急,容我将爪哇演义细细道来。

话说天下大势,就像阿甘他妈的一盒巧克力。想当年Java携"一次编写,到处运行"之势粉墨登场,Applet何等玉树临风顾盼生姿,有席卷天下,包举宇内,囊括四海之意,并吞八荒之心,奈何所托非人,辗转反复竟几致夭折。谁料到世人嗟叹之声未已,Java就借Web大行其道之东风咸鱼翻身,三年不飞一飞冲天,竟一时蔚然成风,号称"最成功的编程语言"。恰逢开源软件大行其道,与Java相关的开源软件层出不穷,那真是江山如画,一时多少豪杰(省去赤壁怀古0xCAFEBABE字...)愚之拙见, Java能有今天,开源社区实乃股肱,辅佐之功莫大耶。恰在Java如日中天之际,FSF和自由软件运动的精神领袖Richard Stallman发表了著名文章The Java Trap,指出Java应用运行的基础-所有流行的JRE都是彻头彻尾的商业软件,建构在其上的众多开源软件和社区无异于无本之木无源之水皮之不存毛将焉附必须时刻警惕资本家背叛革命抢夺胜利果实云云,号召大家放弃使用商业Java实现支持FSF旗下的GNU Classpath。自此,要求Sun开源Java之声日隆,尤以2004年IBM VP Rod Smith之公开信,最得一时之风流,是时Sun公司掌门却对此呼吁嗤之以鼻,答曰"司马昭之心昭然若揭,欲得开源Java先把DB2奉上再议...",然而自此之后, Java竟真的江河日下,鹰视狼顾的M$持.Net在前,昔日籍籍无名之草民举Ruby,PHP,AJAX在后,又逢互联网泡沫破裂,堂堂升阳公司竟四面楚歌,见者无不扼腕,如履薄冰,闻者无不伤心。此后升阳掌门和软件分舵副掌门先后离职,Sun终于顺应民意在2006年11月宣布了有史以来对开源社区最大的一次性捐献-以GPL开源所有Java SE/ME产品,一时间四海之内无不额首称快,皆称中兴有望...此一番爪哇英雄传,至此已经可以完美谢幕...stop,原来故事的另一面并不像这演义如此简单。

话说Java的标准叫做JSR,乃是由一个叫做JCP的寡头组织商量决定的,每个JSR的推出,必伴随一个RI(Reference Implementation)和一个TCK(Technology Compatibility Kit),只有通过TCK的认证才能叫做该JSR的兼容实现,这就是"国际经济旧秩序"。特别的, Java SE相关JSR的TCK又被称为JCK,至今为止所有权全部在Sun手中,也只有通过了JCK才能打上Java注册商标。普通人欲一窥JCK之真面目皆不得,要练兼容,抱歉,花钱买license先。然而在2002年,ASF历史性的成为加入寡头俱乐部JCP的第一个开源软件基金会,并且极力促成了JCP通过 JSPA(Java Specification Participation Agreement),该条约的主要内容,类似于世贸协定,是规定了在JCP内部的知识产权使用规范,以及JSR/RI/TCK使用的 license等相关事宜,尤其重要的,是允许发放免费和无附加限制的license给非盈利组织,从而事实上允许了对JSR的独立开源实现,这就是现在的"国际经济新秩序"。自此之后,自由经济才在爪哇国大行其道终成正果。不过这都是背后的故事世人多不以为意也。

话说2004年,Java SE 5的JSR和RI/TCK发布,成为第一个允许开源实现的Java SE JSR,是时正是世人呼吁Sun开源Java最盛之际,一时间浮想联翩,然而一年过去,什么也没发生。失望之余开源社区终于揭竿而起,2005年5月, ASF正式宣布接纳Harmony为incubator 项目,Harmony旨在Apache软件许可证下由开源社区开发一个模块化的兼容的Java SE实现,一时间朝野震动。尤其是Harmony这个名字,在开源社区引起诸多美好联想,皆认为"Harmony里有每个Javaer的生老病死,悲欢离合,我的也在里面"。可惜美好的愿望总是短暂的,到2005年末,原有的以FSF旗下的GNU Classpath和Kaffe为代表的GPL开源Java SE相关项目最终未能就GPL和ASL两个软件许可证的兼容性与ASF达成一致,竟分道扬镳。然而,Harmony相对商业友好的license以及旨在通过Java SE 5 JCK的目标吸引了诸多商业公司的关注,尤其是IBM和Intel先后捐献大批代码,并且投入全职员工参与Harmony项目,短短几个月时间, Harmony就取得了飞速的发展。在2006年5月Harmony一岁生日那一天的JavaOne英雄大会上,Harmony的Geir宣布 Intel捐献AWT/Swing/Java2D这一重磅(这三个模块占了Java SE类库的差不多一半),并且当场演示了在Harmony上运行Eclipse, JEdit等大型程序,此时距离Harmony得到第一个商业公司的代码捐献不过半年多一点。Harmony项目自诞生以来一直争议不断,曰重复发明轮子者有之,曰开源Java无用者有之,曰商业巨头阴谋者有之,但2006年这次演示无疑让所有人大跌眼镜,谁也没想到号称"500人年"工作量代码行上百万的Java SE在Harmony成立一年即基本成型。此后,Harmony持续吸引来自世界各地的公司,大学,个人的关注,社区和项目的健康发展得到了基金会的承认,遂在翌年10月被接纳成为ASF正式项目。更有甚者,塞外巨贾,MIDP 3.0 JSR的spec lead Motorola更是受Harmony和Tomcat等项目激励,欲在Harmony的基础上生成一个Apache许可证的Java ME开源实现

然而Harmony不为人知的辛酸血泪却有一大把,ASF自2006年8月便按照JSPA约定为Harmony向Sun申请JCK,话说ASF申请 TCK已是熟门熟路,旗下没有一筐也有10个不同JSR实现成功通过TCK的,最著名的莫过于J2EE1.4实现Geronimo,早已通过TCK认证打上了咖啡标签,所以ASF满心以为最多2006年底即可走完流程。没想到时移势易,按照公开信的说法,Sun这次竟然开出附加条件,要求Harmony如果要拿到JCK license,必须对其用户设置使用限制("limits on the 'field of use' available to users")。在ASF看来,这既不容于ASF理念,又违反Sun签署同意遵守的JSPA,甚至违反Sun自己标榜的所谓Open Standard的定义,因此完全不能接受。双方自此争执不下,竟闹到今天公开叫板的地步。

为什么Sun连自己的Java SE都肯开源,却不肯哪怕只是按成例给Harmony一个可以接受的license呢?其中原委,似乎让人费解,也似乎在意料之中。Harmony虽然已经完成类库的96%,有了一个性能/稳定性均具竞争力的虚拟机,还有了IBM和BEA两大巨头提供的测试版兼容虚拟机,有超过20K的测试用例运行在数个Linux/Windows平台上,可以支持Eclipse, Geronimo, Derby, Tomcat等等几十个著名开源应用,却因此至今无法发布一个release,以至于还有预言Death of Harmony,嘲笑Harmony社区无能。看官们若有耐心看拙作至此,欲对此事作何感想?不足30天之后,JavaOne英雄大会即将重开,Harmony社区还预约了一个session,且看后事如何...

Update:
Geir Magnusson Jr. on this
Sam Ruby on this
SD Times' news, 看起来Sun已经开始反应...
也有不屑一顾
还有人认为是勒索,不过他被认出来是Sun Technical Director
Infoworld报道包括了对Geir的访谈
Sun官方blog的回应
eweek的报道
Stefano Mazzochi借来了一个比喻
TSS的讨论
javalobby的讨论 (谢谢diggywang帮助搜集)
Bob Lee看起来站在ASF一边
Gao Weiqi的观察,他预言Harmony为Java的第三次fork, 前两次是.Net和Eclipse
分享到:
评论

相关推荐

    SUN T7-1 固件 SUN T7-1 固件

    SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN ...

    SUN M10-4 固件 SUN M10-4 固件

    SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN ...

    jdk源码-补充缺少sun包下的源码

    sun包是Oracle JDK中的一个内部包,包含了Java虚拟机(JVM)的核心实现以及一些专有的、非公开的类。这些类通常不推荐在应用程序中直接使用,因为它们可能在不同的JDK版本中发生变化,甚至被移除。然而,对于理解和...

    Java sun audio包

    Java的sun.audio包是Java标准库的一个组成部分,主要用于处理音频数据和播放音频文件。这个包在Java早期版本中被广泛使用,尽管在后续版本中,Java Sound API成为了更推荐的音频处理工具,但sun.audio包仍然保留,为...

    sun.misc.BASE64Decoder和sun.misc.BASE64Encoder不可用已解决

    一、问题描述 最近项目实验发现导入工具程序后项目有错,查看发现sun.misc.BASE64Decoder和sun.misc.BASE64Encoder不可用,找不到相应的类。 二、原因分析 冲浪后发现JDK中的lib\tools.jar和JRE中的lib\rt.jar已从...

    jdk sun 开头的源码

    `sun.misc.Unsafe`类是一个特殊的存在,它提供了对Java内存模型的直接访问,尽管不建议在普通应用中使用,但在一些高性能或底层操作的场景下可能会用到。 5. **网络编程**:`sun.net`包包含了网络协议的实现,如TCP...

    JDK1.8 sun 包源码

    安装完JDK后,会在%JAVA_HOME% /jdk文件夹下生成一个src.zip,此文件夹对应rt.jar中的java源码,但细心研究后发现rt.jar中sun包下的文件不存在,也就是说sun包下的java源码并没有打包到src.zip中,可以到...

    sun存储3510手册

    Sun StorEdge 3510 FC Array是一款由Sun Microsystems公司与Dot Hill Systems Corporation合作开发的企业级光纤通道存储解决方案。这款产品主要面向需要高性能、高可靠性和可扩展性的数据中心环境。 ### 二、技术...

    sun sun 精华 sun sun 精华

    很抱歉,根据您给出的信息,"sun sun 精华"似乎并不是一个明确的IT相关主题,而且描述中也没有提供具体的技术细节或知识点。标签"sun s un 精华"同样没有提供足够的线索来生成相关的IT内容。至于压缩包子文件的文件...

    Sun Enterprise 10000 Server

    这是一款高端的企业级服务器,俗称“Starfire”,在1998年推出,是Sun Enterprise服务器产品线中的一部分,是针对大型企业和服务提供商设计的。 Sun Enterprise 10000 Server基于SPARC架构,其设计目的是为了处理...

    sun.io.CharToByteConverter支持类

    项目工程中用到jdk1.6相关方法,可以使用,但是升级到jdk1.8以后,编译出现java.lang.NoClassDefFoundError: sun/io/CharToByteConverter错误,后经查询,是jdk1.8版本中已经从sun.io.*中进行去除。网上找来了相关...

    sun.misc.BASE64Encoder源码及jar包

    在Java编程语言中,`sun.misc.BASE64Encoder`和`BASE64Decoder`是用于进行Base64编码和解码的内部类,它们属于`sun.misc`包,这是一个非公开(非标准)的Java库。`sun.misc`包中的类主要用于JVM内部使用,因此在官方...

    SUN服务器诊断文档

    总之,这份SUN服务器诊断文档为管理员提供了一个全面的指南,从基本的硬件检查到复杂的系统级诊断,涵盖了故障排查的各个方面。掌握这些知识,可以帮助IT专业人员更有效地管理和维护SUN服务器,确保系统的稳定运行。

    Sun Directory

    Sun Java System Directory,也称为Sun Directory Server或OpenDS,是一款由Sun Microsystems开发的高性能、可扩展的LDAP(轻量目录访问协议)服务器。它支持高可用性和大规模数据处理,被广泛应用于企业环境中作为...

    com.sun.pdfview.PDFRenderer

    import com.sun.pdfview.FullScreenWindow;import com.sun.pdfview.OutlineNode;import com.sun.pdfview.PDFDestination;import com.sun.pdfview.PDFFile;import com.sun.pdfview.PDFObject;import ...

    sun 教程

    在探讨“Sun教程”的知识点时,我们聚焦于Sun Microsystems公司对Java编程语言的贡献与影响。Sun Microsystems,作为Java技术的发源地,其在IT行业的地位不可小觑。以下是对Sun及其Java技术的关键知识点的深入解析:...

    sun 给Java初学者的建议

    标题:“sun给Java初学者的建议” 描述:一份由Sun公司为Java初学者提供的宝贵建议,虽然原始内容为英文,但其价值不容忽视。 在IT领域,尤其是编程界,Java一直占据着举足轻重的地位。对于初学者而言,掌握正确的...

    Sun 与 IBM技术比较

    - Sun:Sun在存储领域提供了一系列解决方案,包括Sun StorageTek磁盘和磁带阵列,以及基于ZFS的存储系统,强调数据保护和效率。 - IBM:IBM的存储产品线包括DS系列磁盘阵列、TS系列磁带库,以及 XIV和System ...

    Java sun.audio.jar

    Java的sun.audio.jar是Java平台早期提供的一种音频处理支持的库文件,主要用于处理音频播放和音频数据的操作。这个jar文件包含在Java的标准类库中,主要用于兼容早期的Java应用程序,尤其是那些需要简单音频功能的...

Global site tag (gtag.js) - Google Analytics