今天我們要介紹的是spring-native,它可以讓你的spring boot程序,體驗(yàn)graalvm編譯器的特性,把你的應(yīng)用直接編譯成native的!
不需要再安裝jre,你的應(yīng)用程序?qū)⒑蚭xe一樣,直接在目標(biāo)機(jī)器上運(yùn)行!而且啟動(dòng)時(shí)間不到1秒鐘 。
要體驗(yàn)這個(gè)功能,我們從spring boot拿一個(gè)demo 。
https://start.spring.io/ 在這里選擇這個(gè)實(shí)驗(yàn)性的功能SpringNative 。下載下來之后,就可以使用maven進(jìn)行打包測(cè)試 。
mvn spring-boot:build-imagegradle bootBuildImage 看一下這無敵的啟動(dòng)速度…. 0.038秒… 幾乎是瞬時(shí)的!
神奇!
這一切,都得益于graalvm編譯器 。不過,你至少要把JDK升級(jí)到11才能用,也算是堆Java8用戶的一種別樣的驅(qū)動(dòng)吧 。
當(dāng)然,只有在2.4.5以后的SpringBoot版本中,才支持Spring Native 。
GraalVM是什么? graalvm也是oracle的項(xiàng)目,它的代碼地址是:
mvn spring-boot:build-imagegradle bootBuildImage 項(xiàng)目地址是:
www.graalvm.org/docs/ graalvm是一個(gè)想要統(tǒng)一天下的虛擬機(jī) 。因?yàn)樗啾容^與HotSpotVM,還能夠運(yùn)行其他語言比如ruby,python,php等 。
它是一個(gè)新的JVM,不同的是由于做了適配,它能夠讓不同的語言跑在同一個(gè)vm下面 。
看看下面這張圖,就知道graalvm的野心有多大 。
這還沒完,它最吸引人的地方就在于,它能夠?qū)?yīng)用代碼,直接打包成native的二進(jìn)制可執(zhí)行代碼,運(yùn)行時(shí)連JVM都不需要了!
大家都知道,native和跑在vm里完全是兩個(gè)檔次,否則也不會(huì)有jit這么牛x的技術(shù)存在了 。連android和ios都知道,native的應(yīng)用流暢性比跑在monotouch上或者h(yuǎn)ybrid上高很多很多,對(duì)于追求性能的企業(yè)級(jí)應(yīng)用來說,這個(gè)功能就更加實(shí)用一些 。
【教你創(chuàng)建一個(gè)普通的 Java 項(xiàng)目 java在線運(yùn)行工具】讓人驚訝的是,它為各個(gè)語言實(shí)現(xiàn)了一個(gè)可以溝通的橋梁 。比如我看好js中的某個(gè)庫,不需要重新開發(fā)一個(gè)了,在Java中直接就可以用 。這是因?yàn)椋琯raalVM開發(fā)了跨語言互操作協(xié)議,能保證跨語言的互操作性 。
現(xiàn)在這個(gè)功能,大多數(shù)平臺(tái)已經(jīng)支持了 。
public class Example {public static void main(String[] args) {String str = "Native Image is awesome";String reversed = reverseString(str);System.out.println("The reversed string is: "reversed);}public static String reverseString(String str) {if (str.isEmpty())return str;return reverseString(str.substrin
猜你喜歡
- 運(yùn)動(dòng)會(huì)加油稿20字左右 運(yùn)動(dòng)會(huì)加油稿怎么寫
- 糯米面怎么和面 簡(jiǎn)單方法教你輕松搞定
- 電餅鐺1200w和1500w哪一個(gè)好用
- 香腸怎么洗 香腸洗干凈的方法
- 一個(gè)月的鴨子可以吃大米嗎?
- 豆角有點(diǎn)老能做干豆角嗎 教你選擇怎樣的豆角可以做干豆角?
- 廣西百色鴨醬制作方法 教你廣西百色鴨醬制作方法
- 三點(diǎn)水一個(gè)郭怎么讀 三點(diǎn)水一個(gè)郭有幾個(gè)音
- 描寫一個(gè)人美麗的短句子 描寫一個(gè)人美麗怎么寫
- 紅曲米粉危害 教你紅曲米粉的正確使用方法
