Graalvm-21 Windows初体验

前言
除了最新新出的jdk21以外,oracle还推出了重磅的graalvm-jdk-21。这个graalvm可以把java代码编译为本地执行文件,就是把原来的jar包直接打成exe。并且使用打完的exe占用的内存资源更小,启动速度更快,非常适合云平台部署,只是打包的时间比原来长了很多。实际用的话我们仍然可以在windows平台开发,将开发好的程序放到linux平台打成占用内存小、启动速度快的可执行文件。下面来介绍一下在Windows平台下安装和编译本地程序的过程。

前期准备

安装本地工具

在Windows平台编译要提前下载好相关的C++工具,可以使用Visual Stidio直接来安装。如下图:在单个组件里选下面这些。如果你使用的时Windows10,那么最后一项安装Windows10 SDK也可以。

在这里插入图片描述
下载安装完以后记得重启一下。

注意:如果后面遇到报错native-image building on Windows currently only supports target architecture: AMD64,回来把语言包的中文去掉,选上英文。

下载graalvm-jdk

现在大都使用idea进行开发,在File -->**Project Structre…**里可以直接下载,如下图所示,选graalvm-jdk-21就可以了。下载时间比较长,耐心等待一会。
在这里插入图片描述

安装完以后先别急着去改什么环境变量,我们全程在idea上操作的话是用不到这些配置的。另外网上有一些其他的教程会介绍手动安装native-image,这个也不需要,这样下载下来的jdk里是自带有的。至于native-image的作用,就是使用这个东西将java程序打成exe的。

编译Native Image

接下来介绍关键的步骤,将我们的代码编译成本地可执行文件。我们仍然不需要用什么复杂的命令,直接用idea的maven插件来完成。

创建项目

首先新建一个maven项目,结构如图所示,Test里就是经典的Hello World:
在这里插入图片描述

配置pom

接下来我们在pom.xml中换到阿里云的下载源,在最后添加上:

<pluginRepositories>
        <pluginRepository>
            <id>aliyun</id>
            <name>阿里云公共仓库</name>
            <url>https://maven.aliyun.com/repository/public</url>
        </pluginRepository>
    </pluginRepositories>

为了能直接使用maven插件来打包,我们需要在刚才的标签上面添加上:

<profiles>
        <profile>
            <id>native</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.graalvm.buildtools</groupId>
                        <artifactId>native-maven-plugin</artifactId>
                        <version>0.9.28</version>
                        <extensions>true</extensions>
                        <executions>
                            <execution>
                                <id>build-native</id>
                                <goals>
                                    <goal>build</goal>
                                </goals>
                                <phase>package</phase>
                            </execution>
                        </executions>

                        <configuration>
                            <fallback>false</fallback>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

这个是oracle的一个maven插件,有了它我们就能看到idea的maven插件变成了这样:
在这里插入图片描述

验收成果

这时候双击上图的package就能看到下面正在执行打包命令了,如果这里碰到报错native-image building on Windows currently only supports target architecture: AMD64,去上文看一下。有一说一,打包的时间还是比较长的,一个Hellow World要20s+。打完之后看一下目录结构,那个fortune.exe就是我们打出来的本地镜像了:
在这里插入图片描述
这个文件双击执行就可以了,如果看一闪而过不过瘾,可以在输出的语句上加个while循环。

这篇文章相比网上能找到的教程,我自认为更贴地气,贴近实际开发流程。前面一开始说过,我们通常是在Windows上开发,但是程序是部署在Linux上的,那么怎么能编译成Linux的可执行文件呢? 我没搜到直接在Windows上编的办法,但是可以使用native-image编译jar包。我们把Windows打好的jar包放到Linux上,然后在Linux上执行native-image -jar native_test.jar native_test就可以了。当然,环境还是需要再配一遍的。

贴一下官方的文档,不需要翻墙,但是英文的:

  • https://docs.oracle.com/en/graalvm/jdk/21/docs/solutions-overview/#oracle-graalvm
  • https://www.graalvm.org/latest/guides/?topic=all
  • https://graalvm.github.io/native-build-tools/latest/maven-plugin.html
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值