教你创建一个普通的 Java 项目 java在线运行工具


今天我们要介绍的是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

    推荐阅读