你的下一代Java發(fā)行版之選,GraalVM宣布全面免費(fèi)使用,提供數(shù)倍的性能提升

????2023年6月14日,Oracle宣布其開發(fā)的Java分支Oracle GraalVM現(xiàn)在遵循許可 https://www.oracle.com/downloads/licenses/graal-free-license.html 可免費(fèi)使用[1]。與之前區(qū)分社區(qū)版和企業(yè)版的方式不同,現(xiàn)在不再區(qū)分版本且全部免費(fèi)。
????GraalVM是一個(gè)高性能的JDK,可用于加速運(yùn)行用Java和其他JVM語言編寫的應(yīng)用程序。提供兩種運(yùn)行Java程序的方式:在HotspotVM中的Graal Just-In-Time(JIT)編譯器,以及Ahead-Of-Time(AOT)的本地可執(zhí)行文件。
????GraalVM相對于其他JDK,具有預(yù)先編譯(AOT)?將基于 Java 和 JVM 的代碼轉(zhuǎn)換為本機(jī)平臺可執(zhí)行文件(Native Image)的技術(shù),這將意味著通過Native Image編譯轉(zhuǎn)換后的程序無需JVM即可運(yùn)行。Oracle聲稱生成的二進(jìn)制文件比JAR包更小,啟動(dòng)速度快100倍,無需預(yù)熱即可提供峰值性能,并且比運(yùn)行在Java虛擬機(jī)(JVM)上的應(yīng)用程序使用更少的內(nèi)存和CPU。(注:該功能仍在Beta中,目前已有Micronaut, Spring, Quarkus, Helidon, H2, GraphQL, MariaDB, Netty, MySQL, Neo4j, PostgreSQL, Testcontainers, Thymeleaf等應(yīng)用程序提供官方支持)。
????即使在不使用AOT將應(yīng)用程序編譯為二進(jìn)制文件的情況下,Graal 編譯器(JIT)通過獨(dú)特的代碼分析和優(yōu)化方法為運(yùn)行在 JVM 上的程序提供優(yōu)化的性能。它包括多種優(yōu)化算法(稱為“階段”),如激進(jìn)內(nèi)聯(lián)、多態(tài)內(nèi)聯(lián)等。Graal 編譯器能夠消除昂貴的對象分配,從而確保高度抽象程序的性能優(yōu)勢。使用更多抽象和現(xiàn)代 Java 功能(如 Streams 或 Lambdas)的代碼將獲得更大的加速。低級代碼或匯聚到 I/O、內(nèi)存分配或垃圾收集等方面的代碼將獲得較小的改進(jìn)。因此,在 GraalVM 上運(yùn)行的應(yīng)用程序需要花更少的時(shí)間進(jìn)行內(nèi)存管理和垃圾收集。
????相對于已有的OpenJDK,原Graal社區(qū)版提供1.04倍的性能提升,Graal企業(yè)版提供1.3倍的性能提升(基于Renaissance Suite的測試結(jié)果)?,F(xiàn)在普通用戶也可免費(fèi)使用GraalVM企業(yè)版的所有功能,即使在不調(diào)整代碼的情況下,替換原有的JVM也能有不錯(cuò)的表現(xiàn)。
[1] GraalVM 官網(wǎng),?https://www.graalvm.org
[2] GraalVM 開源, https://github.com/oracle/graal