本地环境:
Windows10系统 64位
Maven 3.8.4
GraalVM CE 22.1.0(包含了 Openjdk 11.0.15 )
Visual Studio 2022 社区版
一、安装 graalvm相关介绍:
GraalVM-下一代JVM简介GraalVM的三大特点总结如下:
-
GraalVM可以代替JDK、JVM之前的工作。
-
GraalVM除了支持Java,也支持多种语言。
-
GraalVM可以对应用AOT,也就是把程序直接编译成二进制,从而提升启动速度、改进内存使用。
不废话了,直接开搞!!
-
下载
官网URL:https://www.graalvm.org/downloads/
有两个版本,分别以java8/java11 进行构建,本教程选择java11版本进行构建
java11:https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.3.0/graalvm-ce-java11-windows-amd64-20.3.0.zip -
解压配置环境变量(同JDK配置一致)
GRAALVM_HOME: D:ProgramFilesJavagraalvm-ce-java11-22.1.0 JAVA_HOME:D:ProgramFilesJavagraalvm-ce-java11-22.1.0 CLASSPATH: .;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar Path:%JAVA_HOME%bin
-
cmd查看
Windows开发环境下,还需要安装Visual Studio,否则maven打native-image时会报错:
Error: Default native-compiler executable 'cl.exe' not found via environment variable PATH
下载地址:Microsoft C++ 生成工具 - Visual Studiohttps://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/
勾选一些必须的工具包
然后开始下载
下载中....
经过N分钟后,终于 下载完了....
然后,在安装的时候,语言包勾选英文,去掉中文,否则使用mvn命令打native-image时会编译报错:Native-image building on Windows currently only supports target architecture: AMD64 (?? unsupported)
开始菜单 => Visual Studio Installer => 修改生成工具 => 语言包勾选英文,去掉中文。
提示安装完毕:
然后配置好环境变量:
MSVC = C:Program FilesMicrosoft Visual Studio2022CommunityVCToolsMSVC14.32.31326 WK10_INCLUDE = C:Program Files (x86)Windows Kits10Include10.0.20348.0 WK10_LIB = C:Program Files (x86)Windows Kits10Lib10.0.20348.0 ## 变量值必须为INCLUDE和LIB INCLUDE = %WK10_INCLUDE%ucrt;%WK10_INCLUDE%um;%WK10_INCLUDE%shared;%MSVC%include LIB = %WK10_LIB%umx64;%WK10_LIB%ucrtx64;%MSVC%libx64
不配置好的话,mvn 编译会报错:Cannot open include file: 'stdio.h': No such file or directory
另外,MAVEN自己装一下就好了,就不再赘叙
至此,环境就搞好了,
三、新建quarkus的demo项目(搭建步骤略.....)
可自己手动搭建,也可使用官网生成
官网地址:https://code.quarkus.io/
如果只是需要体验quarkus的急速启动、占用极少内存的话,可以用已经弄好的demo代码,压缩包的链接如下:
链接:https://pan.baidu.com/s/1_Gm6dijqLh2Pwn18h-vDgw?pwd=wr1c
提取码:wr1c
项目的pom.xml文件
4.0.0 org.acme code-with-quarkus1.0.0-SNAPSHOT 3.8.1 false 11 UTF-8 UTF-8 quarkus-bom io.quarkus.platform 2.9.0.Final 3.0.0-M5 D:ProgramFilesapache-maven-3.8.4 ${quarkus.platform.group-id} ${quarkus.platform.artifact-id}${quarkus.platform.version} pom import io.quarkus quarkus-resteasy-jsonb${quarkus.platform.version} io.quarkus quarkus-junit5${quarkus.platform.version} test io.rest-assured rest-assured5.0.0 test org.apache.maven.plugins maven-compiler-plugin${compiler-plugin.version} ${maven.compiler.release} ${maven.compiler.release} true org.apache.maven.plugins maven-surefire-plugin${surefire-plugin.version} org.jboss.logmanager.LogManager ${maven.home} ${quarkus.platform.group-id} quarkus-maven-plugin${quarkus.platform.version} build generate-code generate-code-tests native native org.apache.maven.plugins maven-failsafe-plugin${surefire-plugin.version} integration-test verify ${project.build.directory}/${project.build.finalName}-runner org.jboss.logmanager.LogManager ${maven.home}
后端接口类:
package org.acme;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "Hello from RESTEasy Reactive";
}
}
整个项目结构:
然后进行打native-image,命令如下
mvn package -Pnative
这次终于成功了。。。。。
构建出来的包,也才42MB
果然启动速度超快,毫秒级别.....
内存占用12MB左右
访问首页:
本地访问下接口,耗时1毫秒....
http://localhost:8080/hello
参考文档: GraalVM 官网下载链接 https://www.graalvm.org/downloads/ graalvm win10 64位环境搭建 https://www.jianshu.com/p/a5cdf85e4ffa
windows10 下 quarkus和GraalVM打包exe启动超快
使用Graalvm简单编译native-image 虚拟机研究:JDK/JVM的新储方式—GraalVM和Quarkus https://baijiahao.baidu.com/s?id=1709080667810830871
应“云”而生的 Java 框架Quarkus:构建本机可执行文件
Quarkus入门 Quarkus云原生应用初体验


