- 適用於 JDK 23 的 GraalVM (最新版)
- 適用於 JDK 24 的 GraalVM (搶先體驗版)
- 適用於 JDK 21 的 GraalVM
- 適用於 JDK 17 的 GraalVM
- 封存
- 開發建置
GraalVM 作為 Java 虛擬機器
GraalVM 是基於 Java HotSpot 虛擬機器,因此任何在 Java HotSpot 虛擬機器上執行的應用程式,也能在 GraalVM 上執行。
GraalVM 包含一個以 Java 撰寫的進階編譯器,稱為Graal 編譯器。在執行階段,就像任何其他 Java 虛擬機器 (JVM) 一樣,GraalVM 會載入應用程式並分析其程式碼,以偵測效能瓶頸或熱點。GraalVM 將效能關鍵程式碼傳遞給 Graal 即時 (JIT) 編譯器,該編譯器會將其編譯為機器碼,然後傳回。
Graal 編譯器可以透過其獨特的程式碼分析和最佳化方法,提高以 Java、Scala、Kotlin 或其他 JVM 語言撰寫的應用程式效率和速度。例如,它能移除昂貴的物件配置,從而確保高度抽象化的應用程式具有效能優勢。如需有關與平台無關的編譯器最佳化的更多資訊,請參閱 GraalVM 社群版 GitHub 儲存庫中的 CEOptimization 列舉
。
Graal (JIT) 編譯器現在也與 Java HotSpot 虛擬機器整合。如需了解更多資訊,請參閱 Graal 編譯器章節。
互通性 #
GraalVM 還包含 Truffle 語言實作架構,這是一個以 Java 撰寫的函式庫,用於建置程式語言的解譯器,然後在 GraalVM 上執行。這些「Graal 語言」因此可以受益於 Graal 編譯器的最佳化功能。此類編譯的流程如下:
- 由抽象語法樹 (AST) 表示的 Truffle 架構程式碼和資料會被部分評估,以產生編譯圖。當此類 AST「熱」(即被多次呼叫)時,會排程由編譯器進行編譯。
- 編譯圖會由 Graal 編譯器最佳化,以產生機器碼。
- JVMCI 會將此機器碼安裝在 JVM 的程式碼快取中。
- 一旦可用,AST 會自動將執行重新導向至已安裝的機器碼。
如需有關與其他程式語言互通性的更多資訊,請參閱多語言程式設計和嵌入語言指南。
預先編譯 #
除了 Truffle 架構之外,GraalVM 還將其編譯器整合到進階的預先 (AOT) 編譯技術 (Native Image) 中,該技術會將 Java 和基於 JVM 的程式碼轉譯為原生平台可執行檔。這些原生可執行檔幾乎立即啟動,更小,並且消耗的資源少於 JVM 對應程式,使其非常適合雲端部署和微服務。如需有關 AOT 編譯的更多資訊,請參閱 Native Image。