Windows下使用GraalVM+Maven+Picocli快速构建Java cli原生命令行工具

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

前言

云计算时代,Java即将重获新生!

在传统企业应用开发中,使用Java开发的程序依赖笨重的JDK运行环境,体积庞大;并且大多数流行的Java开发框架使用动态代理等特性来简化开发体验,但是却使得Java程序在启动过程中需要动态生成字节码,导致启动速度缓慢。

这些问题在过去的单点应用和分布式系统中并没有体现出很大的劣势,但在云计算的今天,大量服务使用Docker和Kubernetes构建和管理,无状态服务架构流行,这要求程序需要更小的体积以便于在庞大的云平台中分发、以及需要更快的启动速度。

而且程序体积庞大也使得Java与构建命令行小工具无缘。

但是,这些问题随着Oracle主导的GraalVM项目的日渐成熟,有了解决方案。

并且,Java的野心绝不只是追赶!

GraalVM简介:

官网:https://www.graalvm.org/

在这里插入图片描述

官网首页列出了三条特性:

  • 增加应用程序吞吐量并减少延迟
  • 将应用程序编译成自包含的小型本机二进制文件
  • 无缝地使用多种语言和库

本文将使用GraalVM的第二条特性,使用Maven,结合Picocli库快速构建一个功能完整Java cli命令行工具。

环境准备

安装Visual Studio 2019 Visual C++ Build Tools

  1. 下载链接:https://aka.ms/vs/16/release/vs_buildtools.exe

  2. 下载完成后双击 vs_BuildTools.exe

  3. 选中C++生成工具,记住安装位置,点击安装(安装完成后大约需要3G左右空间)

在这里插入图片描述

  1. 安装完成(如果提示需要重启电脑,请按提示重启电脑)

安装GraalVM Community 20.3.0

  1. 下载 graalvm-ce-java11-windows-amd64-20.3.0.zip(或者访问Gihub下载:https://github.com/graalvm/graalvm-ce-builds/releases/tag/vm-20.3.0
  2. 解压(我的解压路径为C:\Software\graalvm-ce-java11-20.3.0
  3. 设置环境变量

由于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%
  1. 验证安装
> %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工具

  • 离线安装:
  1. 下载 native-image-installable-svm-java11-windows-amd64-20.3.0.jar (我的路径为C:\Software\native-image-installable-svm-java11-windows-amd64-20.3.0.jar)

  2. 安装

> %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>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值