文章目录
前言
云计算时代,Java即将重获新生!
在传统企业应用开发中,使用Java开发的程序依赖笨重的JDK运行环境,体积庞大;并且大多数流行的Java开发框架使用动态代理等特性来简化开发体验,但是却使得Java程序在启动过程中需要动态生成字节码,导致启动速度缓慢。
这些问题在过去的单点应用和分布式系统中并没有体现出很大的劣势,但在云计算的今天,大量服务使用Docker和Kubernetes构建和管理,无状态服务架构流行,这要求程序需要更小的体积以便于在庞大的云平台中分发、以及需要更快的启动速度。
而且程序体积庞大也使得Java与构建命令行小工具无缘。
但是,这些问题随着Oracle主导的GraalVM项目的日渐成熟,有了解决方案。
并且,Java的野心绝不只是追赶!
GraalVM简介:

官网首页列出了三条特性:
- 增加应用程序吞吐量并减少延迟
- 将应用程序编译成自包含的小型本机二进制文件
- 无缝地使用多种语言和库
本文将使用GraalVM的第二条特性,使用Maven,结合Picocli库快速构建一个功能完整Java cli命令行工具。
环境准备
安装Visual Studio 2019 Visual C++ Build Tools
-
下载完成后双击
vs_BuildTools.exe -
选中C++生成工具,记住安装位置,点击安装(安装完成后大约需要3G左右空间)

- 安装完成(如果提示需要重启电脑,请按提示重启电脑)
安装GraalVM Community 20.3.0
- 下载 graalvm-ce-java11-windows-amd64-20.3.0.zip(或者访问Gihub下载:
https://github.com/graalvm/graalvm-ce-builds/releases/tag/vm-20.3.0) - 解压(我的解压路径为
C:\Software\graalvm-ce-java11-20.3.0) - 设置环境变量
由于GraalVM兼容JDK平台,安装GraalVM相当于是安装了新的Java环境,如果不想替换原有的Java环境变量,可在控制台设置临时的环境变量
set GRAALVM_HOME=C:\Software\graalvm-ce-java11-20.3.0
set JAVA_HOME=%GRAALVM_HOME%
set Path=%GRAALVM_HOME%\bin;%Path%
- 验证安装
> %GRAALVM_HOME%\bin\java -version
openjdk version "11.0.9" 2020-10-20
OpenJDK Runtime Environment GraalVM CE 20.3.0 (build 11.0.9+10-jvmci-20.3-b06)
OpenJDK 64-Bit Server VM GraalVM CE 20.3.0 (build 11.0.9+10-jvmci-20.3-b06, mixed mode, sharing)
安装native-image工具
- 离线安装:
-
下载 native-image-installable-svm-java11-windows-amd64-20.3.0.jar (我的路径为
C:\Software\native-image-installable-svm-java11-windows-amd64-20.3.0.jar) -
安装
> %GRAALVM_HOME%\bin\gu -L install C:\Software\native-image-installable-svm-java11-windows-amd64-20.3.0.jar
- 在线安装(从github安装,国内下载速度过慢):
> %GRAALVM_HOME%\bin\gu install native-image
创建Maven quickstart项目
添加Picocli Maven依赖
Picocli是一个用于方便构建cli工具的类库。
Picocli官网:https://picocli.info/
<dependency>
<groupId>info.picocli</groupId>
<artifactId>

本文介绍如何使用GraalVM和Maven结合Picocli库快速构建功能完整的Java CLI命令行工具,解决Java程序体积庞大及启动速度慢的问题。

806

被折叠的 条评论
为什么被折叠?



