Windows下使用Graalvm将Springboot应用编译成exe大大提高启动和运行效率(推荐)

 更新时间:2023年02月02日 10:08:06   作者:Antake  
这篇文章主要介绍了Windows下使用Graalvm将Springboot应用编译成exe大大提高启动和运行效率,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

GraalVM安装

GraalVM安装

安装

请前往GraalVM官网 下载 GraalVM Community 22.3,注意当前支持的Springboot的GraalVM版本必须是22.3
笔者这里下载的Java版本为17,如下图

安装GraalVM的方法与安装JAVA方法大致相同,GraalVM中包括了JDK(无需再次安装JDK),同时还需要安装native-image工具(后续下载)

配置环境变量

使用命令查看是否安装graal vm成功

java -version

native-image工具安装

这里下载的文件(同GraalVM下载位置下方的release文件)为native-image-installable-svm-java17-windows-amd64-22.3.0.jar如下图所示

下载完成之后在文件目录运行以下命令进行安装

- gu install xxxx.jar(同下载的工具镜像,网络下载)
- gu install -L xxxx.jar(同下载的工具镜像,本地文件)

使用以下命令查看是否安装成功

gu list

native-image

Visual Studio安装

编译native image必须依赖VC++的编译环境,这里必须使用微软官方的vc++编译工具Visual Studio,笔者这里使用的最新版本2022Visual Studi官网

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++的编译环境变量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应用初体验

创建项目

运行项目

调试运行,正常启动

编译运行

编译

如果出错选择下面的,或者在编译插件中重新配置

如果编译都不行,用插件编译之前现在console执行以下命令

./mvnw -DskipTests=true -Pnative clean package

编译完成之后在target里面查看文件

运行

运行对比

jar(JVM)本地exe(native image)文件大小18M69M启动耗时1.183s0.098s内存占用106M46m
根据上述对比结果,尽管是一个最简单的springboot程序,但在启动耗时上native具有明显的优势,达到毫秒级,占用内存少了一半多。
由于是一项新技术,其推广和普及肯定必定需要一段时间(毕竟我们还在JDK1.8,哈哈),但在一些新的小型应用中,完全可以试试手,毕竟尽量native用不了,还有jvm可以兜底,我们并需要为此做额外的工作。
最近,希望java web能通过native的特性,真正的适配云原生环境。

到此这篇关于Windows下使用Graalvm将Springboot应用编译成exe大大提高启动和运行效率(推荐)的文章就介绍到这了,更多相关Windows使用Graalvm将Springboot编译成exe内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java BigDecimal详解_动力节点Java学院整理

    Java BigDecimal详解_动力节点Java学院整理

    BigDecimal 由任意精度的整数非标度值 和32 位的整数标度 (scale) 组成。接下来通过本文给大家介绍Java BigDecimal详解,需要的的朋友参考下吧
    2017-04-04
  • java中jdbcTemplate的queryForList(坑)

    java中jdbcTemplate的queryForList(坑)

    本文主要介绍了java中jdbcTemplate的queryForList,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Springmvc自定义参数转换实现代码解析

    Springmvc自定义参数转换实现代码解析

    这篇文章主要介绍了Springmvc自定义参数转换实现代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • springmvc 获取@Requestbody转换的异常处理方式

    springmvc 获取@Requestbody转换的异常处理方式

    这篇文章主要介绍了springmvc 获取@Requestbody转换的异常处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • java短信验证码获取次数限制实例

    java短信验证码获取次数限制实例

    这篇文章主要介绍了java短信验证码获取次数限制实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • 详解Java的Hibernate框架中的set映射集与SortedSet映射

    详解Java的Hibernate框架中的set映射集与SortedSet映射

    这篇文章主要介绍了详解Java的Hibernate框架中的set映射集与SortedSet映射,Hibernate是Java的SSH三大web开发框架之一,需要的朋友可以参考下
    2015-12-12
  • 如何使用Spring Boot设置上传文件大小限制

    如何使用Spring Boot设置上传文件大小限制

    上传文件是互联网中常应用的场景之一,最典型的情况就是上传头像等,下面这篇文章主要给大家介绍了关于如何使用Spring Boot设置上传文件大小限制的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • Springboot+Poi导入Excel表格实现过程详解

    Springboot+Poi导入Excel表格实现过程详解

    这篇文章主要介绍了Springboot+Poi导入Excel表格实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 快速上手Java单元测试框架JUnit5

    快速上手Java单元测试框架JUnit5

    今天给大家带来的是关于Java单元测试的相关知识,文章围绕着Java单元测试框架JUnit5展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • 基于mybatis-plus-generator实现代码自动生成器

    基于mybatis-plus-generator实现代码自动生成器

    这篇文章专门为小白准备了入门级mybatis-plus-generator代码自动生成器,可以提高开发效率。文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-05-05

最新评论