springboot3从零开始实践4,踩坑也要换上高性能的虚拟机GraalVM

内容分享7小时前发布
0 12 0

前言

springboot3 最重大的特性就是Spring Native ,它可以将 Spring 应用程序转换成本地镜像或原生二进制文件,以提供更快的启动和更小的内存占用。实践过程,还是有不少坑。

实现原理

用GraalVM取代传统JVM,可以构建更快、更小、更精简的应用程序。看下它的优势

springboot3从零开始实践4,踩坑也要换上高性能的虚拟机GraalVM

实践

1 官网下载GraalVM,提议下载java17对应的版本, 它是 JDK 8 之后首个长期支持(LTS)版本,包括一些新的语言特性和增强功能。

springboot3从零开始实践4,踩坑也要换上高性能的虚拟机GraalVM

2 配置环境变量包括JAVA_HOME,LIB,INCLUDE(从vistual studio 里面下载)将JAVA_HOME改为GraalVM的根目录即可,然后在IDE工具中将你的JDK配置换成GraalVM对应的目录。

springboot3从零开始实践4,踩坑也要换上高性能的虚拟机GraalVM

3 安装native-image,native-image编译java为二进制,需要依赖C++编译工具,命令

gu install native-image

springboot3从零开始实践4,踩坑也要换上高性能的虚拟机GraalVM

安装依赖

4 配置pom.xml,添加对应的依赖插件

springboot3从零开始实践4,踩坑也要换上高性能的虚拟机GraalVM

5 执行maven命令,必定要加上-Pnative参数

mvn -Pnative clean native:compile

结果

构建成功:构建有点长,我的项目用了3:53 分钟,成功后的截图:

springboot3从零开始实践4,踩坑也要换上高性能的虚拟机GraalVM

写在最后

十多年软件开发,目前每天思考的是如何用最优的技术,最快速的落地业务,希望大家一起多多交流。

© 版权声明

相关文章

12 条评论

  • 头像
    哼我就是介么萌 投稿者

    别费时间在native上,除了原生jdk的代码,第三方依赖体系的那是一团糟,就比如我的项目里的mybatis,虽然mybatis官网说,但按照官网手册怎么调,都会在运行时奔溃,而像日志、redis、druid等,都要一个个手动实现,也就是说,想玩native,除了原生jdk和spring家族核心的几个包,其他的都要拜拜

    无记录
    回复
  • 头像
    名创广告 读者

    谢谢建议,用的时候只按照官网的来确实有很多问题

    无记录
    回复
  • 头像
    大鱼小可爱 读者

    我已经放弃了,以其花时间去分析程序为何崩溃或无法启动,还不如直接用go

    无记录
    回复
  • 头像
    ·碎碎小鑫卷· 投稿者

    兼容性怎么样?openjdk可以吗

    无记录
    回复
  • 头像
    莲菜 读者

    加油💪~我的应用因为用是用Spring全家桶,花了一天时间迁移到Spring Native,启动时间变成毫秒级,占用资源也少了很多。还是非常值得的。

    无记录
    回复
  • 头像
    小娜 读者

    启动确实快了很多

    无记录
    回复
  • 头像
    丫丫女孩纸 读者

    试着写过demo,实在难用,真不如我直接用go或者rust

    无记录
    回复
  • 头像
    春和 读者

    后面肯定会越来越好

    无记录
    回复
  • 头像
    德牧啵比 投稿者

    第三方兼容一塌糊涂

    无记录
    回复
  • 头像
    丹君 读者

    就是个demo而已

    无记录
    回复
  • 头像
    读者

    收藏了,感谢分享

    无记录
    回复
  • 头像
    植物眼 投稿者

    谢谢

    无记录
    回复