不需要jre运行Java?你没看错
今天我们要介绍的是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是什么?
graalvm也是oracle的项目,它的代码地址是:mvn spring-boot:build-image gradle bootBuildImage
项目地址是: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开发了跨语言互操作协议,能保证跨语言的互操作性。
现在这个功能,大多数平台已经支持了。
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也有很多不同,主要体现在:系统的性能分析会在编译阶段就给出没用的部分和代码将不会编译,直接会被移除,这得益于前些java版本的模块化需要提前对反射、资源和动态代理进行转换,没有类加载的延迟classpath在编译阶段固定class将不会被懒加载,回在启动的时候一股脑放到内存
虽然native有很多好处,但它的编译时间却很长,因为要做大量的代码静态分析,这也是所有native程序的通病吧。End
这种thin jar的思路,是不是感觉Java的发展越来越像golang了呢?docker镜像也会因为这种改变便得更小更纯粹,而脱离jre的Java应用也越来越像一个真正的程序了。
但可惜的是,这种编译成native的思路虽然好,现阶段还是无法和golang相抗衡,主要还是在于编译器的差异上。
但愿graalvm能够继续发力,带java继续飞上几十年,养我三代子孙!
作者:小姐姐味道
链接:https://juejin.cn/post/6970949737767763998
荣耀Magic4概念机直面全面屏搭配双OIS光学防抖,还有18G运存一提到荣耀,相信大家或多或少都有所了解,荣耀作为国内知名的手机厂商,也是敢于突破创新的手机厂商。因此,经过近几年的不懈努力和艰苦奋斗,HONOR为行业带来了许多创新产品,尤其是荣耀
AI为科技强国添翼,百度挑起智能时代创新大梁2021年必为科技强国之年科技强国作为国家战略,被摆在空前重要的支柱性位置。1月5日,2021年全国科技工作会议在京召开。据悉,会议把科技自立自强作为国家发展的战略支撑,深入实施创
RedmiK50Pro被进一步确认,外观参数皆传出新消息,诚意十足红米手机是知名手机品牌。同时,其较高的硬件性能和突出的产品性价比让红米手机深受年轻人的喜爱。在产品方面,通过不断的研发,红米系列为行业带来了很多惊艳的产品,比如RedmiK20Pr
京东扶贫的三条曲线现在回过头来看我在农村里碰到的大爷大娘,非常清楚地知道很多人就是小病拖成大病然后去世的,有些慢性胃炎患者,慢慢拖成了胃癌,慢阻肺患者慢慢变成了肺癌这些都是看得见发生的事实。谈起过往
超越超越门户,升级自媒体之道,吴晨光两字说透传播本质今年3月,人民网人民慕课吴晨光工作室成立(图为吴晨光在课程录制中)怎么打造10万爆款,如何才能起推文好标题,运营和编辑的区别在哪里这些问题永远在困扰媒体从业者。市面上也不是没有探讨
2亿美元落袋,杨浩涌和姚劲波进入决赛做生意讲究个落袋为安,而车好多集团CEO杨浩涌大概是对此最有感触的人。日前,车好多集团宣布完成2亿美元的追加融资,最终D轮融资总额达到17亿美元,投资方包括软银愿景一期基金红杉资本
相爱相杀定格财报季,斗鱼虎牙孰强孰弱经历了野蛮生长与洗牌升级,游戏直播平台逐渐走入了成熟期。资本收紧业务完备,用户增长相继走入平台期后,一整套成熟完善的玩法已经打磨完毕,逐渐寡头化的综合直播赛道进入了寻求精细化运营,
全时大跃进败北,线上线下难成一盘棋5月11日,全时便利店发布停止营业告知函,称将于5月20日24点0分经营进行调整。而该消息发布后10分钟左右,即被删除。已删除的停止营业告知函称因公司经营战略调整,全时便利店北京区
电商助农摸底考,天猫618的造血式助农样板突如其来的疫情,为全社会踩下一脚急刹车。在必须为线下场景加上一道道保险,将疫情防控固化为新常态的当下,为千行万业插上一双上云的翅膀,成为不少科技企业的主旋律。在实时互动直播等技术的
斗鱼虎牙合并尘埃落定,游戏直播进入战争2。0在传了很长一段时间绯闻后,斗鱼虎牙的合并终于尘埃落定。8月10日晚,据外媒报道,斗鱼已经收到了来自腾讯控股的一份初步的不具约束力的建议书建议斗鱼和虎牙进行换股合并。同时,欢聚集团与
卧底花小猪司机群,我们看到了滴滴在下沉市场的另一面花小猪打车,打车可以更便宜。最近,一只特立独行的猪,带着它骚粉小香风的广告色直击灵魂的宣传语,以凶猛的姿态,闯入了以遵义临沂为代表的下沉市场对乘客,花小猪送上了新用户打车0元起的优