windows GraalVM 构建 Spring Boot 3.0 原生可执行文件
创始人
2025-05-30 03:32:04
0

graalvm官方文档

GraalVM 文档地址:https://www.graalvm.org/latest/docs/getting-started/
GraalVM Native Image 文档地址:https://www.graalvm.org/latest/reference-manual/native-image/

GraalVM 介绍

既然是VM,那肯定也是一个虚拟机,那它跟JVM有关系吗?有一定关系,GraalVM 可以完全取代上面提到的那几种虚拟机,比如 HotSpot。把你之前运行在 HotSpot 上的代码直接平移到 GraalVM 上,不用做任何的改变,甚至都感知不到,项目可以完美的运行。但是 GraalVM 还有更广泛的用途,不仅支持 Java 语言,还支持其他语言。这些其他语言不仅包括嫡系的 JVM 系语言,例如 KotlinScala,还包括例如 JavaScript、Nodejs、Ruby、Python 等,如图。
在这里插入图片
图片来自:https://www.graalvm.org/latest/docs/introduction/
在这里插入图片描述

GraalVM Native Image 介绍

GraalVM Native Image 是GraalVM 提供的一种能够将Spring Boot 程序打包成云原生可执行文件的技术,并且比JVM 占用更少的内存和更快的启动速度,非常适合使用容器部署和在Faas平台使用。
与在JVM运行的应用程序不同,GraalVM Native Image需要提前对代码进行编译处理才能创建可执行文件,GraalVM Native Image 的运行不需要提供JVM虚拟机。

创建第一个GraalVM云原生应用程序

有两种办法创建原生应用程序:

使用GraalVM Native 构建工具生成一个可执行文件
使用Cloud Native Buildpacks来生成一个包含可执行应用程序的轻量级容器

下面示例使用GraalVM Native来构建,java版本为17

windows 安装GraalVM SDK

下载地址:https://github.com/graalvm/graalvm-ce-builds/releases/tag/vm-22.3.1

在这里插入图片描述
下载完成,然后解压。

配置环境变量

在这里插入图片描述
变量值就是 graalvm的安装目录
在这里插入图片描述
验证安装成功没有。

java -version
D:\IdeaProjects\mytools\chatgpt>java -version
openjdk version "17.0.6" 2023-01-17
OpenJDK Runtime Environment GraalVM CE 22.3.1 (build 17.0.6+10-jvmci-22.3-b13)
OpenJDK 64-Bit Server VM GraalVM CE 22.3.1 (build 17.0.6+10-jvmci-22.3-b13, mixed mode, sharing)D:\IdeaProjects\mytools\chatgpt>

安装Native Image 工具

如果没有安装该工具,maven 在打包的时候会自动下载,但建议提前安装打包工具

gu install native-image

由于在线安装很慢可以使用离线安装。

  1. 先去github下载native-image,下载地址:https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.3.1/native-image-installable-svm-java17-windows-amd64-22.3.1.jar

在这里插入图片描述
2. 安装命令

gu install -L  C:\Users\zhubayi\Downloads\native-image-installable-svm-java17-linux-amd64-22.3.1.jar

注意:-L 后面就是native-image文件的路径

3.查看安装成功没有

gu list 
C:\Users\zhubayi>gu list
ComponentId              Version             Component name                Stability                     Origin
---------------------------------------------------------------------------------------------------------------------------------
graalvm                  22.3.1              GraalVM Core                  Supported
native-image             22.3.1              Native Image                  Early adopter                 github.com

安装Native Image依赖的本地环境

因为要编译成指定本地可执行文件,比如exe,需要Windows安装了Microsoft Visual C++ (MSVC),
MAC 需要安装xcode,通过xcode-select --install,
Linux sudo yum install gcc glibc-devel zlib-devel
Ubuntu sudo apt-get install build-essential libz-dev zlib1g-dev
其他Linux sudo dnf install gcc glibc-devel zlib-devel libstdc++-static

这里以Windows为例,安装 Visual Studio 2022 或更高版本的 构建工具和 Windows 10 SDK
可以参考我这篇博客:https://blog.csdn.net/qq_44732146/article/details/128877510

使用start.spring.io创建一个Spring Boot 3.0应用

1、选择Java 17 版本
2、选择GraalVM Native Support、Spring Web

在这里插入图片描述
在这里插入图片描述
pom.xml文件


4.0.0org.springframework.bootspring-boot-starter-parent3.0.4 com.zhubayigraalvm-demo0.0.1-SNAPSHOTgraalvm-demograalvm-demo17org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-testtestorg.graalvm.buildtoolsnative-maven-pluginorg.springframework.bootspring-boot-maven-plugin

3、写一个简单的controller

@RestController
public class TestController {@RequestMapping("/")String home() {return "Hello World!";}
}

4、打包可执行文件
在 安装VS 中找到 x64 Native Tools Command Prompt 或者**终端**执行如下命令

mvn -Pnative native:compile

在这里插入图片描述
在这里插入图片描述
一共7个步骤,花费了差不多2分钟打包完,生成的可执行文件在target目录
在这里插入图片描述

5、运行可执行文件
双击exe文件,Spring Boot 应用程序几乎瞬间启动完毕,文件大小有68M左右,对于一个没什么业务代码的demo来说,确实太大了,但是启动速度很快!
在这里插入图片描述

访问地址http://localhost:8080/,能正常访问

在这里插入图片描述
从这个例子看出,使用GraalVM Spring Boot 的启动时间确实快了很多,但同时包也大了很多 ,有点空间换时间的意思。如果要打包原生可执行文件的话,环境配置也比较繁琐。不过使用GraalVM 来替代JVM 跑Java 程序还是很值得尝试的。

相关内容

热门资讯

武汉摩尔影城安卓系统APP,便... 你有没有想过,一部手机就能带你走进电影的世界,享受大屏幕带来的震撼?今天,就让我带你详细了解武汉摩尔...
联想刷安卓p系统,畅享智能新体... 你有没有发现,最近联想的安卓P系统刷机热潮可是席卷了整个互联网圈呢!这不,我就迫不及待地来和你聊聊这...
mac从安卓系统改成双系统,双... 你有没有想过,你的Mac电脑从安卓系统改成双系统后,生活会有哪些翻天覆地的变化呢?想象一边是流畅的苹...
kindke安卓系统激活码,激... 亲爱的读者,你是否在寻找一款能够让你手机焕然一新的操作系统?如果你是安卓用户,那么今天我要给你带来一...
萤石云监控安卓系统,安卓系统下... 你有没有想过,家里的安全可以随时随地掌握在手中?现在,有了萤石云监控安卓系统,这不再是梦想啦!想象无...
手机安卓系统会不会爆炸,系统升... 手机安卓系统会不会爆炸——一场关于安全的探讨在当今这个数字化的世界里,手机已经成为我们生活中不可或缺...
安卓系统双清详图解,恢复出厂设... 你有没有遇到过手机卡顿、运行缓慢的问题?别急,今天就来给你详细解析一下安卓系统的“双清”操作,让你的...
召唤抽奖系统安卓直装,轻松体验... 你知道吗?现在市面上有一种特别火的玩意儿,那就是召唤抽奖系统安卓直装。是不是听起来就让人心动不已?没...
系统工具箱安卓2.3,深度解析... 你有没有发现,手机里的那些小工具,有时候就像是个神奇的百宝箱呢?今天,就让我带你一探究竟,看看安卓2...
华硕平板安卓刷机系统,解锁性能... 亲爱的数码爱好者们,你是否曾为你的华硕平板安卓系统感到厌倦,想要给它来一次焕然一新的体验呢?那就跟着...
鸿蒙系统与安卓怎么区别,差异解... 你有没有发现,最近手机圈子里有个大热门,那就是鸿蒙系统和安卓系统的区别。这两位“系统大侠”各有各的绝...
红帽系统怎么刷回安卓,红帽系统... 你是不是也和我一样,对红帽系统刷回安卓充满了好奇?别急,今天就来给你详细揭秘这个过程,让你轻松上手,...
ios安卓联想三系统,全面解析... 你有没有发现,现在的手机市场真是热闹非凡呢!各种操作系统轮番登场,让人眼花缭乱。今天,就让我带你来聊...
安卓调用系统相机并存盘,And... 你有没有想过,手机里的照片和视频,是怎么被我们随手拍下,又神奇地存到手机里的呢?今天,就让我带你一探...
安卓4.0原生系统下,引领智能... 你有没有发现,安卓4.0原生系统下,手机的使用体验简直就像打开了新世界的大门?今天,就让我带你一起探...
安卓c13系统,创新功能与性能... 你知道吗?最近安卓系统又来了一次大更新,那就是安卓C13系统。这可不是一个小打小闹的更新,而是带来了...
鸿蒙3.0脱离安卓系统,开启全... 你知道吗?最近科技圈可是炸开了锅,因为华为的新操作系统鸿蒙3.0横空出世,竟然宣布要脱离安卓系统,这...
安卓怎么应对苹果系统,安卓系统... 你知道吗?在智能手机的世界里,安卓和苹果就像是一对相爱相杀的恋人。安卓系统,这位多才多艺的“大众情人...
安卓系统如何开橱窗教程,安卓系... 你有没有想过,你的安卓手机里也能开个橱窗,展示那些你心爱的宝贝?没错,就是那种可以随时翻看、随时分享...
安卓系统软件APK,深入探究安... 你有没有发现,手机里的那些好玩的应用,其实都是靠一个小小的文件来“住”进去的?没错,就是安卓系统里的...