ava自出生以后,Sun(现在是Oracle)就竭力维护Java防止分裂,但是Java分裂在不断的发生着。几个有名的Java分裂如下
- MicroSoft对Java的分裂 :这个分裂出现在Java的幼年时期,那时候Java跟现在的HTML5一样是绝对明星,大家都在追捧她。这时MS推出了Visual J,并且在自己的浏览器里安装了一个自己实现的applet插件,Visual J开发确实有自己的优势,但是并不完全兼容Sun的Java,所以毫无意外的MS成了被告了,这个官司拖了几年,最后和解,MS赔钱。详细的内容可以见李 维的《Broland创奇》。这次分裂以Sun完胜为结局 。
- SWT/Swing之争 : 这两个都是完整的GUI库,对于这两者都有很多支持者和反对者,但是当人们用Java做一个GUI程序的时候,都会碰到如何选择的问题。这个也是大公司之 间的倾轧的结果,SWT背后是IBM和Eclipse基金会,而Swing顶着标准的帽子,从市场占有来看SWT有后来居上的劲头。这次分裂以SWT小胜为一个阶段,后续如何发展我们拭目以待。
- Harmony和Sun : 对于使用非Sun公司JDK并不算是分裂,如Oracle、BEA(进入Oracle)、IBM、基于GNU开源的Kaffe 、OpenJDK,这些取得了授权可以叫JDK。唯独基于Apache协议的Harmony没有获得Sun的认可, Apache社区的人很火,因为按照JCP的规定这样是不行的,所以Apache社区给Sun公司写了一封公开信,要求回应,当然直到Sun被收购也没有 回应。在此后,JCP投票的时候Apache一律反对,没有理由,就是要求Sun遵守JCP的规定。Servlet3.0等一系列JSR就是在这样投票下 被通过。Apache社区的人积极实现相关的JSR,如Tomcat7.0就实现了Sevlet3.0。扯远了,这次分裂以Sun实际胜利和Apache道义上胜利结束,同时也为下次的分裂埋下了伏笔。
- Harmony、Android、Java :说起Android大家应该都知道,但是如果说起Harmony和Android的关系可能只有很少人知道了,在Android的API中你肯定会发现 很多java.*和javax.*,这些很多都是使用了Harmony中的开发的类库,以前Harmony的开发者邮件列表中经常有android的开发 者报类库的bug。Android系统使用的是Java的语法+Java的核心类库+Android的类库+Android的虚拟机,不兼容的类文件格式 和打包格式。老外对于Java的核心类库加虚拟机起了一个名称叫JDK Lite,精简的JDK。这次算是Java阵营里分裂的最彻底了,但是Google的东东不叫Java,只是使用了Java语法,兼容核心类 库,Sun/Oracle也没招。在Android发布后很多开源的Java社区都陆续公布了自己在Android的兼容性,很多Java开发的底层库考 虑同时兼容Android和JavaSE。如果没有Harmony,google也许没有那么快发布android,毕竟核心类库的开发是一项既有体力还 有脑力的劳动,所谓上面我说Harmony为下次分裂埋下了伏笔,就是指Android借助了开源的力量。这次分裂对Java程序员来说是好事,Android胜利,JavaME败北。
- GAE:GAE 呢相当于把JDK搬到了云端,具体google如何实现的呢,我们不知道,但是可以肯定的是,一定有开源代码的帮助。GAE公布后很多Java社区也是马上测试和GAE的兼容性。这次分裂影响不大,毕竟大家把自己的网站让google托管的比例不大。 在中国影响为0点几几,毕竟中国网络条件和google都不成熟。
- 未来的分裂 :google使用了Java的语法,扩大了Java程序员,没准其他的人也使用Java,而不叫Java,如Visual J#,如有可能的iPhone SDK for Java(目前还没有出现,给苹果提个醒 )。分裂意味着壮大,意味着Java不再由某个公司把持,意味在Java这个江湖里不再有老大,会变得更加多边。
参考
- 精简JDK的一个实现 http://greenvm.googlecode.com/
- Android: http://www.android.com/
- Harmony:http://harmony.apache.com