SpringBoot 3.0正式發(fā)布,有這幾個新變化!
?最近幾天,Spring有了重大更新,而且更新的很頻繁,相繼推出了Spring Framework 6.0和SpringBoot 3.0。
Spring把這次升級稱之為新一代框架的開始,下一個10年的新開端,口號喊的挺響亮,但是很多人在看過相關(guān)的Release Note之后,表示并不買賬。
最近發(fā)布之后,有很多網(wǎng)上的資料也都發(fā)了相關(guān)介紹,但是很多文章都是直接翻譯的官方的發(fā)布公告。主要更新就是以下幾個:
- A Java 17 baseline
- Support for Jakarta EE 10 with an EE 9 baseline
- Support for generating native images with GraalVM, superseding the experimental Spring Native project
- Ahead-Of-Time transformations and the corresponding AOT processing support for Spring application contexts
首先,前兩個比較容易理解,主要說的是依賴的服務的版本升級的信息,那就是Spring Framework 6.0和SpringBoot 3.0都要求JDK的版本最低也得是JDK 17;并且底層依賴的J2EE也遷移到了Jakarta EE 9。
雖然JDK 17有很多新的特性,并且也是目前最新的一個LTS版本。
但是其實真正的使用比較多的版本還是JDK 1.8,而Spring徹底拋棄17之前的所有版本?。?!
AOT編譯
Ahead-Of-Time,即預先編譯,這是相對于我們熟知的Just-In-Time(JIT,即時編譯)來說的。
相比于JIT編譯,AOT指的是在程序運行前編譯,這樣就可以避免在運行時的編譯性能消耗和內(nèi)存消耗,可以在程序運行初期就達到最高性能、也可以顯著的加快程序的啟動。
AOT的引入,意味著Spring生態(tài)正式引入了提前編譯技術(shù),相比于JIT編譯,AOT有助于優(yōu)化Spring框架啟動慢、占用內(nèi)存多、以及垃圾無法被回收等問題。?
Spring Native
在Spring的新版本中引入了Spring Native。
有了Spring Native ,Spring可以不再依賴Java虛擬機,而是基于 GraalVM 將 Spring 應用程序編譯成原生鏡像(native image),提供了一種新的方式來部署 Spring 應用。這種部署Spring的方式是云原生友好的。
SpringNative的優(yōu)點是編譯出來的原生 Spring 應用可以作為一個獨立的可執(zhí)行文件進行部署,而不需要安裝JVM,而且啟動時間非常短、并且有更少的資源消耗。他的缺點就是構(gòu)建時長要比JVM更長一些。?