当前位置: 首页 > news >正文

graalvm初探

graalvm是普通JDK的增强版,支持AOT特性,可将jar包转成本地可执行文件,提升启动时间,减少内存占用。同时还支持多语言融合编程,支持python/ruby/js等语言。

安装

到oracle官网下载graalvm21,对应jdk21。旧有的jdk21程序无需修改,可直接跑在graalvm上。

转成本地可执行文件要使用native-image工具,windows下需提前安装visual studio2022 build tools,这个链接可下载:

https://visualstudio.microsoft.com/zh-hans/downloads/

下载时勾选“C++桌面开发”这一个组件即可。

安装好visual studio2022 build tools,重启机器。

最后使用:

native-image -jar your-jar-file

就能把打包的jar转成exe,直接执行exe好了。

转成的exe大小比原始jar小很多,且无需依赖java虚拟机了。

多语言融合编程

python

代码调用样例:

import org.graalvm.polyglot.Context;try (Context ctx = Context.newBuilder(PYTHON_LAN).allowAllAccess(true).option("python.PythonPath", "src/main/resources/python").build()) {ctx.eval(PYTHON_LAN, "import myscript; myscript.run()");}

通过Context类,在java里调用python脚本。有点像普通jdk里的ScriptEngine。
注意:这里的allowAllAccess是不能省略的,因为polyglot引擎访问特定目录是需要权限的。

pom依赖:

<dependencies><dependency><groupId>org.graalvm.polyglot</groupId><artifactId>polyglot</artifactId><version>24.2.1</version></dependency><dependency><groupId>org.graalvm.polyglot</groupId><artifactId>python</artifactId><version>24.2.1</version><type>pom</type></dependency>

graalpy的venv创建(也是通过maven插件):

<build><plugins><plugin><groupId>org.graalvm.python</groupId><artifactId>graalpy-maven-plugin</artifactId><version>24.2.1</version><configuration><!-- packages类似requirements.txt里的内容  --><packages> <!-- ① --><package>PyYAML==6.0.2</package></packages><externalDirectory> <!-- ② -->${project.basedir}/python-resources</externalDirectory></configuration><executions><execution><goals><goal>process-graalpy-resources</goal></goals></execution></executions></plugin></plugins></build>

特别说明的是,graalpy的pip跟普通python的pip共用一套配置,也就是.pip/pip.conf(windows下是pip/pip.ini文件)。下载的过程中,可能会去找三方包的graalpy补丁。

http://www.dtcms.com/a/318933.html

相关文章:

  • 急危重症专科智能体”构建新一代急诊、手术与重症中心的AI医疗方向探析
  • DBeaver 25.1.0 转储数据库失败解决方案(适配最新版界面)
  • Android Auto开发指南
  • concurrentqueue:一个高并发高性能的C++无锁队列
  • Oracle exp imp expdp impdp 命令详解
  • 无人机光伏巡检效率提升68%!陌讯动态融合算法实战解析
  • 模拟-38.外观数列-力扣(LeetCode)
  • 成就非凡:如何识别并服务那些注定成功的软件客户-优雅草卓伊凡
  • 正向矩阵(DCT)变换后还是一个矩阵,怎么减少存储空间
  • 软件加密工具-DSProtector使用说明
  • Adobe最新+MAC系统+系统+教程 软件+课程
  • 计算机视觉(opencv)——图像本质、数字矩阵、RGB + 基本操作(实战一)
  • 酉矩阵(Unitary Matrix)和随机矩阵
  • 在开发板上画出一个2048棋盘的矩阵
  • Jenkins全链路教程——Jenkins用户权限矩阵配置
  • 什么是键值缓存?让 LLM 闪电般快速
  • 面向远程智能终端的超低延迟RTSP|RTMP视频SDK架构与实践指南
  • 动手学深度学习(pytorch版):第一节——引言
  • web前端结合Microsoft Office Online 在线预览,vue实现(PPT、Word、Excel、PDF等)
  • 美食广场: 城市胃的便利店
  • JAVA,Maven继承
  • 开源大模型实战:GPT-OSS本地部署与全面测评
  • Postman接口测试详解
  • SpringBoot微头条实战项目
  • OpenCV入门:图像处理基础教程
  • 【题解】洛谷P3768 简单的数学题[杜教筛]+两种欧反公式解析
  • UDP网络编程chat
  • CompletableFuture的基础用法介绍
  • 技术优势铸就行业标杆:物联网边缘计算网关凭何引领智能变革?
  • 施耐德 Easy Altivar ATV310 变频器:高效电机控制的理想选择(含快速调试步骤及常见故障代码)