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

关于GraalVM的说明

GraalVM介绍

GraalVM 是由 Oracle Labs 开发的新一代高性能运行时,它不仅能显著提升 Java 应用在 JVM 上的执行效率,更能通过其革命性的原生镜像(Native Image)技术,将 Java 应用编译成独立的、平台相关的可执行文件。这使得 Java 应用拥有了毫秒级启动极低内存占用的能力,完美契合云原生、Serverless 和微服务等现代应用场景。通俗的说就是可以把class文件直接编译成可执行文件,不依赖JDK执行,运行速度快,内存占用低。

关于国产平台及中间件是否支GraalVM的说明

1. 从授权方GraalVM分为社区版和商业版

功能项GraalVM CE 社区版GraalVM EE 企业商业版(含新版 Oracle GraalVM)
开源协议GPLv2 with Classpath Exception,完整开源闭源专有许可,不可二次分发;新版商用免费但不开源
使用成本个人 / 企业开发、生产永久免费旧版需 Java SE 订阅付费;新版 Oracle GraalVM 生产免费,无官方售后
官方技术支持无 7×24 工单 SLA,仅 GitHub 社区付费订阅提供官方故障排障、安全补丁、专项调优支持
自定义移植源码公开,可自主移植龙芯 LoongArch/RISC-V闭源,无源码,仅官方 x86/AArch64 预编译包

2. 关于支持平台

官方仅提供x86/AArch64平台的windows、linux版本,龙芯、申威等平台版本不提供。

3. 按运行方式

(1) GraalVM 运行时 (GraalVM Runtime):这是一个功能完整的 JDK 发行版,可以像 OpenJDK 或 Oracle JDK 一样直接运行 .jar 文件。它内置了一个名为 Graal Compiler 的高性能 JIT 编译器,可以替换掉 HotSpot 的 C2 编译器,为传统 JVM 应用提供潜在的性能提升。

(2) 原生镜像 (Native Image):这是 GraalVM 最具颠覆性的特性。它是一个 AOT (Ahead-of-Time) 工具。它能在构建时对您的 Java 应用进行静态分析,将应用代码、所有依赖库以及 JDK 运行时中实际用到的部分,全部链接并编译成一个独立的二进制可执行文件(如 Linux 下的 my-app,Windows 下的 my-app.exe)。

优势:启动速度极快(毫秒级)、内存占用极低、无需安装 JVM 即可运行。

限制:由于是静态分析,Java 中的动态特性(如反射、动态代理、JNI)需要显式配置才能被识别。

通俗的说:如果GraalVM当普通JDK使用,则传统的Java类程序均可以运行。若是想通过Native Image将Java程序编译成二进制可执行文件,举例:

(1) 下载安装GraalVM

(2) 创建简单的Java程序

public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, GraalVM Native Image!"); } }

(3) 通过javac编译为class文件。

(4) 通过native-image命令来构建二进制文件

#native-image [全局选项] [目标选项(-H:xxx、-R:xxx)] [类路径] 主类名 [-o 输出文件名] native-image HelloWorld

构建成功后,您会在当前目录下看到一helloworldhelloworld.exe的可执行文件,该文件可以脱离JDK来运行。

注意:以上只是一个简单举例,当应用使用了 Spring Boot、Hibernate 等框架时,它们大量依赖反射。此时直接构建 Native Image 会失败。解决方案是使用 GraalVM 提供的 Tracing Agent 来自动生成所需的反射配置文件。后期运行过程中的调试也变的麻烦。

所以要考虑采用GraalVM要从这几方面来分析:

1. GraalVM的商业授权。

2. GraalVM支持的平台,先咨询麒麟、统信操作系统等是否支持GraalVM。

3. GraalVM的使用方式,一是当传统的JDK来使用,TongWeb支持;二是通过Native Image生成二进制文件,TongWeb企业版目前不能采用这种方式,绝大部分应用也很难一次性通过Native Image编译成功,后期运维、分析问题也是需要考虑的。

http://www.gsyq.cn/news/1582878.html

相关文章:

  • 无人机航拍输电线路缺陷检测开源数据集|电力电缆散股异物识别YOLODETR双格式图像库10452期
  • 基于U2-Net与深度度量学习的自动化花粉显微图像分析系统实践
  • 豆包导出pdf怎么调顺序?试试AI 导出鸭智能排序
  • 联邦学习实战:破解非独立同分布数据困局的算法策略与调优指南
  • AI开发-多路径写入一致性:从一次 Debug 到系统性防御
  • 【硬核长文】万字拆解无线网络核心:AP(无线访问接入点)从底层原理到企业级实战调优指南
  • 无人机遥感国土目标检测数据集 无人机耕地数据集 无人机道路农田检测 国土遥感地物实例分割数据集 yolo数据集第10759期
  • 五、进程控制
  • RFID 仓库管理系统 项目总结
  • 基于用户画像的AI内容生成与安全检测闭环系统实践
  • 问卷也能做高颜值?问卷星、金数据等5大平台美工设计能力实测
  • 高级java每日一道面试题-2026年02月26日-实战篇[Docker]-如何实现镜像的合规性检查(如金融行业的基线要求)?
  • MyBatis SQL映射配置全解析:XML配置、动态SQL与注解驱动深度实战指南
  • 基于近红外与隐式神经表示的低光图像去噪:频率解耦融合技术详解
  • 外部中断EXTI和NVIC
  • Human-in-the-Loop 场景应用
  • 微服务链路追踪的智能采样:从随机到语义感知的演进与实践
  • 融合物理约束与热图监督的视觉目标跟踪:提升鲁棒性的工程实践
  • Python之richtqdm包语法、参数和实际应用案例
  • GRAND解码算法:原理、优化与并行实现
  • 动态调度优化LDGM码有损编码:软硬BPGD算法性能提升实践
  • DeepSeek从入门到精通,2026年最值得用的国产AI
  • 【计算机工具类-CI和CD工具Skills】agentic-actions-auditor 技能
  • GEOSPAT框架:基于最优传输的地理空间AI跨域泛化实践
  • 3D高斯泼溅技术:实时渲染与SLAM应用解析
  • ASTRA框架:多主体图像生成中的身份与姿态解耦技术
  • DARLING框架:用变化检测增强强化学习应对非平稳环境
  • 2026最新专业排盘工具精度评测:如何判定传统历法数智化软件误差
  • 终端Agent的能力边界:从npm安装到source map锚定的三大可靠场景
  • 深度学习在生物声学中的应用与bacpipe工具解析