全景透视Oracle对Sun的未来开源规划

在经过了将近9个月的漫长等待后,Oracle终于获得欧盟的批准成功完成对Sun的收购。近日Oracle宣布了对Sun技术与平台的未来规划。  

Java、JVM及JVM上的各种语言

Oracle产品开发高级副总裁Thomas Kurian说,Oracle计划集成Sun HotSpot与Oracle JRockit Java虚拟机;他又补充到,Oracle打算"振兴"Java开发者社区并将Java编程模型的触角延伸到新近涌现的应用开发范式上来。比如说,Oracle计划增加模块化特性、为Java SE增加多核处理支持、为Java ME增加新的特性,如多点触摸等。

InfoQ联系到了Allex Miller以了解Oracle对JVM的规划:

我感觉Oracle想将BEA LiquidVM "JVM on a hypervisor"技术中的精华部分整合到现有的HotSpot代码中;当然了,虚拟化是JRockit JVM中最有意思,也是最棒的部分,非常迎合当前的虚拟化、云、集群等趋势,可以通过这些手段管理计算机资源,相对于IBM J9 JVM来说,这些内容也是极具竞争力的。

我也觉得移除permgen并使用thread-local的GC非常好。thread-local的GC指的是对逃逸分析(escape analysis)和堆栈分配(stack allocation)的优化,而Hotspot已经在这方面做了很多工作。大多数程序所创建的临时对象都用在单独的线程上下文中,很少被其他线程所用。这样,我们就可以直接在栈上为这些对象开辟内存空间(这么做更快),无需使用堆,也不必使用常规的GC手段进行对象检测与移除了(这么做会降低GC的次数,进而提升效率)。

对permgen的改进亟须解决一个问题:像Groovy或是JRuby这样的语言会在执行期动态生成大量的小类(small classes)以提供动态特性,而随着JVM上动态语言的不断增多,该问题也变得越来越严重。这些类污染了Java内存中特定的"permgen"部分而且难以回收,导致了严重的内存问题。JSR 292的invokedynamic就是为了解决该问题的:动态语言可以通过该指令在运行期直接链接到调用地址上,因此避免了生成大量内部类的烦恼。

我认为最好的处理方式并不是消灭掉这些JVM,而是取其精华,弃其糟粕。这些工程团队都有一些优秀的人才,他们做出了很多创新性的工作,我希望他们能在这个领域继续做下去,只有这样JVM才能继续充当老大的角色,吸引众多具有开创性的新语言,如Scala、 Clojure、Groovy及JRuby等。

Oracle对JCP的未来及其在Java 7中所扮演的角色所谈甚少,来自RedMonk的Stephen O‘Grady指出:

我觉得Oracle对JCP的态度要比Sun此前的做法更注重实效,但现在还很难预测未来的走向。

MySQL

Oracle首席开源架构师Edward Screven说公司将会一如既往地支持MySQL数据库的发展,Oracle将MySQL看作是对其核心数据库技术的有益补充而非竞争对手。 Oracle CEO Larry Ellison强调说,公司将会做出更大的努力改进MySQL,力度甚至会超过MySQL以前的投入,但却没有提到Sun和开源社区。Oracle将为 MySQL建立一个独立的销售团队,同时增强其与Oracle其他软件应用之间的兼容性。

JavaFX与RIA技术

Oracle在声明中再一次强调将会加大对JavaFX的投入力度,同时DHTML、JavaScript、 Java及JavaFX的整合也是未来的一个重中之重。此前Oracle曾终止了BEA打算绑定Adobe Flash/Flex开发工具的计划,现在的这个声明终于填补了该沟壑,来自ZDNet的Tony Baer指出:

我们不难发现JavaFX在Oracle RIA计划中所占据的重要地位;它填平了Oracle终止BEA绑定Adobe Flash/Flex开发工具计划所导致的RIA鸿沟。实际上,Oracle对RIA的态度着实令人迷惑,因为ADF可以支持任何框架的客户端显示,而 JavaFX现在却变成了Oracle自己的东西。

JavaFX的拥护者,同时也是开发者Jim Weaver对Oracle支持JavaFX平台的举措信心十足:

今天的声明更令我坚信JavaFX将会继续发展下去,会有越来越多的应用选择JavaFX作为RIA平台的。目前JavaFX至少面临三个大的挑战,我相信Oracle会全力以赴迎接这些挑战的。