版本
- 適用於 JDK 23 的 GraalVM (最新)
- 適用於 JDK 24 的 GraalVM (搶先體驗)
- 適用於 JDK 21 的 GraalVM
- 適用於 JDK 17 的 GraalVM
- 封存
- 開發建置
GraalVM 簡介
GraalVM 是一個具有提前 (ahead-of-time) Native Image 編譯功能的高級 JDK。
GraalVM 可加速應用程式效能,同時消耗較少的資源,從而提高應用程式效率並降低 IT 成本。它藉由將您的 Java 應用程式提前編譯為原生二進位檔來實現此目的。此二進位檔較小,啟動速度快 100 倍,提供無預熱的峰值效能,並且比在 Java 虛擬機器 (JVM) 上執行的應用程式使用更少的記憶體和 CPU。透過設定檔導向最佳化和 G1 (Garbage-First) 垃圾收集器,您可以獲得比在 JVM 上執行的應用程式更低的延遲和相當或更好的峰值效能和輸送量。
主要優點 #
GraalVM 的主要優點為:
- 低資源使用率:由 GraalVM 提前編譯的 Java 應用程式需要較少的記憶體和 CPU 才能執行。不會將記憶體和 CPU 週期花費在即時編譯上。因此,您的應用程式需要較少的資源才能執行,並且大規模運作的成本更低。
- 快速啟動:使用 GraalVM,您可以透過在建置時而不是執行時初始化部分應用程式,更快地啟動 Java 應用程式,並立即實現可預測的峰值效能,而無需預熱。
- 精簡封裝:由 GraalVM 提前編譯的 Java 應用程式很小,可以輕鬆封裝到輕量型容器映像中,以實現快速且有效率的部署。
- 提高安全性:GraalVM 藉由排除以下項目來減少 Java 應用程式的攻擊面:無法存取的程式碼 (未使用的類別、方法和欄位)、即時編譯基礎結構,以及建置時初始化的程式碼。GraalVM 的封閉世界假設可防止您的應用程式藉由在執行時停用反射、序列化等動態功能來載入未知程式碼,並且需要在建置時提供此類類別、方法和欄位的明確包含清單。GraalVM 可以在二進位檔中嵌入軟體物料清單 (SBOM),讓您更容易使用常見的安全性掃描器來檢查您的 Java 應用程式中已發佈的常見漏洞和暴露 (CVE)。
- 輕鬆建置雲端原生微服務:熱門的微服務框架 (例如 Micronaut、Spring Boot、Helidon 和 Quarkus) 以及雲端平台 (例如 Oracle Cloud Infrastructure (OCI)、Amazon Web Services (AWS)、Google Cloud Platform (GCP) 和 Microsoft Azure) 都支援 GraalVM。這讓您可以輕鬆建置雲端原生 Java 微服務,這些微服務會編譯為二進位檔、封裝在小型容器中,並在最熱門的雲端平台上執行。
- 使用 Python 和其他語言擴充您的 Java 應用程式:使用 GraalVM,您可以嵌入 Python、JavaScript 等語言來擴充您的 Java 應用程式。
- 使用現有的開發和監視工具:您現有的 Java 應用程式開發和監視工具可與 GraalVM 應用程式二進位檔搭配運作。GraalVM 為 Maven 和 Gradle 提供建置外掛程式,並為 CI/CD 提供 GitHub Actions。GraalVM 支援 Java Flight Recorder (JFR)、Java Management Extensions (JMX)、堆積傾印、VisualVM 和其他監視工具。GraalVM 可搭配現有的 Java 編輯器/IDE 和單元測試框架 (例如 JUnit) 使用。
授權與支援 #
Oracle GraalVM 是根據GraalVM 免費條款及條件 (GFTC),包括早期採用者版本授權授權。在授權中的條件(包括早期採用者版本授權)的限制下,GFTC 旨在允許任何使用者(包括商業和生產用途)使用。允許重新散佈,但不得收取費用。Oracle GraalVM 也可在 Oracle Cloud Infrastructure 上免費使用。如需更多關於 Oracle GraalVM 授權的資訊,請參閱Oracle Java SE 授權常見問題。
GraalVM Community Edition 是從 GitHub 上提供的原始碼建置的開放原始碼專案,並在具有「類路徑」例外的 GNU 通用公共許可證第 2 版下發佈,這些條款與 Java 的條款相同。檢查各個 GraalVM 元件的授權,這些授權通常是特定語言授權的衍生,且可能有所不同。
接下來閱讀的內容 #
- 從安裝指南開始。
- GraalVM 以 Java HotSpot 虛擬機器為基礎。深入瞭解作為 Java 虛擬機器的 GraalVM及其最佳化即時編譯器Graal 編譯器。
- 無論您是 GraalVM Native Image 的新手,還是只有少許使用經驗,請繼續Native Image 入門。建議您瀏覽使用者指南。
- 有興趣將其他語言嵌入 Java 的開發人員,請直接前往嵌入語言文件。
- 有興趣為在 GraalVM 上執行的程式設計語言建置解譯器的開發人員,請繼續前往Truffle 語言實作架構文件。
- 如需深入瞭解 GraalVM 中的安全性考量,請查看安全性指南。
- 如果您在可用的文件中找不到您需要的答案,或有疑難排解查詢,請在Slack 頻道中尋求協助,或提交 GitHub 問題。