学习笔记

GraalVM 尝试

开始

GraalVM 是一个更快的JAVA虚拟机,而且可以构建native image这个词的意思是,如果是windows系统就能构建一个exe执行程序,其他系统就对应其他系统的执行程序,
quarkus通俗的来说,是基于该虚拟机的一个java web开放框架, 实现了标准的JAX-RS规范,并且顶层并没有采用传统的servlet, 而是使用了vert.x 这种react框架, 可以很好的实现react功能.

准备

  • 下载GraalVM, 根据自己系统弄个需要下
    载.
  • 配置PATH , JAVA_HOME等环境变量, 指向GraalVM所在的目录.
  • 通过Quarksu网站配置一个项目或者使用mvn命令行创建项目, mvn io.quarkus:quarkus-maven-plugin:2.0.0.CR2:create "-DprojectGroupId=com.sa" "-DprojectArtifactId=sa" "-DclassName=com.sa.GreetingResource" "-Dpath=/hello".

开发

默认Qarkus是使用maven作为项目管理的.
下载好项目,通过vscode 或者 idea打开,vscode会提示安装插件, 按照提示安装插件,idea自己搜索quarkus插件.
运行, mvn:dev, 不到1s就启动好了, 可以访问默认的/hello
quarkusmaven插件提供了安装第三方jar的命令
mvn quarkus:list-extensions 查看所有可以安装的第三方jar
mvn quarkus:add-extension -Dextensions='quarkus-jsonp' 安装第三方jar 或者mvn quarksu:add-extensions -Dextensions='xxx,xxx,x 批量安装第三方jar包,也可以使用通配符*安装.

运行

mvn quarkus:dev

打包

普通jar包: mvn package
exe本地可执行文件:

  • 安装MSVC 2019 对应你的GraalVM版本应该是openjdk11版本,
  • 安装windows sdk
  • 安装Microsoft visual studio –和上一步合并安装命令choco install visualstudio2019-workload-vctools , 前提是电脑得有chocolatey这个windows包管理工具.
  • 进入项目执行以下命令:

    call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat" mvnw package -Pnative -DskipTests

碰见的问题

由于电脑是洋垃圾cpu,所以cpu架构被识别为??而非arm的, 所以得在application.properties中添加quarkus.native.additional-build-args=-H:-CheckToolchain参数跳过检查.

结尾

总的来说GraaalVM的速度还是很快的, Quarkus也带来了新的web开发体验, 上手难度比较小,只要你懂JAX-RS规范就行,而且还很好的和docker进行了集成,可以直接配置hibernate entity 而不进行任何数据库配置, quarkus在背后会自动寻找docker为你创建数据库,让开发人员专注与开发. 但是关于graalVM编译本地可执行文件来说,感觉有点鸡肋,虽然实现了,但是还是需要visual studio 这种庞大的工具.