概述
OpenJ9 是一款由 IBM 開發并開源的 Java 虛擬機(JVM),現由 ?Eclipse 基金會管理(名為 ?Eclipse OpenJ9)。它旨在提供高性能、低內存消耗和快速啟動時間,特別適用于云原生和容器化環境。
關鍵特性
-
低內存占用
優化內存管理,減少堆外內存使用,適合資源受限場景(如微服務、Kubernetes)。 -
?快速啟動
通過共享類緩存(Shared Classes Cache)和即時編譯(JIT)優化,縮短應用啟動時間。? -
靈活的垃圾回收(GC)?
支持多種 GC 策略:- Gencon:分代收集,適合短期對象。
- Balanced:針對大堆內存優化,減少暫停時間。
- Metronome:實時應用的低延遲 GC。
?
-
AOT(提前編譯)?
將字節碼預編譯為本地代碼,減少運行時開銷。 -
兼容性
遵循 Java SE 標準,與 HotSpot JVM 兼容,無需修改代碼即可切換。
歷史背景
- 源自 IBM 的 ?J9 VM?(用于 IBM Java 產品),2017 年開源并捐贈給 Eclipse 基金會。
- 與 OpenJDK 結合,形成完整的 Java 運行時(如 ?AdoptOpenJDK 或 ?IBM Semeru Runtime)。
?使用場景
- 云原生應用:容器化部署時節省內存。
- Serverless 函數:快速啟動提升冷啟動性能。
- ?長期運行服務:通過 GC 調優降低延遲。
這里,我們以OpenJ9 JDK 17為例 ,詳細說明一下,如何在Ubuntu 24.04上安裝該JDK。
下載
- https://adoptium.net/
- jdk-21.0.6+7_openj9-0.49.0-JDK-February 13, 2025
- jdk-17.0.14+7_openj9-0.49.0-JDK-February 13, 2025
- jdk-11.0.26+4_openj9-0.49.0-JDK-February 13, 2025
安裝
解壓
mkdir -p ~/.local/java/openj9/jdk17
lwk@qwfys:~/Downloads/.tmp$ ll -h
total 228M
drwxrwxr-x 2 lwk lwk 4.0K Mar 29 02:08 ./
drwxrwxr-x 9 lwk lwk 4.0K Mar 29 02:08 ../
-rw-rw-r-- 1 lwk lwk 228M Mar 29 01:34 ibm-semeru-certified-jdk_x64_linux_17.0.14.0.tar.gz
lwk@qwfys:~/Downloads/.tmp$
tar -zxf ibm-semeru-certified-jdk_x64_linux_17.0.14.0.tar.gz
lwk@qwfys:~/Downloads/.tmp$ ll
total 233120
drwxrwxr-x 3 lwk lwk 4096 Mar 29 02:08 ./
drwxrwxr-x 9 lwk lwk 4096 Mar 29 02:08 ../
-rw-rw-r-- 1 lwk lwk 238698266 Mar 29 01:34 ibm-semeru-certified-jdk_x64_linux_17.0.14.0.tar.gz
drwxr-xr-x 9 lwk lwk 4096 Feb 6 02:27 jdk-17.0.14+7/
lwk@qwfys:~/Downloads/.tmp$
mv jdk-17.0.14+7 ~/.local/java/openj9/jdk17
配置
tee -a ~/.bashrc <<-'EOF'
export JAVA_HOME=/home/lwk/.local/java/openj9/jdk17
export PATH=${JAVA_HOME}/bin:$PATH
EOF
查看
lwk@qwfys:~$ java -version
java version "17.0.14" 2025-01-21
IBM Semeru Runtime Certified Edition 17.0.14.0 (build 17.0.14+7)
Eclipse OpenJ9 VM 17.0.14.0 (build openj9-0.49.0, JRE 17 Linux amd64-64-Bit Compressed References 20250121_885 (JIT enabled, AOT enabled)
OpenJ9 - 3c3d179854
OMR - e49875871
JCL - 675a4171160 based on jdk-17.0.14+7)
lwk@qwfys:~$
參考文獻
- Adoptium? Marketplace