GraalVM入门教程

GraalVM是什么

GraalVM是一个高性能、云原生、支持多种语言的虚拟机。 GraalVM 提供了一个名为 "Native Image" 的工具,它能够将 Java 应用程序预编译成本机可执行文件。这种方法的优点是启动速度快,内存占用少,因为程序运行时不需要 JVM 和类加载。 然而这种方式也存在一些弊端,如预编译的 GraalVM Native Image 相比于在 HotSpot JVM 上运行的相同程序,它没有一个先进的即时编译器 (JIT) ,因此就不能在运行时分析和优化代码,无法利用这些运行时优化,因此在性能表现上可能会有所降低。

官网:www.graalvm.org/

几个名词介绍

native-image

native-image 是一个用于将 Java 程序编译为本地可执行文件的工具。它是 GraalVM 的一部分,GraalVM 是一个高性能的通用虚拟机,支持多种语言。它可以将 Java 应用程序预编译为本机可执行文件,这样生成的文件可以直接运行,无需 JVM 或者任何其他的运行时环境。

不同平台相关依赖不同:

gu

gu 是 GraalVM 的组件安装器 (GraalVM Updater),你可以使用 gu 来安装、列出和卸载 GraalVM 中的各种组件。

基础环境搭建

linux

环境:

  • centos7
  • jdk17
  • maven 3.6.1
  • spring-boot3.1.4

下载GraalVM

下载GraalVM for JDK 17 Community 17.0.8: hub.nuaa.cf/graalvm/gra...

配置环境变量

下载完传到Linux服务器,解压,配置环境变量 配置jdk环境变量请参考:blog.csdn.net/qq_34845394... 验证:

shell 复制代码
java -version

下载安装AOT编译器 native-image

  1. 命令操作【离线方式】
shell 复制代码
gu install --file native-image-installable-svm-java17-windows-amd64-22.1.0.jar
  1. 或者在命令中直接【在线】联网按照**(推荐)**
shell 复制代码
gu install native-image

查看已经安装的 native-image 版本

shell 复制代码
native-image --version

查看已经安装的GraalVM 中的各种组件

shell 复制代码
gu list

安装gcc、glibc-devel 与 zlib-devel

MacOS 系统,请运行:

shell 复制代码
brew install gcc zlib

CentOS 系统,请运行:

shell 复制代码
yum install -y gcc glibc-devel zlib-devel

Ubuntu 系统,请运行:

shell 复制代码
sudo apt install gcc libc6-dev zlib1g-dev

下载maven并配置环境变量

请参考:blog.csdn.net/qq_34845394...

windows

环境:

  • win11
  • jdk17
  • maven 3.6.1
  • spring-boot3.1.4
  • idea 2023.2.2

下载GraalVM

下载GraalVM for JDK 17 Community 17.0.8: hub.nuaa.cf/graalvm/gra...

配置环境变量

请参考:zhuanlan.zhihu.com/p/610486052

下载安装AOT编译器 native-image

powershell 复制代码
gu.cmd install native-image

下载配置windows sdk和msvc

Microsoft Visual C++(简称Visual C++、MSVC、VS或VC)是微软公司的免费C++开发工具 ,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。 请参考:zhuanlan.zhihu.com/p/610486052

下载maven并配置环境变量

过于简单,自行百度

创建、构建、运行SpringBoot3的项目

项目必须是 SpringBoot 3.0 版本以上 + JDK17 这里提供一个我测试的项目,源码地址:gitee.com/leiguoqing/...

windows

如果你想自己创建项目流程如下:

创建好之后,pom.xml 文件和spring-boot2项目有所不同,右边的maven也有所不同 勾上 maven 上面的native,然后点击plugins里面的 native:compile进行构建,构建的速度取决于电脑的性能

也可以手动用maven命令进行构建,如下:

shell 复制代码
mvn clean -Pnative native:compile -DskipTests

此时项目的target目录会生成一个.exe的可执行文件,因为我们是在windows上面操作的,如果是Linux系统就会生成Linux系统的可执行文件 直接双击此 exe 就可以直接运行项目 可以看到启动速度飞快!!!

Linux

接下来在Linux上面操作下 将项目上传到Linux服务器:

进入spring-boot3-demo目录,然后执行下面的命令进行构建:

shell 复制代码
mvn clean -Pnative native:compile -DskipTests

构建成功后target目录下就会生成可执行文件,就可以直接运行了 速度飞快!!!

传统jar包和原生镜像速度对比

windows

Linux

不管windows还是Linux启动速度快了十几倍,甚至几十倍!!!

参考文章:

相关推荐
币圈菜头3 分钟前
GAEA × REVOX 合作 — 共建「情感 AI + Web3 应用」新生态
人工智能·web3·去中心化·区块链
leafff12328 分钟前
深度拆解 Claude 的 Agent 架构:MCP + PTC、Skills 与 Subagents 的三维协同
人工智能·架构
老蒋新思维31 分钟前
创客匠人深度洞察:创始人 IP 打造的非线性增长模型 —— 知识变现的下一个十年红利
大数据·网络·人工智能·tcp/ip·重构·数据挖掘·创客匠人
北京耐用通信37 分钟前
协议转换的‘魔法转换器’!耐达讯自动化Ethernet/IP转Devicenet如何让工业机器人‘听懂’不同咒语?”
网络·人工智能·科技·网络协议·机器人·自动化·信息与通信
utmhikari40 分钟前
【架构艺术】简述LLM增强产品研发角色
ai·架构·llm·agent·产品经理·系统设计
ujainu40 分钟前
Flutter + HarmonyOS开发:轻松实现ArkTS页面跳转
人工智能·python·flutter
hans汉斯42 分钟前
【人工智能与机器人研究】人工智能算法伦理风险的适应性治理研究——基于浙江实践与欧美经验的整合框架
大数据·人工智能·算法·机器人·数据安全·算法伦理·制度保障
科普瑞传感仪器44 分钟前
航空航天制造升级:机器人高精度力控打磨如何赋能复合材料加工?
java·前端·人工智能·机器人·无人机·制造
coder_pig1 小时前
2025 复盘 | 穿越AI焦虑周期,进化为 "AI全栈"
人工智能·aigc·ai编程
初九之潜龙勿用1 小时前
在openEuler操作系统基础上实现机器学习开发以及openEuler优势分析
人工智能·机器学习