Windows下使用Graalvm將Springboot應(yīng)用編譯成exe大大提高啟動和運行效率(推薦)
GraalVM安裝
GraalVM安裝
安裝
請前往GraalVM官網(wǎng) 下載 GraalVM Community 22.3,注意當(dāng)前支持的Springboot的GraalVM版本必須是22.3
筆者這里下載的Java版本為17,如下圖

安裝GraalVM的方法與安裝JAVA方法大致相同,GraalVM中包括了JDK(無需再次安裝JDK),同時還需要安裝native-image工具(后續(xù)下載)
配置環(huán)境變量



使用命令查看是否安裝graal vm成功
java -version

native-image工具安裝
這里下載的文件(同GraalVM下載位置下方的release文件)為native-image-installable-svm-java17-windows-amd64-22.3.0.jar如下圖所示

下載完成之后在文件目錄運行以下命令進行安裝
- gu install xxxx.jar(同下載的工具鏡像,網(wǎng)絡(luò)下載) - gu install -L xxxx.jar(同下載的工具鏡像,本地文件)

使用以下命令查看是否安裝成功
gu list

native-image

Visual Studio安裝
編譯native image必須依賴VC++的編譯環(huán)境,這里必須使用微軟官方的vc++編譯工具Visual Studio,筆者這里使用的最新版本2022Visual Studi官網(wǎng)
To use Native Image on Windows, install Visual Studio and Microsoft Visual C++ (MSVC). There are two installation options: * Install the Visual Studio Build Tools with the Windows 10 SDK * Install Visual Studio with the Windows 10 SDK You can use Visual Studio 2017 version 15.9 or later. The `native-image` builder will only work when it is run from the **x64 Native Tools Command Prompt**. The command for initiating an x64 Native Tools command prompt varies according to whether you only have the Visual Studio Build Tools installed or if you have the full Visual Studio 2019 installed.
從上可知,Visual Studio 2017 version 15.9 or later均可
打開Visual Studio Installer,勾選如下圖中三個組件

安裝完成后,需要配置VC++的編譯環(huán)境變量PATH,INCLUDE,LIB
LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0\ucrt\x64;D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.16.27023\lib\x64 INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared;D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.16.27023\include PATH=D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64



Springboot應(yīng)用初體驗
創(chuàng)建項目


運行項目
調(diào)試運行,正常啟動

編譯運行
編譯

如果出錯選擇下面的,或者在編譯插件中重新配置

如果編譯都不行,用插件編譯之前現(xiàn)在console執(zhí)行以下命令
./mvnw -DskipTests=true -Pnative clean package
編譯完成之后在target里面查看文件

運行



運行對比
jar(JVM)本地exe(native image)文件大小18M69M啟動耗時1.183s0.098s內(nèi)存占用106M46m
根據(jù)上述對比結(jié)果,盡管是一個最簡單的springboot程序,但在啟動耗時上native具有明顯的優(yōu)勢,達到毫秒級,占用內(nèi)存少了一半多。
由于是一項新技術(shù),其推廣和普及肯定必定需要一段時間(畢竟我們還在JDK1.8,哈哈),但在一些新的小型應(yīng)用中,完全可以試試手,畢竟盡量native用不了,還有jvm可以兜底,我們并需要為此做額外的工作。
最近,希望java web能通過native的特性,真正的適配云原生環(huán)境。
到此這篇關(guān)于Windows下使用Graalvm將Springboot應(yīng)用編譯成exe大大提高啟動和運行效率(推薦)的文章就介紹到這了,更多相關(guān)Windows使用Graalvm將Springboot編譯成exe內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatisPlus使用@TableField注解處理默認(rèn)填充時間的問題
這篇文章主要介紹了MyBatisPlus使用@TableField注解處理默認(rèn)填充時間的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
Spring Boot REST國際化的實現(xiàn)代碼
本文我們將討論如何在現(xiàn)有的Spring Boot項目中添加國際化。只需幾個簡單的步驟即可實現(xiàn)Spring Boot應(yīng)用的國際化,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-10-10
MybatisPlus處理四種表與實體的映射及id自增策略分析
在最近的工作中,碰到一個比較復(fù)雜的返回結(jié)果,發(fā)現(xiàn)簡單映射已經(jīng)解決不了這個問題了,只好去求助百度,學(xué)習(xí)mybatis表與實體的映射應(yīng)該怎么寫,將學(xué)習(xí)筆記結(jié)合工作碰到的問題寫下本文,供自身查漏補缺,同時已被不時之需2022-10-10
IDEA整合Dubbo+Zookeeper+SpringBoot實現(xiàn)
初學(xué)者,想自己動手做一個簡單的demo,本文主要介紹了IDEA整合Dubbo+Zookeeper+SpringBoot實現(xiàn),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06
Spring Boot支持Crontab任務(wù)改造的方法
這篇文章主要介紹了Spring Boot支持Crontab任務(wù)改造的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01
多數(shù)據(jù)源@DS和@Transactional實戰(zhàn)
這篇文章主要介紹了多數(shù)據(jù)源@DS和@Transactional實戰(zhàn),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09

