事实上,如果稍稍留神一下,我们在过去的几年里注视着Java不断地从一种语言演变成为一个真正的平台。
作者:ginge 来源:Matrix 2008年4月7日
关键字:
敏捷成为主流――测试时代到来了
敏捷(agile)这个名称对大家来说并不新鲜,单元测试与持续化集成也不陌生。不过,2007年似乎是这些实践更加成为主流的年份。你不会碰到一个会议里没有一到两个关注在敏捷上的演示的。再哆嗦几句,瞥一眼2008年度Jolt Award大奖关于综合性和技术性书籍(从2007年甄选的)的最终名单,就可以看出关于单元测试和持续化集成的书籍占有一席之地。然而,更重要的是,不管是享有盛誉的,还是刚刚发展的框架都已经开始宣称它们的架构是多么容易地进行测试了。似乎,开发人员的测试时代终于到来了。
Java成长之痛
Java在不断的成长,不断的扩充,然而它在逐渐变化成为一个平台,而不仅仅是一种语言。不知是好还是坏,独具特性的东西一直在不断的添加进来,以后还将会有,社区会接受特性吗?
然而,一些特性就没有其他特性那样受欢迎了。举个例子来说,注解就很受欢迎――象JUnit4, TestNG, Spring和Google的Guice这些框架,由于对注解的创新的使用,就得到了不少开发人员的青睐。相反的是,到目前为止,人们对范型(在Java 5中引入)并没有保持对其自始至终的热情。
闭包(Closure)未见踪影
如果范型不足以使编程的前景变的灰暗,有人可能会发现当前围绕关于在Java 7 foggy中加入闭包和局部函数提议的争论。虽然我绝不会否认它们是有用的组成部分,只是,将它们增加到Java语言的语义中,概念的复杂性增加只会降低它们的有用性。
例如,在一个闭包的典型参考实现中,找到如下代码,它定义了一个简单的支持整数加法的闭包:
{Integer,Integer=>Integer} plus1 = {Integer x, Integer y => x+y};
非常有趣的是,由于Java天生的对语义要求,语句变的拖沓冗余――用Groovy来重写同样功能,却很容易。例如
plus1 = { x, y -> x+y }
注意到,在Groovy的例子中,类型的缺失无疑使得代码的意图一目了然。当然,Ruby版本也会同样简明扼要。
显然,象动态语言普遍受到欢迎此类的外部力量在不断地影响Java。如果想使用闭包,你完全不必等待Java自带的闭包――Groovy和JRuby对其的支持就已经很优雅。
真正的并发
Java7 值得期待的其他事情是java.util.concurrent包的发布,这个包致力于通过充分利用底层硬件来达到真正的并发。虽然Java已经支持多线程,但是通过对并行性的进一步重视,硬件资源将变的越来越健壮。最终,Java语言也发展的可以应付这些要求。
由JSR 166专家组领导的Java 7将很有可能包含一些新特性,包括名为join-fork的细粒度的并行计算框架。好消息是,看起来这些新特性是崭新的类(和API),与生俱来就不符合句法规则。
奔向RIA
去年,特别是Sun在2007年JavaOne上让JavaFx对公众面世后,RIA(Rich Internet Application)继续让Java Web应用程序开发人员产生莫大的兴趣,。JavaFX产品家族现在由JavaFX Script和JavaFX Mobile组成。
由于开发类Ajax应用的JavaScript无处不在,对 JavaFx的反应显得见仁见智。看起来JavaFX将会加剧本来就已经四分五裂的移动环境之间的裂缝。很多人感觉JavaFX的公告有点操之过急,还有一些人怀疑它究竟是不是一个雾件。不管怎样,Sun进入RIA领域传达了一个长期战略的消息,这会使Java的前景更加光明。
结语
有个非洲谚语说“明天属于那些今天为它准备的人”。因此,Java的未来(至少来年)已经孕育了一段时间了。2008年的大事的很大部分将不仅由JVM本身促成,而且也会随着JRuby和Groovy不断受欢迎,最终得到更多厂商的采纳而形成。由于Google Android的出击和Sun JavaFX Mobile的发布,使用Java开发用户移动应用的前景也好像比以前更加容易到达了。大部分人的注意力将被多核系统的出现吸引过去,期待Java 7 java.util.concurrent包对其的回应。最后,围绕它的开源的Java和商业模型也会不断的成长。