openj9


     下面部分轉自:https://www.jianshu.com/p/916b5fcd0140

        

  OpenJ9,OMR與OpenJDK

          Eclipse OpenJ9 是一個 Java 虛擬機(JVM),它是運行 Java 應用程序的引擎,而 OpenJDK 是一個完整的開發工具包,包含其他組件,如Java 類庫以及 JVM。默認情況下,OpenJDK 使用名為 Hotspot 的 JVM。簡單地說,OpenJ9 是一個 JVM 替代方案,可將其作為 OpenJDK 二進制文件的一部分。

        而OpenJ9其自身是基於IBM開源的OMR項目所構建,OMR項目由一個高度集成的開放源碼C和c++組件,可用於構建大量的語言,運行時支持許多不同的硬件和操作系統平台。這些組件包括但不限於:內存管理,線程處理,平台端口(抽象)庫,診斷支持,監控支持,垃圾收集和本地實時編譯。OMR的意圖在於讓實現語言的人能夠重用IBM在Java運行時方面所投入的數百開發人年所取得的成果,能夠受益的包含已有的語言如Ruby、Python、Javascript等等,它還能加快新語言的創建過程。

        OpenJ9,OMR和OpenJDK的關系如下圖所示:

  

在上圖中,箭頭起點表示了上游的開源項目,而這點可以通過運行java -version的輸出可以看到,如下:

openjdk version "1.8.0_162"

OpenJDK Runtime Environment (build 1.8.0_162-b12)

Eclipse OpenJ9 VM (build openj9-0.8.0, JRE 1.8.0 Linux amd64-64 Compressed References 20180315_120 (JIT enabled, AOT enabled)

OpenJ9   - e24e8aa9

OMR      - 3e8296b4

JCL      - ee1e77df1d based on jdk8u162-b12)


OpenJ9的性能測試

  讓我們來看看OpenJ9給出官方測試結果,在測試中所使用的負載是daytrader7這個基准測試項目,其地址是:https://github.com/wasdev/sample.daytrader7,它是一個圍繞在線股票交易系統范例構建的應用程序,該應用程序允許用戶登錄,查看其投資組合,查詢股票報價以及買入或賣出股票股票;借助基於Web的加載驅動程序(如Apache JMeter),DayTrader提供的實際工作負載可用於衡量和比較各種供應商提供的Java平台企業版(Java EE)應用程序服務器的性能。除了完整的工作負載之外,應用程序還包含一組用於各種Java EE組件和通用設計模式的功能和性能測試的原語。 DayTrader的新設計涵蓋Java EE 7,包括新的WebSockets規范。其他Java EE特性包括JSP,Servlet,EJB,JPA,JDBC,JSF,CDI,Bean驗證,JSON,JMS,MDB和事務(同步和異步/兩階段提交)。

  其性能的測試結果查看:https://www.eclipse.org/openj9/oj9_performance.html#g1,

  

  從這些測試結果中,與Hotspot相比OpenJ9有如下的優勢:

   1)啟動時的內存占用減少了66%

   2)負載穩定后的內存占用減少了63%

  3)啟動時間縮短了42%

  4)吞吐量相近

  5)在CPU受限的環境中能更快的達到最大吞吐量


  在 Java 的世界中,大多人都熟悉 OpenJDK。這是一個完全的 JDK 實現,包括對 HotSpot JVM 引擎的實現。不是很多開發者了解或嘗試選擇 HotSpot。詢問周圍的同事后,他們都記得 JRockit 這個名字,但沒有人提起 IBM J9 及(或) Eclipse OpenJ9。

  我已經了解到了 OpenJ9 擅長於內存管理,而且在雲/容器中的使用上已經經過了精簡。OpenJ9 是一個獨立的對 JVM 的實現。它源於 IBM 的 Java SDK/IBM J9,它的歷史能追溯到 OTI Technologies Envy Smalltalk(感謝 Dan Heidinga!)。

  隨着微服務使用率的提升(而且 Java 中的大多數服務都不是特別小)。我認為它將會再次變成一個熱門話題!

 

  下面部分轉自: https://www.jianshu.com/p/621ca456822f

  OpenJ9主要有如下幾個組件組成:

  1)Class loader:類加載器

  2)Interpreter:解釋器,負責解釋字節碼

  3)Platform port library layer:操作系統和JVM直接的抽閑層

  4)Garbage collector (GC):垃圾回收器

  5) Just-In-Time (JIT) compiler (codenamed Testarossa or TR JIT in J9):及時編譯器

  6) JVM Application Programming Interface (API):應用編程接口

  7) Monitoring and Diagnostic component:監控診斷組件

  如下圖所示:

                            OpenJ9架構圖

       類加載器和解釋器是JVM的基本組件,通常從應用程序啟動時就開始執行,而 平台端口庫層提供JVM和底層操作系統之間的抽象層,允許在代碼庫中的一個位置管理大部分平台特定的細節,如文件I / O和內存分配。

       openJ9 VM可以配置許多不同的Java類庫(JCL)版本,以生成不同版本的IBM SDK for Java,這樣就可以在OpenJ9的JVM上支持java8.0,9.0和10






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM