Windows下使用Graalvm將Springboot應用編譯成exe大大提高啟動和運行效率(推薦)
GraalVM安裝
GraalVM安裝
安裝
請前往GraalVM官網(wǎng) 下載 GraalVM Community 22.3,注意當前支持的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)絡下載) - 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應用初體驗
創(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,哈哈),但在一些新的小型應用中,完全可以試試手,畢竟盡量native用不了,還有jvm可以兜底,我們并需要為此做額外的工作。
最近,希望java web能通過native的特性,真正的適配云原生環(huán)境。
到此這篇關(guān)于Windows下使用Graalvm將Springboot應用編譯成exe大大提高啟動和運行效率(推薦)的文章就介紹到這了,更多相關(guān)Windows使用Graalvm將Springboot編譯成exe內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解基于Spring Boot/Spring Session/Redis的分布式Session共享解決方案
本篇文章主要介紹了詳解基于Spring Boot/Spring Session/Redis的分布式Session共享解決方案 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06Springboot一個注解搞定返回參數(shù)key轉(zhuǎn)換功能
平時在搬磚的時候,大家有沒有遇到過這樣場景,由于各種因素導致,一個接口返回的數(shù)據(jù)里面的key是A,?但是客戶端(前端)要求返回的key不叫A叫Aa?。也就是返回的值不變,就是key換了。本文將通過一個注解搞定返回參數(shù)key轉(zhuǎn)換,需要的可以了解一下2022-10-10詳解mybatis-plus使用@EnumValue注解的方式對枚舉類型的處理
這篇文章主要介紹了詳解mybatis-plus使用@EnumValue注解的方式對枚舉類型的處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12Mybatis注解開發(fā)@Select執(zhí)行參數(shù)和執(zhí)行sql語句的方式(最新詳解)
@Select 是 Mybatis 框架中的一個注解,用于執(zhí)行 SQL 查詢語句,并把查詢結(jié)果映射到指定的 Java 對象中,這篇文章主要介紹了Mybatis注解開發(fā)@Select執(zhí)行參數(shù)和執(zhí)行sql語句的方式,需要的朋友可以參考下2023-07-07