Oracle數據庫對Sun未來規劃是什么樣?
我個人對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此前的做法更注重實效,但現在還很難預測未來的走向。
【編輯推薦】