Oracle GraalVM 是一種高效能 JDK,可以使用替代的即時 (JIT) 編譯器來提高 Java 和 JVM 型應用程式的效能。它可降低應用程式延遲、減少資源回收時間並獲得 24 小時全年無休的 Oracle 客戶服務部,進而改善尖峰傳輸量。
此外,還有原生映像檔公用程式,可預先編譯 Java 位元組碼 (AOT),並為某些應用程式產生幾乎立即啟動,並使用極少的記憶體資源。
GraalVM 於 2011 年開始在 Oracle Labs 擔任研究專案,建立能夠以高效能執行多種程式設計語言的程式執行階段平台。GraalVM 專案的核心是進階最佳化 GraalVM 編譯器,會用來作為 Java Virtual Machine (JVM) 的即時 (JIT) 編譯器,或由 GraalVM 原生映像檔功能,將 Java 位元組碼提前編譯至原生機器程式碼。GraalVM 的 Truffle 語言實作架構可與 GraalVM 編譯器搭配運作,以優異的效能來實作 JavaScript、Python、Ruby 及 JVM 上其他支援的語言。
在 JIT 模式中使用 GraalVM 時,JVM 會使用 GraalVM JI 編譯器,在應用程式執行時從 Java 位元組碼建立平台特定的機器程式碼。編譯會在程式執行期間以增量方式執行,對經常執行的程式碼套用額外最佳化。這個方法可確保熱點中的程式碼會因積極的內嵌、部分脫逃分析及其他進階最佳化而極快的執行。某些最佳化會減少資源回收器上負載的物件配置。這有助於提升長時間執行之應用程式的尖峰效能。
GraalVM 原生映像檔公用程式也可以編譯 Java 位元組碼,以產生原生機器可預先執行 (例如建置時)。這些可執行檔幾乎立即啟動,並使用 JVM 上執行之相同 Java 應用程式所將會使用的記憶體片段。原生執行檔也精簡,因為它們只包含應用程式所需的類別、方法及相依程式庫。
GraalVM 也支援 Truffle 語言實作架構所需的多語言互通性。Truffle 可讓以支援語言編寫的程式使用多語言程式庫。例如,JavaScript 程式會呼叫 Ruby 方法及共用值而不進行複製。在 JVM 上執行時,Truuffle 會和 GraalVM 編譯器合作,將支援的語言編譯為原生機器程式碼,獲得最佳效能,就像 Java 一樣。
深入了解 GraalVM 編譯器、閱讀 GraalVM 以取得摘要電子書
GraalVM 的編譯器包含多項最佳化演算法,可大幅改善效能,降低資源使用量。GraalVM 的原生映像檔功能支援多種進階功能,包括 G1 垃圾回收器、壓縮指標,以及可協助編譯器產生更高效程式碼的設定檔引導最佳化。
GraalVM 包含在 Java SE 產品中,無需額外付費。它包括 24 小時全年無休的 Oracle Support,其中包含安全性修正和重要路徑更新,可預測的效能和可靠性。如需將 Java 移轉至雲端,使用者可以在 Oracle Cloud Infrastructure (OCI) 上免費使用 GraalVM。
GraalVM 可以讓開發人員建立更高效的程式碼,為雲端或混合環境提供更好的隔離效果與靈活度。以下是目前提供更多企業使用 GraalVM 的部分原因:
GraalVM 創新技術可幫助 Java 程式碼配合目前的運算需求,並提供更高的效能,讓您快速因應客戶需求。進階的最佳化處理程式可改善尖峰傳輸量。它也可透過將物件配置最小化來最佳化記憶體使用量,減少執行資源回收的時間。以 JIT 模式執行的 GraalVM 可以將效能提升高達 50%。這使得記憶體變得更快,因此您可以在相同的基礎架構上執行其他工作負載,並降低 IT 成本。
建立雲端原生應用程式Oracle GraalVM 的原生映像檔公用程式可提前將位元組碼 Java 應用程式編譯為機器二進位檔。與在 JVM 上執行相比,原生執行檔的啟動速度快了近 100 倍,使用的記憶體減少多達 5 倍。
隨著組織將工作負載搬移至雲端,並在使用系統資源的小時內付費,GraalVM 可協助節省營運成本。這些成果讓 GraalVM 產生的原生執行檔適用於微服務部署、微服務架構 (例如 Helidon、M Micronaut、Quarkus 及 Spring Boot) 所支援的區域。
開發多語言計畫並提升生產力您可以在 JVM 上執行 Java 和其他語言 (例如 JavaScript),以獲得卓越的效能。Oracle NetSuite 的 SuiteScript 是一種擴充語言,讓一般使用者能夠自訂在 NetSuite 執行的應用程式。Oracle GraalVM 讓 NetSuite 能夠内嵌 Truffle 型 JavaScript 執行時期,從而將 JavaScript 編譯為比在 JVM 上執行的 SuiteScript 快 4 倍的機器代碼。
GraalVM 包含一款進階最佳化編譯器,可在程式執行 JIT 時產生機器程式碼,以提高 Java 應用程式效能。由於提前編譯,原生映像檔可快速啟動並耗用較少的記憶體,因此適用於雲端原生部署。它支援多語言計畫,讓開發者能夠使用最佳資源庫解決業務問題 (不論其撰寫的語言為何),以提升生產力。