把Java程序编译成独立运行的可执行程序

createh53周前 (12-11)技术教程19

GraalVM是一个高性能的JDK发行版,旨在加速执行用Java和其他JVM语言编写的应用程序,同时支持JavaScript、Ruby、Python和其他一些流行语言。GraalVM的多语言功能使得在一个应用程序中混合多种编程语言成为可能,同时消除了外语调用成本。

GraalVM主要想解决Java在云原生应用开发困境。

核心组件

可选组件

GraalVM 21.2各平台支持情况

Feature

Linux AMD64

Linux ARM64

macOS

Windows

Native Image

stable

experimental

stable

experimental

LLVM runtime

stable

experimental

stable

not available

LLVM toolchain

stable

experimental

stable

not available

JavaScript

stable

experimental

stable

experimental

Node.js

stable

experimental

stable

experimental

Java on Truffle

experimental

not available

experimental

experimental

Python

experimental

not available

experimental

not available

Ruby

experimental

not available

experimental

not available

R

experimental

not available

experimental

not available

WebAssembly

experimental

experimental

experimental

experimental

下载GraalVM

https://www.graalvm.org/downloads/



下载到本地后解压到某一位置,如解压到D:\graalvm-ce-java11-21.2.0\

配置GraalVM环境

https://www.graalvm.org/docs/getting-started/windows/
echo %PATH%
setx /M PATH "D:\graalvm-ce-java11-21.2.0\bin;"%PATH%
setx /M JAVA_HOME "D:\graalvm-ce-java11-21.2.0\"


检查版本信息


运行例子

public class Test {
	public static void main(String[] args) {
    	System.out.println("Hello GraalVM!");
    	System.out.println(args[0]);
    }
}

编译为独立exe(native)

要先安装native-image

主要系统要确定已经安装了visual Studio

使用带VS环境的命令行,运行native-image

生成test.exe,文件大小10M多点

相关文章

Java性能测试利器:JMH入门与实践|得物技术

目录一、JMH概述1. JMH的主要特点2. JMH与其他性能测试工具的比较二、快速开始1. 原型方式生成Maven项目2. 已有项目配置JMH三、JMH的核心概念和注解四、JMH的工作原理1. JV...

Java动态字节技术之Javassist

概述Javassist是一个开源的分析、编辑和创建Java字节码的类库,可以直接编辑和生成Java生成的字节码。相对于bcel, asm等这些工具,开发者不需要了解虚拟机指令,就能动态改变类的结构,或...

深入理解Java虚拟机——JMM(Java内存模型)

1、 为什么要有Java内存模型?1.1、 CPU和缓存一致性1. 缓存一致性问题出现的原因CPU的执行速度和内存的读取速度差距越来越大,导致CPU每次操作内存都要耗费很多等待时间。为解决这个问题,早...

使用 JMX 监控和管理 Java 程序

此篇文章介绍 Java JMX 技术的相关概念和具体的使用方式。当前文章属于Java 性能分析优化系列文章,点击话题可以查看所有文章。1. JMX 是什么?Java Management Extens...

看完这篇,还不懂JAVA内存模型(JMM)算我输

前言开篇一个例子,我看看都有谁会?如果不会的,或者不知道原理的,还是老老实实看完这篇文章吧。@Slf4j(topic = "c.VolatileTest") public class...

Java——API

腾讯云 API 全新升级3.0,该版本进行了性能优化且全地域部署、支持就近和按地域接入、访问时延下降显著,接口描述更加详细、错误码描述更加全面、SDK 增加接口级注释,让您更加方便快捷的使用腾讯云产品...