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或者其他平台的可执行文件。
本文分享自 ImportSource 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!