Graal编译器

自JDK 10起,HotSpot中又加入了一个全新的即时编译器:Graal编译器,看名字就可以联想到它是来自于前一节提到的Graal VM。Graal编译器是作为C2编译器替代者的角色登场的,使用Java语音开发。 1.png

十大特性

  • 高性能的现代Java
  • 占用资源少,启动速度快
  • JavaScript, Java, Ruby以及R混合编程
  • 在JVM上运行原生语言
  • 跨语言工具
  • JVM应用扩展
  • 原生应用扩展
  • 本地Java库
  • 数据库支持多语言
  • 创建自己的语言

详细介绍

比较

内存占用少

2.jpg

启动速度快

3.jpg

环境搭建

1、下载软件,然后解压缩。

https://github.com/graalvm/graalvm-ce-builds/releases

2、设置环境变量

将GRAALVM_HOME和JAVA_HOME环境变量都设置到graalvm的根目录,同时设置PATH环境变量优先使用$GRAALVM_HOME/bin

3、列出当前已经安装的模块

$ gu list
ComponentId              Version             Component name      Origin 
--------------------------------------------------------------------------------
graalvm                  19.3.0              GraalVM Core        

4、查看当前可用模块

$ gu available
Downloading: Component catalog from www.graalvm.org
ComponentId              Version             Component name      Origin 
--------------------------------------------------------------------------------
llvm-toolchain           19.3.0              LLVM.org toolchain  github.com
native-image             19.3.0              Native Image        github.com
python                   19.3.0              Graal.Python        github.com
R                        19.3.0              FastR               github.com
ruby                     19.3.0              TruffleRuby         github.com

5、安装native-image模块

$ gu install native-image
Downloading: Component catalog from www.graalvm.org
Processing Component: Native Image
Downloading: Component native-image: Native Image  from github.com
Installing new component: Native Image (org.graalvm.native-image, version 19.3.0)

1、此处可能无法下载native-image-installable-svm-java11-windows-amd64-21.0.0.2.jar。可以通过迅雷下载,然后通过命令安装

gu -L install C:\native-image-installable-svm-java11-windows-amd64-21.0.0.2.jar

2、Error: Default native-compiler executable 'cl.exe' not found via environment variable PATH

安装Visual Studio->选择单个组件`` 微信截图_20210911195643.png

3、Error compiling query code 5.png

安装通用Windows开发平台,添加INCLUDE和LIB环境变量,路径根据自己的实际情况换下。

INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared;C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.27.29110\include;
LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\ucrt\x64;C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.27.29110\lib\x64;
PATH=%PATH%;C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.27.29110\bin\Hostx64\x64;

SpringBoot集成GraalVm

创建项目

直接到spring官网生产一个最简单的SpringWeb项目spring创建项目

添加依赖

native依赖

<!--添加此依赖,可以通过在编译时创建候选对象的静态列表来提高大型应用程序的启动性能 -->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context-indexer</artifactId>
</dependency>

<!--Graalvm-native 依赖 -->
<dependency>
	<groupId>org.springframework.experimental</groupId>
	<artifactId>spring-graalvm-native</artifactId>
	<version>0.8.3</version>
</dependency>

maven native iamge插件

<plugin>
	<groupId>org.graalvm.nativeimage</groupId>
	<artifactId>native-image-maven-plugin</artifactId>
	<version>21.0.0.2</version>
	<configuration>
		<skip>false</skip>
		<imageName>${project.artifactId}</imageName>
		<buildArgs>
			--no-fallback
		</buildArgs>
	</configuration>
	<executions>
		<execution>
			<goals>
				<goal>native-image</goal>
			</goals>
			<phase>package</phase>
		</execution>
	</executions>
</plugin>
<plugin>
	<artifactId>maven-assembly-plugin</artifactId>
	<version>3.1.0</version>
	<configuration>
		<descriptorRefs>
			<descriptorRef>jar-with-dependencies</descriptorRef>
		</descriptorRefs>
		<archive>
			<manifest>
				<mainClass>com.example.demo.DemoApplication</mainClass>
			</manifest>
		</archive>
	</configuration>
	<executions>
		<execution>
			<id>make-assembly</id>
			<phase>package</phase>
			<goals>
				<goal>single</goal>
			</goals>
		</execution>
	</executions>
</plugin>

打包运行

mvn package -Pnative 1.png

启动速度与内存对比

启动速度

Jar

321.png

nateive image

1.png

内存使用

Jar

1.png

nateive image

2.png

源码下载

源码下载


已有 0 条评论

    欢迎您,新朋友,感谢参与互动!