GraalVM入门教程

news2024/11/8 9:00:59

GraalVM入门教程

  • GraalVM是什么
  • 几个名词介绍
    • native-image
    • gu
  • 基础环境搭建
    • linux
      • 下载GraalVM
      • 配置环境变量
      • 下载安装AOT编译器 native-image
      • 安装gcc、glibc-devel 与 zlib-devel
      • 下载maven并配置环境变量
    • windows
      • 下载GraalVM
      • 配置环境变量
      • 下载安装AOT编译器 native-image
      • 下载配置windows sdk和msvc
      • 下载maven并配置环境变量
  • 创建、构建、运行SpringBoot3的项目
    • windows
    • Linux
  • 传统jar包和原生镜像速度对比
    • windows
    • Linux

GraalVM是什么

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

官网:https://www.graalvm.org/

几个名词介绍

native-image

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

不同平台相关依赖不同:
image.png

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:
https://hub.nuaa.cf/graalvm/graalvm-ce-builds/releases/tag/jdk-17.0.8

image.png

配置环境变量

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

java -version

image.png

下载安装AOT编译器 native-image

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

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

native-image --version

image.png

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

gu list

image.png

安装gcc、glibc-devel 与 zlib-devel

MacOS 系统,请运行:

brew install gcc zlib

CentOS 系统,请运行:

yum install -y gcc glibc-devel zlib-devel

Ubuntu 系统,请运行:

sudo apt install gcc libc6-dev zlib1g-dev

下载maven并配置环境变量

请参考:https://blog.csdn.net/qq_34845394/article/details/90674933
image.png

windows

环境:

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

下载GraalVM

下载GraalVM for JDK 17 Community 17.0.8:
https://hub.nuaa.cf/graalvm/graalvm-ce-builds/releases/tag/jdk-17.0.8
image.png

配置环境变量

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

下载安装AOT编译器 native-image

gu.cmd install native-image

image.png

下载配置windows sdk和msvc

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

下载maven并配置环境变量

过于简单,自行百度
image.png

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

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

windows

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

image.png

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

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

mvn clean -Pnative native:compile -DskipTests

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

Linux

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

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

mvn clean -Pnative native:compile -DskipTests

image.png
image.png
image.png

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

image.png

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

windows

image.png

Linux

image.png

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

参考文章:

  • GraalVM在windows上的环境搭建(2023年版本)
  • GraalVM编译SpringBoot程序-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1114609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云服务器的购买方式有哪些?哪些实例规格的云服务器价格相对便宜一点?

对于还没购买过阿里云服务器的用户来说,如何购买阿里云服务器以及现在购买哪些实例规格的云服务器价格比较便宜是用户比较关心的,购买阿里云服务器的方式主要有四种,而目前价格比较便宜的云服务器实例规格有轻量应用服务器和和经济型、通用算…

【ROS 2 基础-常用工具】-6 Rviz基础使用

所有内容请查看:博客学习目录_Howe_xixi的博客-CSDN博客

图形学--shading着色

概念:对不同物体应用不同材质 llumination shading着色 Blinn-Phong reflectance model Diffuse Reflection 漫反射 光打到了shading point上然后光线四面八方均匀散射 光源会根据光源传播的距离进行一定的能量衰减 按球的表面积来算,吸收的能量和光…

分类预测 | Matlab实现WOA-GRU鲸鱼算法优化门控循环单元的数据多输入分类预测

分类预测 | Matlab实现WOA-GRU鲸鱼算法优化门控循环单元的数据多输入分类预测 目录 分类预测 | Matlab实现WOA-GRU鲸鱼算法优化门控循环单元的数据多输入分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现WOA-GRU鲸鱼算法优化门控循环单元的数据多输入…

Gradio的重要函数以及一些代码示例学习(一)

1 重要函数解析 1.1 Interface()类 参考: interface 最常用的基础模块构成。 应用界面:gr.Interface(简易场景), gr.Blocks(定制化场景)输入输出:gr.Image(图像), gr.Textbox(文本框), gr.DataFrame(数据框), gr.Dropdown(下拉选项), gr.…

AI-新人类电商人的AI课,用世界先进的AI帮助电商降本增效

课程下载:https://download.csdn.net/download/m0_66047725/88448518 比如用语言模型写短视频文案、脚本,用生图模型做场景、拍摄、换装,用数字人做直播短视频 AI电商课程目录 注意:由于AI发展太快,新内容可能不在…

如何提升多个微信个人号管理效率?

一、管理多个微信个人号 微信扫码即可登录到系统,支持登录多个账号,可以聚合聊天,设置快捷回复语,提高回复的效率,不用来回切换界面,减少封号的风险。 二、监管管理多个账号 微信登陆在系统,所…

ECharta雷达图 样式调整

预期效果&#xff1a; <template><div id"operationalRisk-radar-chart" class"h-290 w-385"></div> </template><script>export default {name: radarChart} </script> <script setup>import { onMounted, r…

机器学习(24)---AdaBoost(课堂笔记)

文章目录 一、知识记录二、题目2.1 题目12.2 题目22.3 答案书写 一、知识记录 二、题目 2.1 题目1 2.2 题目2 2.3 答案书写

网络编程开发及实战(上)

一、什么是互联网 一、什么是互联网 1、计算机网络的定义 2、计算机的分类 1&#xff09;按照作用范围分类 个人局域网&#xff1a;热点 2&#xff09;按照网络的使用者分类 公用网&#xff1a;缴费可以使用的网 专用网&#xff1a;军队 3、网络的网络 由节点和链组成 互…

(七)QVTKOpenGLNativeWidget中显示坐标轴

为了方便观察图像的方向&#xff0c;位置以及旋转情况&#xff0c;想在窗口中添加一个坐标轴显示&#xff0c;并且这个坐标轴是随着窗口的旋转变动的&#xff0c;在网上找了很多例子&#xff0c;但是最后就是不显示坐标轴。 在此记录一下。 一、坐标轴相关类简单介绍 1.vtkA…

LabVIEW生成和打印条形码

LabVIEW生成和打印条形码 想在LabVIEW中生成条形码然后打印条形码。但是&#xff0c;当尝试使用任何一个打印VI来从LabVIEW打印条形码字体时&#xff0c;打印机中的字体是扭曲的。该如何解决这个问题&#xff1f; 首先&#xff0c;需要条形码字体。如果没有&#xff0c;可以从…

水质分析仪MQTT应用案例

水质分析仪MQTT应用案例 一、公司介绍 某仪器股份有限公司&#xff0c;集研发&#xff0c;生产&#xff0c;销售于一体的水质分析仪器公司。产品主要包括PH/ORP分析仪&#xff0c;电导度分析仪&#xff0c;溶氧分析仪&#xff0c;离子浓度分析仪&#xff0c;浊度分析仪及重金…

靠做网络安全,工资是同龄人的5倍:赚钱真的不能靠拼命!

最近在知乎看到一个测试&#xff0c;特扎心&#xff1a; 以下三种情况&#xff0c;哪个最让你绝望&#xff1f; ❶ 每月工资去掉开销还存不到3千&#xff1b; ❷ 家人突然急病住院&#xff0c;医药费10万&#xff1b; ❸ 同班的家长都在争先恐后给孩子报名各种辅导班、兴趣…

【python】文件和异常

文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景&#xff0c;而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词&#xff0c;可能需要先科普一下关于文件系统的知识&#xff0c;但是这里我们并不浪费笔墨介绍这个概念&#xff0c;请大…

实用API管理平台推荐:Apipost

在数字化时代&#xff0c;API已成为企业和开发者实现数据互通、应用集成的重要桥梁。然而&#xff0c;随着API数量的不断增加&#xff0c;API设计、调试、文档和测试等工作也变得越来越复杂。为了解决这一痛点&#xff0c;一款名为Apipost的API协同研发工具应运而生&#xff0c…

凝聚生态合力|汉得智慧营销中台O2与燕千云深度集成,助力企业数智化发展!

数字化转型&#xff0c;引领未来。在这个科技快速发展的时代&#xff0c;数字化转型已经成为企业发展的必然选择&#xff0c;通过运用先进的技术和创新的思维&#xff0c;企业可以实现业务流程的优化和效率的提升。 数字化转型不仅仅是一种工具&#xff0c;更是一种战略&#x…

可视化工具Datart踩(避)坑指南(6)——避免多人同时编辑

作为目前国内开源版本最好用的可视化工具&#xff0c;Datart无疑是低成本高效率可供二开的可视化神兵利器。当然&#xff0c;免费的必然要付出一些踩坑的代价。本篇我们来讲一讲可视化工具Datart踩&#xff08;避&#xff09;坑指南&#xff08;6&#xff09;之避免多人同时编辑…

酷克数据发布HD-SQL-LLaMA模型,开启数据分析“人人可及”新时代

随着行业数字化进入深水区&#xff0c;企业的关注点正在不断从“数字”价值转向“数智”价值。然而&#xff0c;传统数据分析的操作门槛与时间成本成为了掣肘数据价值释放的阻力。常规的数据分析流程复杂冗长&#xff0c;需要数据库管理员设计数据模型&#xff0c;数据工程师进…

x86 架构的机载计算机,它来了!

Allspark 2-x86采用Intel酷睿11代或12代CPU&#xff0c;x86架构&#xff0c;适用于无人机等机器人运行SLAM、VIO等复杂逻辑和高精度的机器视觉任务。预装 Ubuntu 22.04或Windows 11&#xff0c;满足多种使用场景。 市面上现有的一些NUC产品&#xff0c;不仅没有针对移动机器人使…