今天我们要介绍的是spring-native,它可以让你的spring boot程序,体验graalvm编译器的特性,把你的应用直接编译成native的!
创新互联公司是一家集网站建设,万年企业网站建设,万年品牌网站建设,网站定制,万年网站建设报价,网络营销,网络优化,万年网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
不需要再安装jre,你的应用程序将和exe一样,直接在目标机器上运行!而且启动时间不到1秒钟。
要体验这个功能,我们从spring boot拿一个demo。
https://start.spring.io/
在这里选择这个实验性的功能SpringNative。下载下来之后,就可以使用maven进行打包测试。
- mvn spring-boot:build-image
- gradle bootBuildImage
看一下这无敌的启动速度.... 0.038秒... 几乎是瞬时的!
神奇!
这一切,都得益于graalvm编译器。不过,你至少要把JDK升级到11才能用,也算是堆Java8用户的一种别样的驱动吧。
当然,只有在2.4.5以后的SpringBoot版本中,才支持Spring Native。
graalvm也是oracle的项目,它的代码地址是:https://github.com/oracle/graal
项目地址是:www.graalvm.org/docs/
graalvm是一个想要统一天下的虚拟机。因为它相比较与HotSpotVM,还能够运行其他语言比如ruby,python,php等。
它是一个新的JVM,不同的是由于做了适配,它能够让不同的语言跑在同一个vm下面。
看看下面这张图,就知道graalvm的野心有多大。
这还没完,它最吸引人的地方就在于,它能够将应用代码,直接打包成native的二进制可执行代码,运行时连JVM都不需要了!
大家都知道,native和跑在vm里完全是两个档次,否则也不会有jit这么牛x的技术存在了。连android和ios都知道,native的应用流畅性比跑在monotouch上或者hybrid上高很多很多,对于追求性能的企业级应用来说,这个功能就更加实用一些。
让人惊讶的是,它为各个语言实现了一个可以沟通的桥梁。比如我看好js中的某个库,不需要重新开发一个了,在Java中直接就可以用。这是因为,graalVM开发了跨语言互操作协议,能保证跨语言的互操作性。
现在这个功能,大多数平台已经支持了。
什么叫做native呢?考虑下面这份代码。
- 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.substring(1)) + str.charAt(0);
- }
- }
通常情况下,我们直接这样运行,或者打包成jar包。
- javac Example.java
- java Example
但我们还可以多一步,就是把class文件native化。
- native-image Example
执行的时候,只需要输入 ./Example 就可以了。
使用native编译的应用,可以实现秒级别的启动,运行更快,占用内存更小。它与主流的部署方式如微服务、k8s等,更加的切合。
但它与传统的JVM也有很多不同,主要体现在:
虽然native有很多好处,但它的编译时间却很长,因为要做大量的代码静态分析,这也是所有native程序的通病吧。
这种thin jar的思路,是不是感觉Java的发展越来越像golang了呢?docker镜像也会因为这种改变便得更小更纯粹,而脱离jre的Java应用也越来越像一个真正的程序了。
但可惜的是,这种编译成native的思路虽然好,现阶段还是无法和golang相抗衡,主要还是在于编译器的差异上。
但愿graalvm能够继续发力,带java继续飞上几十年,养我三代子孙!
分享标题:不需要jre运行Java?你没看错!
分享链接:http://www.shufengxianlan.com/qtweb/news34/487934.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联