今天我们要介绍的是spring-native,它可以让你的spring boot程序,体验graalvm编译器的特性,把你的应用直接编译成native的!
不需要再安装jre,你的应用程序将和exe一样,直接在目标机器上运行!而且启动时间不到1秒钟 。
要体验这个功能,我们从spring boot拿一个demo 。
https://start.spring.io/
在这里选择这个实验性的功能SpringNative 。下载下来之后,就可以使用maven进行打包测试 。
mvn spring-boot:build-imagegradle bootBuildImage
看一下这无敌的启动速度…. 0.038秒… 几乎是瞬时的!
神奇!
这一切,都得益于graalvm编译器 。不过,你至少要把JDK升级到11才能用,也算是堆Java8用户的一种别样的驱动吧 。
当然,只有在2.4.5以后的SpringBoot版本中,才支持Spring Native 。
GraalVM是什么? graalvm也是oracle的项目,它的代码地址是:
mvn spring-boot:build-imagegradle bootBuildImage
项目地址是:
www.graalvm.org/docs/
graalvm是一个想要统一天下的虚拟机 。因为它相比较与HotSpotVM,还能够运行其他语言比如ruby,python,php等 。
它是一个新的JVM,不同的是由于做了适配,它能够让不同的语言跑在同一个vm下面 。
看看下面这张图,就知道graalvm的野心有多大 。
这还没完,它最吸引人的地方就在于,它能够将应用代码,直接打包成native的二进制可执行代码,运行时连JVM都不需要了!
大家都知道,native和跑在vm里完全是两个档次,否则也不会有jit这么牛x的技术存在了 。连android和ios都知道,native的应用流畅性比跑在monotouch上或者hybrid上高很多很多,对于追求性能的企业级应用来说,这个功能就更加实用一些 。
【教你创建一个普通的 Java 项目 java在线运行工具】让人惊讶的是,它为各个语言实现了一个可以沟通的桥梁 。比如我看好js中的某个库,不需要重新开发一个了,在Java中直接就可以用 。这是因为,graalVM开发了跨语言互操作协议,能保证跨语言的互操作性 。
现在这个功能,大多数平台已经支持了 。
public class Example {public static void main(String[] args) {String str = "Native Image is awesome";String reversed = reverseString(str);System.out.println("The reversed string is: "reversed);}public static String reverseString(String str) {if (str.isEmpty())return str;return reverseString(str.substrin
推荐阅读
- 运动会加油稿20字左右 运动会加油稿怎么写
- 糯米面怎么和面 简单方法教你轻松搞定
- 电饼铛1200w和1500w哪一个好用
- 香肠怎么洗 香肠洗干净的方法
- 一个月的鸭子可以吃大米吗?
- 豆角有点老能做干豆角吗 教你选择怎样的豆角可以做干豆角?
- 广西百色鸭酱制作方法 教你广西百色鸭酱制作方法
- 三点水一个郭怎么读 三点水一个郭有几个音
- 描写一个人美丽的短句子 描写一个人美丽怎么写
- 红曲米粉危害 教你红曲米粉的正确使用方法