更快更省:帶有新AOT引擎的Spring Native 0.11 釋出 - spring.io

banq發表於2021-12-10

與 Spring Native 0.10 相比,Spring Native 0.11 平均減少了20%到26% 的記憶體佔用空間!Spring Native 0.11 的啟動時間快了16%到35%!

我很高興代表團隊和所有做出貢獻的人宣佈Spring Native 0.11的釋出,它為 Spring Boot 2.6 提供了原生支援。這個雄心勃勃的版本是 Spring 團隊五個月辛勤工作的結果,他們一直致力於全新的架構,將 Spring 對使用 GraalVM 建立原生可執行檔案的支援提升到一個新的水平。你已經可以在start.spring.io上嘗試了!

最大的變化無疑是引入了新的 AOT 引擎,該引擎在構建時對 Spring 應用程式進行深入分析,以轉換和優化應用程式並生成所需的 GraalVM 本機配置。這些轉換由 Maven 和 Gradle Spring AOT 外掛執行。

更快更省:帶有新AOT引擎的Spring Native 0.11 釋出 - spring.io

深入瞭解一下,AOT 引擎會在構建時評估條件,以生成優化的應用程式上下文和專門為您的應用程式設計的 Spring 工廠(Spring Boot 背後的外掛系統)。在實踐中,這意味著:

  • 在執行時執行的 Spring 基礎設施更少
  • 在執行時評估的條件更少
  • 更少反射

 

減少記憶體佔用

AOT 引擎的一個關鍵優勢是它支援本機可執行檔案的較小記憶體佔用,因為本機配置更準確,需要的反射更少,並且在執行時需要更少的 Spring 基礎設施。

與 Spring Native 0.10 相比,Spring Native 0.11 平均減少了20%到26% 的佔用空間!

 

更快的啟動

與 0.10 相比,Spring Native 0.11 的啟動時間快了16%到35%,因為某些處理已從執行時轉移到構建時。由於我們無法在本次小版本更新中對 Spring Boot 和 Spring Framework 的內部架構進行微調,因此仍有改進的空間。

 

JVM 上的 AOT

對將在 JVM 上執行的應用程式執行 AOT 轉換有兩個主要好處。

例如,第一個是能夠輕鬆除錯將在 IDE 中的 JVM(主應用程式或測試)本機上執行的程式碼。

第二個優勢是更高的效率。目前,它的佔據空間減少了大約4%到17%。

 

Bellsoft Liberica NIK

Bellsoft Liberica Native Image Kit (NIK) 是一個基於GraalVM 開源儲存庫和 Liberica JDK的原生映象編譯器發行版。從 Spring Native 0.11 開始,它預設用於 Buildpacks 原生支援,這與 JDK 端一致,預設使用 Liberica JDK。它也可以通過使用其SDKMAN整合或通過下載和安裝在本地安裝。

今年早些時候,該團隊與 BellSoft 一起宣佈,使用 Liberica Native Image Kit 的 VMware 客戶可以將他們的 Spring 應用程式作為本機可執行檔案執行,並確信它們得到了完全支援。

 

Spring Boot 3 一流的原生支援

Spring Native 0.11 實現了為 Spring Boot 提供成熟的原生選項的目標。Spring 團隊現在可以專注於下一個主要步驟:將原生支援作為 Spring Framework 6、Spring Boot 3 和相關組合專案的一部分進行改進。

AOT 和原生將成為 Spring Boot 3 和 Spring Framework 6 的主旋律。

計劃在Spring Boot 3 里程碑 2中開始提供開箱即用的 GraalVM 本機支援,目標是 2022 年 3 月下旬,利用我們在 Spring Native 工作中學到的所有知識。一般可用性計劃於 2022 年末推出。

 

相關文章