SpringBoot3.0的发布了一个王炸能力-AOT直接编译exe等可执行文件

2023-01-11 17:57:46 浏览数 (1)

springboot3.0发布了,其中有一个新特性是NativeExecutables。这个功能可以说是非常之秀。它支持你直接把你Java代码编译成机器码,也就是所谓的AOT技术。

说到AOT,我们就不得不提另外一个编译技术JIT。

通常的Java编译过程

通常的Java编译过程都是先从Java代码编译成字节码,然后在运行时再把字节码编译成具体的机器码(也就是0和1)。

JIT

JIT(JustInTime)编译技术是在通常的编译过程之上做了增强,JVM会根据运行过程中代码执行的热点情况,把一些热点代码提前编译成机器码,等下次执行这些热点代码的时候,就不用实时编译成机器码了,而是直接运行机器码即可,这样就提高了Java的运行速度。正所谓Just-In-Time。

AOT

AOT(ahead of time),就是提前把代码编译成机器码的一种编译技术。这样直接颠覆了Java正常的编译过程,而是首次编译时即把Java代码编译成机器码,跳过了字节码这个中间环节,可想而知,当程序运行时,直接运行机器码性能要提高很多,但这样的做法直接跳过了字节码,显然是丢失了一些通用性。

但SpringBoot仿佛正在希望把Java带上另外一条编译的道路?那就是AOT直接转机器码的道路。

SpringBoot3提供了一个新的spring boot maven plugin,那就是:

mvn spring-boot:aot-generate

你可以通过这个命令直接生成exe或者其他平台的可执行文件。

0 人点赞