GraalVM初体验

news2024/11/16 13:34:16

       本篇文章我会根据自己的本机安装GraalVM,并将一个简单的jar打包成一个可执行文件

       机器:mac 处理器2.7 GHz 四核Intel Core i7 (非M1)

       GraalVM:17 (支持的jdk为8-17),因此不需要找单独的对应版本的jdk,他是从8开始兼容到当前的。

第一步:登陆 GraalVM官网(我选择的17设备环境根据自己实际情况选择,win环境还需要安装 Visual Studio 和 Microsoft Visual C++(MSVC)

下砸预览:从解压后可以看出支持的jdk是8.1-17.07

 

第二部进入到graalvm-jdk-17.0.7+8.1/Contents/Home目录下

 第三步:继续进入bin目录下

现将ant-0.0.1-SNAPSHOT.jar 使用graalv编译为二进制可执行文件(将jar移动到native-image所在目录)

使用命令:./native-image -jar ant-0.0.1-SNAPSHOT.jar ant

houliangdeMacBook-Pro:bin houliang$ ./native-image -jar ant-0.0.1-SNAPSHOT.jar ant
========================================================================================================================
GraalVM Native Image: Generating 'ant' (executable)...
========================================================================================================================
[1/8] Initializing...                                                                                    (8.7s @ 0.17GB)
 Java version: 17.0.7+8-LTS, vendor version: Oracle GraalVM 17.0.7+8.1
 Graal compiler: optimization level: 2, target machine: x86-64-v3, PGO: off
 C compiler: cc (apple, x86_64, 12.0.5)
 Garbage collector: Serial GC (max heap size: 80% of RAM)
[2/8] Performing analysis...  [***]                                                                     (13.5s @ 0.42GB)
   3,714 (74.24%) of  5,003 types reachable
   4,682 (52.83%) of  8,863 fields reachable
  18,584 (48.58%) of 38,251 methods reachable
   1,230 types,     0 fields, and   565 methods registered for reflection
      59 types,    60 fields, and    52 methods registered for JNI access
       4 native libraries: -framework Foundation, dl, pthread, z
[3/8] Building universe...                                                                               (1.6s @ 0.53GB)

Warning: Reflection method java.lang.Class.getMethod invoked at org.springframework.boot.loader.jar.JarFileEntries.<clinit>(JarFileEntries.java:66)
Warning: Reflection method java.lang.Class.getDeclaredMethod invoked at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:47)
Warning: Reflection method java.lang.Class.getDeclaredConstructor invoked at org.springframework.boot.loader.jar.Handler.getFallbackHandler(Handler.java:200)
Warning: Aborting stand-alone image build due to reflection use without configuration.
Warning: Use -H:+ReportExceptionStackTraces to print stacktrace of underlying exception
------------------------------------------------------------------------------------------------------------------------
                        1.4s (5.5% of total time) in 69 GCs | Peak RSS: 0.95GB | CPU load: 4.66
========================================================================================================================
Finished generating 'ant' in 24.0s.
Generating fallback image...
Warning: Image 'ant' is a fallback image that requires a JDK for execution (use --no-fallback to suppress fallback image generation and to print more detailed information why a fallback image was necessary).

可执行文件和jar文件进行比较: 大约只有jar包的十分之一

执行ant (win系统会生成一个exe可执行文件)

houliangdeMacBook-Pro:bin houliang$ ./ant

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::       (v2.7.7-SNAPSHOT)

2023-06-25 14:33:53.089  INFO 22037 --- [           main] com.cn.mini.ant.AntApplication           : Starting AntApplication v0.0.1-SNAPSHOT using Java 17.0.7 on houliangdeMacBook-Pro.local with PID 22037 (/Users/houliang/gvm/graalvm-jdk-17.0.7+8.1/Contents/Home/bin/ant-0.0.1-SNAPSHOT.jar started by houliang in /Users/houliang/gvm/graalvm-jdk-17.0.7+8.1/Contents/Home/bin)
2023-06-25 14:33:53.092  INFO 22037 --- [           main] com.cn.mini.ant.AntApplication           : No active profile set, falling back to 1 default profile: "default"
2023-06-25 14:33:53.960  INFO 22037 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8082 (http)
2023-06-25 14:33:53.971  INFO 22037 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2023-06-25 14:33:53.971  INFO 22037 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.70]
2023-06-25 14:33:54.042  INFO 22037 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2023-06-25 14:33:54.043  INFO 22037 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 899 ms
2023-06-25 14:33:54.343  INFO 22037 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8082 (http) with context path ''
2023-06-25 14:33:54.351  INFO 22037 --- [           main] com.cn.mini.ant.AntApplication           : Started AntApplication in 1.851 seconds (JVM running for 2.368)

访问接口:

构建运行结束

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

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

相关文章

时速云使用 Higress 替换 Ngnix Ingress + Spring Cloud Gateway 的生产实践

作者&#xff1a;王金山&#xff0c;北京云思畅想科技有限公司技术部微服务架构师&#xff0c;负责公司 API 网关和服务网格等研发工作 时速云介绍 时速云成立于2014年10月&#xff0c;致力于通过云原生技术帮助企业实现数字化转型&#xff0c;拥有云原生应用平台 TCAP 和云原…

php 目录

简介 PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。 PHP代码的标签 数据类型 String&#xff08;字符串&#xff09; Integer&#xff08;整型&#xff09; Float&#xff08;浮点型&#xff09; Boolean&#xff08;布尔型&#xff09; Array&#xff08;数组&…

knife4j(swagger2)实现spring security或shiro权限注解内容显示

在前后端交互时&#xff0c;某些接口需要指定权限才能访问&#xff0c;虽然可以在ApiOperation注解的notes参数上自己加上&#xff0c;但是每个接口都要手动写&#xff0c;有点儿。。。 基于此需求&#xff0c;我们可以使用swagger提供的OperationBuilderPlugin&#xff0c;通…

档案库房空气质量温湿度一体化平台解决方案

档案馆温湿度十防环境一体化解决平台方案 说明&#xff1a;档案库房温湿度一般要达到如下要求&#xff1a; 在选定温度、湿度后&#xff0c;每昼夜波动幅度温度≦2℃&#xff0c;湿度≦5%RH。 下表是档案库房温湿度要求列表&#xff1a; 档案库房温湿度要求 项 目 温湿度范…

企业给员工内部搭建知识库用什么好?

企业给员工内部搭建知识库是一种有效的知识管理方式&#xff0c;可以帮助企业更好地管理和共享知识资源&#xff0c;提高员工的工作效率和学习能力。本文将介绍企业搭建内部知识库的好处、搭建方法和注意事项等方面的内容&#xff0c;希望对企业进行知识管理的决策者有所帮助。…

青年就业创业数据分析:视频相关就业已成为数字生态就业的主要发展形式

哈喽大家好&#xff0c;随着网络的普及&#xff0c;利用数字科技与互联网技术&#xff0c;以青年群体为主要对象&#xff0c;数字生态行业催生出了一大批新兴的就业岗位。世界范围内&#xff0c;数字生态经济已成为不少国家经济发展的重要支撑&#xff0c;成为解决青年就业问题…

00后腾讯T3-2 晒出工资单:狠补了这个,真香…

最近一哥们跟我聊天装逼&#xff0c;说他最近从腾讯跳槽了&#xff0c;我问他跳出来拿了多少&#xff1f;哥们表示很得意&#xff0c;说跳槽到新公司一个月后发了工资&#xff0c;月入5万多&#xff0c;表示很满足&#xff01;这样的高薪资着实让人羡慕&#xff0c;我猜这是税后…

采用Prometheus+Grafana+Altermanager搭建部署K8S集群节点可视化监控告警平台

文章目录 1. 实验节点规划表2. 安装Prometheus3. 安装node_exporter4. 配置prometheus.yml文件5. 安装Grafana6. 安装Altermanager监控告警 采用 "PrometheusGrafana"的开源监控系统&#xff0c;安装部署K8S集群监控平台。 并使用Altermanager告警插件&#xff0c;配…

AutoSAR系列讲解(入门篇)1.2-AutoSAR的概述

目录 一、到底什么是AutoSAR 1、大白话来讲 2、架构上来讲 应用软件层(APPL) 实时运行环境&#xff08;RTE&#xff09; 基础软件层(BSW) 3、工具链上来讲 二、AutoSAR的目标 一、到底什么是AutoSAR 1、大白话来讲 AUTOSAR 就是AUTomotive Open System ARchitecture的…

nginx页面优化及yum安装LNMP

文章目录 一.nginx优化1.版本号1.1查看版本号1.2修改版本号1.2.1修改配置文件1.2.2修改源码文件&#xff0c;重新编译安装 2.nginx的日志分割2.1 写日志分割的脚本2.2给脚本执行权限、执行2.3创建定时任务可以每个月固定分割一次 3.nginx的页面压缩3.1配置3.2验证 4.图片缓存4.…

FPGA通信—千兆网(RTL8211EG)硬件设计

一、硬件布局指南 创造一个低噪音、功率稳定的环境降低EMI/EMC的程度及其对RTL8211E/RTL8211EG的影响简化信号跟踪的路由任务 1.1 布局 RTL8211EG 必须尽可能靠近MAC&#xff08;小于2.5英寸6.35cm&#xff09;连接到RSET引脚的电阻器应靠近RTL8211E/RTL8211EG&#xff08…

jmeter接口测试教程以及接口测试流程详解

目录 前言&#xff1a; 一、Jmeter简介 二、Jmeter安装 三、设置Jmeter语言为中文环境 四、Jmeter主要元件 五、Jmeter元件的作用域和执行顺序 六、Jmeter进行接口测试流程 七、Jmeter进行接口测试流程步骤详解 前言&#xff1a; JMeter是一款功能强大的性能测试工具&…

【算法与数据结构】18、LeetCode四数之和

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题的解法借助了【算法与数据结构】15、LeetCode三数之和的算法思想。首先我们进行排序&#xff0c;然…

用实例阐述回溯算法

目录 什么是回溯算法&#xff1f; 基本概念 示例认知 什么时候可以使用回溯算法&#xff1f; 回溯算法经典应用-无向图两节点之间路径 问题描述 回溯过程 代码示例 回溯算法经典应用-四皇后问题 问题描述 四皇后问题解决步骤 Step 1 Step 2 Step 3 Step 4 Step…

ICC2:polygon多边形操作

有时候想画一个环形或者不规则形状的metal shape/blockage,一遇到更新floorplan都要重新画,手工活如果能被脚本替代肯定是最优解,ICC2就提供这样的一组命令有效提高工作效率。 1.创建polygon 先看一下创建polygon的操作: create_poly_rect:提供一组或多组boundary坐标,工…

OpenCL编程指南-5.2数学函数

数学函数 OpenCL C实现了C99规范中描述的数学函数。使用这些数学函数的应用程序需要在代码中包含math.h头文件。这些数学函数可以作为OpenCL内核的内置函数。 对于表5-2和表5-3中的数学函数&#xff0c;我们将使用泛型类型名gentype指示这些函数可以取float、float2、float3、…

【AUTOSAR】CCP协议的代码分析与解读(二)----CCP协议格式和命令代码

CCP协议介绍 CCP的全称是CAN Calibration Protocol (CAN标定协议)&#xff0c;是基于CAN总线的ECU标定协议规范。CCP协议遵从CAN2.0通信规范&#xff0c;支持11位标准与29位扩展标识符。 CCP通信方式 CCP协议采用主从通信方式&#xff0c;如上图所示&#xff0c;其中从设备是…

Visual modflow Flex地下水数值模拟教程

详情点击链接&#xff1a;Visual modflow Flex地下水数值模拟及参数优化、抽水实验设计与处理、复杂的饱和/非饱和地下水流分析 一&#xff0c;地下水数值软件的操作流程、建模步骤和所需资料处理 [1] Visual MODFLOW Flex特征[2] Visual MODFLOW Flex软件界面及模块 [3] 地…

详细讲解接口自动化攻略

目录 前言&#xff1a; 为什么要做接口自动化 问题在哪里 全靠参数化 接口间参数传递 测试数据参数化 测试断言 测试管理 导入测试用例 接口执行顺序 使用测试数据集 测试参数配置 运行结果&测试报告 测试套件 前言&#xff1a; 接口自动化是提高测试效率和…