与以往不同的是,2006年对于Java是具有决定性意义的一年。对于Java命运最重要的是Sun决定以GPL许可方式发布其Java实现,它已经发布了HotSpot VM、javac编译器、Java ME。这是许多人在一年前不敢想像的,更没有人想到Sun会选择GPL。
但未来会怎样?这是一个大问题。尽管今年发生了如此多的大事,但它们会向哪里发展并不明显。在这篇文章中,我们将列出一些主要事件,并指出它们在2007年的发展。
开放源代码Java
2006:Sun采用GPLv2发布其Java VM和编译器
2007:期待类库、关注衍生版Java
采用GPL发布Java编译器和VM表明Sun对于开放源代码Java是认真的,但要判定它的结果还为时过早。其一,Sun发布的是早期版Java SE 7,Sun不希望开放源代码影响在12月初发布的Java SE 6。Sun发布的代码还缺乏打造一个有用的Java环境所需要的类库。
提供类库的挑战之一是,必须从数百万行代码中找出Sun可以在Java中使用、但无权以GPL方式发布的代码。其中一些代码已经有了开放源代码版替代品,但是,Sun还必须重新许可、编写、放弃一些代码,这是不可避免的。
除此之外的一大问题是,在采用GPL后,人们会如何“处理”Java。除了与在一些版本的Linux中包含Sun的JVM所牵涉的“政治性”问题和将JVM移植到Sun没有爱好这么做的平台上外,人们还会做出一些不可猜测的事来。HotSpot的动态运行时间库编译器会服务于其它语言的运行时间库吗?开发人员会通过修改编译器或者增添和删除功能构建多种不同版本的Java语言吗?这样的语言可能不能再叫Java了,但它叫什么呢?Java可能被用于域定义语言。
2006:Sun制定并推广Java分销许可(Distro License for Java,DLJ)
2007:Java分销许可还有用吗?
假如你是一家Linux分销商,Sun现在无疑给了你当头一棒。在选定GPL前,Sun向Ubuntus和Debians推荐了Java分销许可,它使平台开发商能够以对它们的平台有意义的方式封装Java SE,使用户能够象apt-get那样获得JVM,而无需人工安装。
有了GPL版Java,DLJ似乎就再无用武之地了,用户能够方便地修改类库、JVM。因此,只有在GPL Java被封装为.dpkg软件包时,DLJ才是必需的。
Java平台
2006:Java SE 6发布
2007:开发人员何时会采用它?
Java SE 6在12月中旬发布,比原定计划略微晚了一些。Java SE 6提供了包括XML Digital Signature在内的一些新API,更新了JDBC 4.0和JAXB 2.0等API,重新设计了图形渲染管道,提高了Swing的Windows的精度GTK。
但是,由于开发人员、部署人员、用户在采用新版Java方面的缓慢,Java SE 6能够立即吸引人们吗?除非需要一些特定的新功能,安装全新的JVM值得吗?尽管性能有所提高━━非凡是对于桌面应用软件而言,但在进入2007年时,SE 6不会成为许多人的缺省Java版本。
2006:Java SE 6支持Java之外的其它语言
2007:我们会在JVM上运行什么语言?
Java SE 6中最有趣的变化是它内置地支持脚本语言。新的javax.script API使我们能够在Java中使用脚本语言引擎,在脚本语言和Java之间交换数据。Java SE 6提供了对javascript的内置支持,第三方厂商肯定会增添更多的脚本语言。
由于Sun在9月份招聘了JRuby的开发人员,最可能的“下一种语言”是Ruby。很显然的是,Sun还在吸引Perl和PHP等其它脚本语言的开发人员。
2006:JDK 7开发工作启动
2007:与closures有关的争论达到顶峰
JDK 7的开发已经在进行,但功能清单的发布还需要一段时间。JDK 7中最有争议的语言功能是在Java语言中增添closures。
在这一问题上有二种观点。其一是closures是否有必要,或者说closures带来的复杂性是否超过了它带来的好处。考虑到closures提供的一些功能已经能够由inner类完成,closures能够减轻的“痛点”可能只不过是证实另一种语言结构是不必要的;第二种观点与closure的语法有关,即它对简洁的期望是否会使Java closures不轻易理解。
2006:Java EE 5发布
2007:EJB 3能够重新赢得开发人员的青睐吗?
Sun在今年夏季发布了Java EE 5以及EJB 3.0企业对象框架。
2007年值得关注的是EJB 3.0能否重新赢得放弃了EJB 2.x的开发人员的青睐。
2006:Java ME在手机上非常普及
2007:GPL ME会改变什么吗?
在三大Java平台中,Java ME最不引人注目,但由于被应用到了手机上,它的应用比SE或EE要广泛得多。尽管有了一个开放源代码CLDC/MIDP平台,是否有人采用它还是个问题。手机制造商可能会选用当前的许可协议,但GPL ME对于其它领域的初创厂商是非常理想的。
Sun之外的情况
2006:作为蓝光技术的一部分,BD-J引起了关注
2007:假如蓝光标准失败,它还会支持BD-J吗?
Java ME的一个另类用途是为蓝光标准提供交互平台。蓝光标准中包含有基于Java的“BD-J”环境,蓝光的支持者认为,该标准需要比DVD提供的交互性更有吸引力的交互性,仅仅靠更好的画面质量不足以确保蓝光标准获得成功。
但是,蓝光能够成功吗?蓝光的主要支持者索尼最近可是麻烦缠身,其中包括使用rootkit软件和问题电池。PlayStation 3采用蓝光技术有助于蓝光标准的普及,但它可能伤害到PS3,有玩家抱怨称蓝光抬高了PS3的价格,拖累了它的普及速度。对于BD-J而言更糟糕的是,索尼的第一款蓝光影碟机并不支持它。索尼声称将在2007年发布的固件升级包中支持BD-J。
由于蓝光标准并非一定能够成功,开发人员是否无需支付巨额许可费就能够获得BD-J SDK这一问题也就不那么重要了。
2006:Eclipse Callisto同时发布了10款产品
2007:除了IDE外,谁还会成功?
所有迹象都表明,Eclipse IDE仍然是Java开发的首要选择。但Eclipse不仅仅只是一个IDE,通过今年夏季发布的Callisto,Eclipse向所有人都表明了这一点。
但是,Eclipse在IDE之外的领域能够获得多大成功仍然有待观察。Eclipse的开发部分能够被用来以RCP方式开发富客户端应用程序,但不清楚会有多少开发人员采用这种模式。Eclipse的Standard Widget Toolkit(SWT)被认为能够解决Swing的问题,但经过多年开发后,它的普及程度与Swing相当━━也就是说不太普及。2007年SWT能够大规模地进驻桌面领域呢?它和Swing还是只是“小池塘里的大鸭子”?