graalvm_GraalVM简介(社区版):革命还是进化?

graalvm

graalvm

1.简介

在过去的几年中,我们目睹了JVM生态系统中创新的惊人步伐和规模。 不仅每6个月就会发布新的JDK版本,而且研究和开发工作正在加速发展,而没有任何缺乏方向和功能的迹象。

本教程的思想源于对其中一项开发的好奇和困惑,即GraalVM项目,该项目从有前途的实验过渡到了尖端技术。 如果您也对此主题感兴趣,请加入我的旅程,我们将学习GraalVM是什么以及对普通开发者意味着什么。

2.什么是GraalVM?

官方文档中包含该问题的确切答案,但是当您仔细研究时,您可能会发现解释有些含糊,并提出了许多问题。

GraalVM是一种高性能的运行时,可显着提高应用程序的性能和效率,非常适合微服务。 它设计用于以Java,JavaScript,基于LLVM的语言(例如C和C ++)以及其他动态语言编写的应用程序。 它消除了编程语言之间的隔离,并实现了共享运行时的互操作性。

https://www.graalvm.org/docs/introduction/

我们了解的第一件事是GraalVM是一个运行时,但是什么样的运行时? 在性能和效率方面,它如何优于其他所有运行时? 最后但并非最不重要的一点是,它如何消除编程语言及其运行时之间的差异? 让我们尝试找到这些问题的答案,并希望能使GraalVM变得神秘。

对于每种受支持的编程语言, GraalVM都会模拟其默认运行时的行为,并且所有语言运行时的可执行文件都与GraalVM发行版捆绑在一起(我们将在稍后介绍)。 但是GraalVM仿真的运行时如何比默认的本地语言运行时表现更好?

GraalVM的心脏和灵魂是GraalVM编译器–一种动态的实时(JIT)编译器,旨在使用广泛的代码分析和高级优化技术来提高应用程序的效率和性能特征。 尽管GraalVM编译器是用Java编写的,但它使用中间表示(IR)来执行与语言无关的优化并生成机器代码。 当作为共享运行时运行时,这种独特的功能会将GraalVM扩展为真正的多语言平台。

最重要的是, GraalVM带有对JVM runtime的特殊特权处理。 首先, GraalVM编译器使用JVM编译器接口( JVMCI )与Java HotSpot VM集成,作为JEP 243的一部分提供。 但是GraalVM进一步走了一步,将其优化的编译器整合到本地映像中,这是一种先进的提前( AOT )编译技术,可将Java(和其他JVM语言)代码转换为本地平台可执行文件。

尽管听起来令人兴奋,但让我们停下来思考一分钟。 我们知道GraalVM编译器是用Java编写的,因此,当与Java HotSpot VM集成时,它必须首先通过JIT,然后才能做任何有用的事,对吗? 确实,以前曾经是这种情况,但要感谢libgraal ,它是由本机映像生成的共享库,其中包含GraalVM编译器的预编译版本!

3.进化还是革命?

GraalVM是否是一种出色的软件工程产品,它将改变我们用来运行应用程序的方式? 还是作为“银弹”流行语进行销售的另一种营销尝试?

就我个人而言,我可能不像我们大多数人那样擅长预测未来。 尽管如此,很明显GraalVM是进化思想和革命思想的结合。 例如,使用相同的高度优化的共享运行时,不同编程语言之间的无缝互操作性会带来大量不可预见的机会。

但是,至少在短期内,真正的赢家可能是Java和JVM平台。 HotSpot VM带有自己的高度优化的字节码C2编译器,该编译器使用C ++编写。 不幸的是,在许多资料中已经提到,多年来,它变得异常复杂且难以维护,而且更加完善。 GraalVM编译器可以看作是HotSpot VM的下一代编译器,有可能在将来成为完整的C2编译器替代品。 可能看起来不像是一场革命,但肯定是需要如此的演变。

但是,提前( AOT )编译和本机映像是一个完全不同的故事。 它将JVM带到了云原生无服务器计算的边缘,这在以前是无法想象的。 这绝对是JVM生态系统的突破。

4.获取GraalVM

GraalVM曾经是一个研究项目,但就在一年多以前,它已经作为可用于生产的技术而向世界展示。

“……我们相信GraalVM终于成熟并可以投入生产了。 ……”

https://medium.com/graalvm/announcing-graalvm-19-4590cf354df8

GraalVM发行版有两个版本: CommunityEnterprise 。 社区版本基于OpenJDK版本,而企业版本基于Oracle JDK ,需要付费订阅。 在这两种情况下,都可以使用Java 8和Java 11发行版。

在本教程中,我们将仅使用社区版。 到目前为止, 20.3.0是最新的GraalVM社区版本,该版本基于OpenJDK版本1.8.272OpenJDK版本11.0.9 (取决于您需要的捆绑软件)。 可以从项目的官方Github页面下载所有主要受支持平台的GraalVM社区发行

5.下一步是什么

在本教程的下一部分中,我们将讨论GraalVM在JVM应用程序上下文中带来的所有优点。

翻译自: https://www.javacodegeeks.com/2020/12/introduction-to-graalvm-community-edition-revolution-or-evolution.html

graalvm

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值