我个人对Oracle收购Sun一直很关注,同时对Java的发展动向也是十分的关注,今天我在相关网站再次看到关于InfoQs上看到国外的相关人事对Oracle对Sun未来的规划分析的信息,转载过来,提醒自己,也是提醒所有和笔者一样的Java爱好者。
在经过了将近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此前的做法更注重实效,但现在还很难预测未来的走向。
【编辑推荐】