本博文发表于前日的Java SE 6Update14之后。这次更新包含了很多bug修正,改进和新功能,以及一个新的垃圾回收器G1。但是对这个新的垃圾回收器,Sun明确声明表示如果要在产品开发中使用G1,必须首先购买Java支持协议。即是说,付钱才能用。于是,包括本文作者在内的很多Java开发者开始感到不安了。以下是译文全文: 今天颇感不安,还有些许惊诧,因为读到Slashdot在报道说大家期待已久的G1垃圾回收器将要收费。Java 6Update14的发行说明说: “尽管可以使用此G1版本,但需注意只有购买了Java支持合同之后才能被允许使用用于生产的G1。Sun的JavaPlatformStandard Edition for Businessprogram(面对商业程序的Java平台标准版本)支持G1。” 开源社区(一直)对大公司在开源方面所做的努力有所怀疑。但是再怎么怀疑他们还是我行我素。这也没什么奇怪,因为公司归根结底是最终要对他们股东负责的,通常只有一个CEO的这些公司从为立法而结合软件专利权,商业秘密,版权,商标的使用,诉讼,游说转变为维护他们的知识产权“权利”。 Sun一直是一个开源方面勉为其难(可以说是同享福不可同患难)的支持者。Java开源活动真正进入人们视野是在90年代末,当时正是一致致力于制作 Java的ISO标准的时代。可以说就在此时微软开始挫败甚至破坏 Java这庞然大物,因为它即将将用户从Windows的锁镣中解脱出来。最终,在1997年Sun获得JavaISO标准正式提交人这一很特别的职务,他成为了胜出者。我说“很特别”,因为提交ISO标准的不是大公司,而是典型的行业机构或标准化组织。 不过,(Sun)并没有提交什么标准,这一工作最后在1999年无疾而终。Java开源活动最大成果是Sun发行GPL之下的OpenJDK,寄渺茫希望于类别库中的第三者代码。 这是不是Oracle公司意图制作Java层级的讯号呢?那可真就是使“编写一次,到处运行”Java咒语显灵的关键举措了。Java咒语最初曾使 Java名声大振,尽管Java好则发一通注意提示,坏时让人一头雾水无法理解,至今依然是这种状况。“编写一次,到处测试”才是比较准确的说法呢。 这一举措对Java在三个方面构成威胁: 1. 它消弱自信满满的Sun/Oracle在引领平台方面的信誉。信誉是关键; 2. 当前的和潜在的客户现在须得考虑到一个断裂的或分层的平台所存在的实实在在的风险了; 3. 由于在GPL之下可用OpenJDK,Java分叉的分险极大。Sun的stewardshipofMySQL已经产生了项目被分叉的结果。分叉可能是无害处的,但Java是一种多少因其一致性和普遍性才成功的语言和类库,在Java使用者来看,分叉对Java来说就是灾难。 要记得,不是说甚至连微软都以商业或非商业区分.Net。尽管Mono是与Windows有联系,但那是另外一回事。 有人可能有理由辩道“它只是一个垃圾回收器”。在一定程度上,他说的没错。危险不存在于其功能如何而是它对Java社群来说代表什么以及Java社群对其意义的假设,这两者不一定意思相同。在这里自我应验的预言发生的可能性极高。 去年,SpringSource接受风险资金投资后,出现相类似的动荡。他们宣布要在分配政策方面做重大调整: Spring主要版本发行3个月后,它不再使公开发行补丁。 所有修改(fixes)继续用于公共源语言库而且付费客户可得到后面的单点发行,但是这些单点发行不会标记为公开 别受骗上当:这些变化意义重大。如果你的应用软件程序配备了Spring2.0.8而你需要转入一个发行并使用于公共库的fix时,你不再下载下一个发行版本。从根本上来说,在这种情况下你要负责打包以及给某个Spring发行版本做标签。 再回到Java上,它已经将桌面让给了Web(作为发展大趋势的一部分)和Net。现在Java与服务器关系密切,因而我敢保证像垃圾回收器这种东西对许多基于服务器的应用程序软件的作用非同小可。支持和测试多个垃圾回收器(如为缓存)增加了商家的费用及风险性。什么时候特定产品需要这种功能呢? 所有Java开发者们:请仔细关注这个问题。发言反对断裂Java! 译后感言:从Java语言上来看,由Java平台已经衍生出了如 Scala,Groovy,JRuby这些基于JVM的非Java语言。就语言的层面上,Java已经形成了一个大家族。然而这个家族都是建立在一个共同的Java平台之上。而垃圾回收器则是JVM中的一个机制,因此,此次Sun在宣布G1收费的确意义重大。甲骨文和Sun,以及Java社区之后的动向,值得关注。 原文:The Monetization of Java Begins? 作者:William Shields |