在spring boot3中使用native image的最新方法

作者:flydean程序那些事 时间:2022-05-18 17:43:14 

简介

在之前spring boot3文章中我们介绍了,spring boot3的一个重要特性就是支持把spring boot3的应用编译成为GraalVM的Native Image。

今天我们用具体的例子来给大家演示一下如何正确的将spring boot3的应用编译成为native image。

安装GraalVM

如果要把spring boot3的app编译成为native应用,需要GraalVM的支持。

什么是GraalVM呢?

从名字就可以看出来GraalVM是一个虚拟机,它的主要目标就是提升java应用程序的性能,并且消耗更少的资源。

它在java HotSpot JVM的基础上添加了JIT编译器和AOT来实现将应用编译成为本地可执行文件。除了java之外,GraalVM还支持JavaScript、Ruby、Python等多种编程语言。

所以,为什么要用GraalVM呢?一个字:快。

安装GraalVM也比较简单,我们进入它的官方下载页面下载对应的版本即可:https://www.oracle.com/downloads/graalvm-downloads.html。

GraalVM跟JDK一样也有两个版本,社区版和企业版本,大家可以根据需要自行选择。

要注意的是spring boot3需要GraalVM 22.3以上的版本支持,大家可不要下载错了。

下载完成之后,我们可以像正常安装JDK一样来安装GraalVM,这里以mac为例,假如我们安装的目录是/Library/Java/JavaVirtualMachines/graalvm-ee-java17-22.3.0,那么我们需要配置对应的JAVA_HOME和PATH环境变量如下:

export PATH=/Library/Java/JavaVirtualMachines/graalvm-ee-java17-22.3.0/Contents/Home/bin:$PATH

export JAVA_HOME=/Library/Java/JavaVirtualMachines/graalvm-ee-java17-22.3.0/Contents/Home
export PATH=/Library/Java/JavaVirtualMachines/graalvm-ee-java17-22.3.0/Contents/Home/bin:$PATH

export JAVA_HOME=/Library/Java/JavaVirtualMachines/graalvm-ee-java17-22.3.0/Contents/Home

PATH中有一个非常重要的命令叫做gu,如果不添加PATH,那么在使用中就可能遇到下面的异常:

'gu' tool wasn't found. This probably means that JDK at isn't a GraalVM distribution.

安装完毕之后可以通过下面的命令来进行验证:

java -version
java version "17.0.5" 2022-10-18 LTS
Java(TM) SE Runtime Environment GraalVM EE 22.3.0 (build 17.0.5+9-LTS-jvmci-22.3-b07)
Java HotSpot(TM) 64-Bit Server VM GraalVM EE 22.3.0 (build 17.0.5+9-LTS-jvmci-22.3-b07, mixed mode, sharing)

如果是在mac环境下,还需要执行下面的命令来解除对graalvm的隔离限制:

sudo xattr -r -d com.apple.quarantine /path/to/graalvm

否则在使用中就会遇到下面的问题:

在spring boot3中使用native image的最新方法

添加Native Image支持

我们安装GraalVM的目的就是使用它的native Image特性。native image是一个单独的jar包,我们可以执行下面的命令来进行安装:

gu install native-image

其中gu就是/Library/Java/JavaVirtualMachines/graalvm-ee-java17-22.3.0/Contents/Home/bin中的命令。

下载的过程中还需要输入一个有效的邮件,并进行邮箱校验。然后一路ENTER就可以了。

当然,你还可以把Oracle GraalVM Enterprise Edition Native Image下载到本地,然后使用gu install -L来进行本地安装。

来源:https://www.cnblogs.com/flydean/p/17076848.html

标签:spring,boot3,native,image
0
投稿

猜你喜欢

  • Unicode、UTF-8 和 ISO8859-1区别解析

    2021-06-02 07:45:57
  • SpringBoot打成war包在tomcat或wildfly下运行的方法

    2023-11-23 08:20:56
  • C#写入对象或集合类型数据到xml文件的方法

    2022-11-12 17:11:37
  • 手把手教你搭建SpringMVC框架——最小化配置

    2022-02-16 02:38:16
  • 详解Android使用@hide的API的方法

    2023-02-16 07:10:31
  • Quarkus中ConfigSourceInterceptor的加密配置实现

    2021-10-08 10:47:14
  • 使用SpringBoot 配置Oracle和H2双数据源及问题

    2023-10-04 14:06:11
  • Java实现批量下载(打包成zip)的实现

    2022-04-02 01:53:05
  • 基于SqlSessionFactory的openSession方法使用

    2023-02-26 23:10:15
  • Android版本更新实例详解

    2023-08-05 21:54:54
  • Java基于ArrayList实现群主发红包功能

    2022-04-06 20:34:09
  • Java NIO:浅析IO模型_动力节点Java学院整理

    2022-01-17 17:07:38
  • Java中tomcat memecached session 共享同步问题的解决办法

    2021-12-26 14:22:54
  • springboot 整合 seata的配置过程

    2023-01-13 01:28:33
  • SpringCloud远程服务调用三种方式及原理

    2023-10-16 07:21:19
  • JAVA JDK8 List分组的实现和用法

    2023-11-26 09:56:11
  • IDEA远程管理docker镜像及容器服务的实现

    2022-01-07 16:26:48
  • spring的xml文件打开没有namespace等操作选项的解决方案

    2022-09-10 14:56:47
  • java LRU(Least Recently Used )详解及实例代码

    2022-10-08 10:42:43
  • 基于Java实现收发电子邮件功能

    2021-08-23 17:30:14
  • asp之家 软件编程 m.aspxhome.com