java在线运行工具「必看:教你创建一个普通的 Java 项目」

美好的1天即将在这里开始,下面就由笔者蒋凤言来一起聊聊java在线运行工具,教你创建一个普通的 Java 项目,以及语言,代码,编译器这些一系列的相关干货内容,认认真真阅读完,若能把我想表达的全部理解,相信你已经离大牛不远了哈!

今天我们要介绍的是spring-native,它可以让你的spring boot程序,体验graalvm编译器的特性,把你的应用直接编译成native的!

不需要再安装jre,你的应用程序将和exe一样,直接在目标机器上运行!而且启动时间不到1秒钟。

要体验这个功能,我们从spring boot拿一个demo。

https://start.spring.io/

在这里选择这个实验性的功能SpringNative。下载下来之后,就可以使用maven进行打包测试。

不需要jre运行Java?你没看错

mvn spring-boot:build-image
gradle bootBuildImage

看一下这无敌的启动速度…. 0.038秒… 几乎是瞬时的!

不需要jre运行Java?你没看错

神奇!

这一切,都得益于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的野心有多大。

不需要jre运行Java?你没看错

这还没完,它最吸引人的地方就在于,它能够将应用代码,直接打包成native的二进制可执行代码,运行时连JVM都不需要了!

大家都知道,native和跑在vm里完全是两个档次,否则也不会有jit这么牛x的技术存在了。连android和ios都知道,native的应用流畅性比跑在monotouch上或者hybrid上高很多很多,对于追求性能的企业级应用来说,这个功能就更加实用一些。

让人惊讶的是,它为各个语言实现了一个可以沟通的桥梁。比如我看好js中的某个库,不需要重新开发一个了,在Java中直接就可以用。这是因为,graalVM开发了跨语言互操作协议,能保证跨语言的互操作性。

现在这个功能,大多数平台已经支持了。

不需要jre运行Java?你没看错

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也有很多不同,主要体现在:

  1. 系统的性能分析会在编译阶段就给出
  2. 没用的部分和代码将不会编译,直接会被移除,这得益于前些java版本的模块化
  3. 需要提前对反射、资源和动态代理进行转换,没有类加载的延迟
  4. classpath在编译阶段固定
  5. class将不会被懒加载,回在启动的时候一股脑放到内存

虽然native有很多好处,但它的编译时间却很长,因为要做大量的代码静态分析,这也是所有native程序的通病吧。

End

这种thin jar的思路,是不是感觉Java的发展越来越像golang了呢?docker镜像也会因为这种改变便得更小更纯粹,而脱离jre的Java应用也越来越像一个真正的程序了。

但可惜的是,这种编译成native的思路虽然好,现阶段还是无法和golang相抗衡,主要还是在于编译器的差异上。

但愿graalvm能够继续发力,带java继续飞上几十年,养我三代子孙!

好了,今天就给各位讲到这里,希望对你有帮助,看完了,如果你觉得java在线运行工具「必看:教你创建一个普通的 Java 项目」还不错的话希望多多支持哦!浏览寂寞网更多页面学习更多相关知识哦!

本文发布者:万事通,不代表寂寞网立场,转载请注明出处:https://www.jimowang.com/p/24456.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 jimowangmail@126.com 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年12月23日 10:37
下一篇 2022年12月24日 09:02

相关推荐

  • 为什么菜鸟裹裹看不到取件码 详解:菜鸟现在都不发取件码了怎么办

    大家好,今天李素芬为大家带来了一些关于为什么菜鸟裹裹看不到取件码,菜鸟现在都不发取件码了怎么办的专业知识,以及快递,包裹,驿站,手机,客服热线相关的实用干货和最新资讯分享,这篇文章将会为初学者提供一些实用的方法和技巧,帮助你更好地理解这个领域。 菜鸟裹裹是目前很多人都使用的平台,毕竟都会在淘宝上面购物,而淘宝很多物流都可以通过菜鸟裹裹上面显示。那么,为什么菜…

    2023年4月7日
  • 游戏网名大全排行榜男艺术字「最新5个几乎一模一样的沙雕游戏名字?」

    大家好,很高兴又和你见面了,感谢你能经常过来支持周鹏杰,这次我们就来聊聊游戏网名大全排行榜男艺术字(5个几乎一模一样的沙雕游戏名字?),以及姨妈,南风,大人的相关内容干货,其他的废话在这里我也不说了,我们直接来进入正题吧! 1、*˙。臉疍灬2、若心๊ิ ะ3、꧁༺❀ൢ白蛇ൢ❀༻꧂4、ৡৢﺴﻬ独宠ৢ永远不变5、◌ꦿSeven◌ૢ ҉͜6、无人完美7、ℒℴѵℯ寒…

    自媒体 2022年12月28日
  • lulu瑜伽裤适合多少度 以及露露瑜伽裤孕妇可以穿吗

    哈喽,小伙伴们大家好,今天赵荔又来给大家分享一些关于lulu瑜伽裤适合多少度,露露瑜伽裤孕妇可以穿吗的内容,以及瑜伽,孕妇,身体,服装,款式相关的实用干货和最新资讯分享,想要做好任何事情,都需要有一个明确的思路。希望我的分享能为你提供一些启发和思考! 露露瑜伽裤一般是适合穿的,但是也需要选择适合自己的码数、款式以及面料,孕妇在练瑜伽时需要避免过于拉伸,适当运…

    2023年3月23日
  • 怎样设置玩游戏不卡 精选:双显卡笔记本电脑怎么切换显卡只用独显

    大家好,今天尤思融为大家带来了一些关于怎样设置玩游戏不卡,双显卡笔记本电脑怎么切换显卡只用独显的专业知识,还有关于显卡,笔记本电脑,模式,游戏,里面等等一系列实用的干货内容,在写这篇文章之前,我经过了很多次的尝试和总结,希望这些经验对你也有帮助。 进入2022年,大部分厂家的高性能游戏本均已支持独显直连功能。根据笔者之前的实际测试来看,虽然独显直连的功能是一…

    2023年6月1日 自媒体
  • 受灾群众寒冬中吃到了大盘鸡 – 视频

    亲爱的观众朋友们,我是主持人李红艳,非常荣幸为大家呈现最新的资讯。最近有关受灾群众寒冬中吃到了大盘鸡的新闻屡屡见诸媒体,引起了不少人的关注。下面就让我们一起来揭开这个事件的面纱,了解到底发生了什么吧! 原标题:受灾群众寒冬中吃到了大盘鸡 #震后这些瞬间让人心安#:在甘肃积石山县大河家镇大河村受灾群众安置点,安置群众已增加到近1600人。目前,每顶帐篷都能通电…

    自媒体 2023年12月21日
  • 假酒一般人能喝出来吗 详解:怎么判断喝到假酒了

    很高兴又见面了,这次朱馨钰要和大家聊聊假酒一般人能喝出来吗,怎么判断喝到假酒了这个话题,还有关于假酒,口感,试剂,商家,方法这些的实用干货和最新内容分享,想要做好任何事情,都需要有一个明确的思路。希望我的分享能为你提供一些启发和思考! 假酒在市面上还是存在的,很多不法商家为了多赚点黑心钱,会故意进货假酒,以假乱真的拿出去售卖,但是喝假酒会危害到他人健康,而且…

    2023年3月30日