GraalVM

GraalVM

官方网站

GraalVM安装

社区版各版本下载地址

image-20211203194655337

配环境变量,和Java配的方法一样

image-20211203194544061

编译为平台码用,以Windows为例

下载Microsoft C++生成工具:点这里

b2baf59f65cc9c153cd2fe32d6b3d088

装完了之后配置环境变量 ★重要★

INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared;D:\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\include;

image-20211203195128928

LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\ucrt\x64;D:\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\lib\x64;

image-20211203195211088

Path=%Path%;D:\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\bin\HostX64\x64

image-20211203195354464

然后安装GraalVM插件 命令: gu install native-image

image-20211203195440553

如果出现jar包下载超时,请手动下载jar包,然后放到 \lib\installer\components 文件夹下,就不用cmd去下载了。(或者多尝试几次)

安装完成后 运行下面的命令查看已安装的插件 gu list

image-20211203195710161

此时,所有环境搭建的工作全部完毕。

GraalVM打包java为exe

image-20211204143852561

  1. 编译

image-20211204135704728

image-20211204135808152

  1. 运行测试

image-20211204143928619

  1. 打包exe (native-image ***)

image-20211204143946603

注意:这里有可能会报错,需要关闭安全卫士

image-20211204145040533

  1. 打包成功

image-20211204144219074

  1. 运行exe文件

image-20211204144717689

GraalVM打包jar为exe

maven打包项目的pom

父依赖管理

<dependencyManagement>
        <dependencies>
            <!--springboot 2.3.6.RELEASE-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.3.6.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--springCloud Hoxton.SR8-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR8</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring cloud alibaba 2.2.3.RELEASE-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.3.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.spring.boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
                <optional>true</optional>
            </dependency>
        </dependencies>
    </dependencyManagement>

父插件管理

<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
    <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
            <artifactId>maven-clean-plugin</artifactId>
            <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.0.2</version>
        </plugin>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
        </plugin>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.1</version>
        </plugin>
        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.0.2</version>
        </plugin>
        <plugin>
            <artifactId>maven-install-plugin</artifactId>
            <version>2.5.2</version>
        </plugin>
        <plugin>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
            <artifactId>maven-site-plugin</artifactId>
            <version>3.7.1</version>
        </plugin>
        <plugin>
            <artifactId>maven-project-info-reports-plugin</artifactId>
            <version>3.0.0</version>
        </plugin>
    </plugins>
</pluginManagement>

插件

<plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.tfs.graal.GraalApplication</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

properties

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

准备jar包

  1. maven打包项目为单个jar文件

image-20211204180544647

  1. jar包运行

image-20211204180706888

  1. 接口测试

image-20211204180741680

打exe

打包命令

native-image -jar ***.jar --no-fallback --initialize-at-run-time=io.netty.util.internal.logging.Log4JLogger --allow-incomplete-classpath

信息

image-20211204191103664

打包文件

image-20211204191407125

08-15
GraalVM 是一种高性能的运行时环境,支持多种语言(如 JavaJavaScript、Python、Ruby、R 等)的执行,并能够将 Java 字节码编译为原生可执行文件。其官方文档和使用指南是了解和掌握 GraalVM 技术的关键资源。 ### 官方文档与资源获取 GraalVM 的官方文档提供了详尽的安装说明、语言支持、工具链介绍以及高级功能的使用指南。可以通过访问其官方网站 [https://www.graalvm.org](https://www.graalvm.org) 获取最新版本的文档和下载链接。文档中涵盖了以下核心内容: - **GraalVM 架构与原理**:介绍 GraalVM 的多语言执行引擎、即时编译器 Graal、以及 Substrate VM(用于构建原生镜像)等核心技术组件。 - **安装与配置**:包括不同操作系统下的安装步骤、环境变量配置、与构建工具(如 Maven、Gradle)集成的方法。 - **语言与工具支持**:详细说明如何启用和使用 JavaScript、Python、R、Ruby 等语言支持,以及如何使用 LLVM 工具链执行 C/C++ 代码。 - **Native Image 指南**:指导开发者如何将 Java 应用程序编译为原生镜像,包括构建流程、可达性分析、反射配置等高级主题。 ### 下载与安装 GraalVM 提供了多个版本,包括适用于不同 JDK 版本(如 JDK 11、JDK 17)的企业版(GraalVM Enterprise)和社区版(GraalVM Community)。用户可以从以下链接下载对应操作系统的发行包: - [GraalVM Community 下载页面](https://github.com/graalvm/graalvm-ce-builds/releases) - [GraalVM Enterprise 下载页面](https://www.oracle.com/java/technologies GraalVM downloads.html) 对于 macOS 用户,可以使用 Homebrew Tap 快速安装 GraalVM。例如,安装 GraalVM JDK 17 社区版: ```bash brew install --cask graalvm/tap/graalvm-jdk17 ``` 安装完成后,需配置 `JAVA_HOME` 指向 GraalVM 的安装路径,并将 `bin` 目录加入系统 `PATH` 环境变量 [^2]。 ### 使用指南与实践建议 #### 快速搭建开发环境 使用 GraalVM Homebrew Tap 可以快速搭建本地开发环境。通过命令行工具可以轻松安装特定版本的 GraalVM 及其配套工具,如 Native Image、Truffle 语言实现框架等 [^1]。 #### 集成 Native Image 工具 GraalVM 的 Native Image 功能可将 Java 应用静态编译为独立的原生可执行文件,显著提升启动速度和内存效率。例如,构建 Spring Boot 应用的原生镜像: ```bash native-image -H:Name=myapp -H:Class=com.example.MyApp ``` 该命令会生成名为 `myapp` 的可执行文件,其启动时间可从传统 JVM 的 30 秒缩短至 1.5 秒,内存占用也从 1.2GB 减少至 300MB [^3]。 #### 配置与元数据管理 在构建原生镜像时,需要处理运行时动态加载的类、方法和字段。GraalVM 提供了可达性元数据仓库(Reachability Metadata Repository),用于提供这些信息的预定义配置。开发者可以通过添加特定插件或配置项,将这些元数据集成到构建流程中 [^4]。 #### 示例项目与实践 GraalVM 官方提供了多个示例项目,如 [graal-js-jdk11-maven-demo](https://github.com/graalvm/graal-js-jdk11-maven-demo),展示了如何在 Maven 项目中使用 GraalVM 执行 JavaScript 代码。克隆项目后,设置 Maven 使用 GraalVM 作为 Java 运行时即可运行示例代码 [^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值