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

  • Post author:
  • Post category:其他


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

发行版有两个版本:

Community



Enterprise

。 社区版本基于

OpenJDK

版本,而企业版本基于

Oracle JDK

,需要付费订阅。 在这两种情况下,都可以使用Java 8和Java 11发行版。

在本教程中,我们将仅使用社区版。 到目前为止,

20.3.0

是最新的

GraalVM

社区版本,该版本基于

OpenJDK

版本

1.8.272



OpenJDK

版本

11.0.9

(取决于您需要的捆绑软件)。 可以从项目的

官方Github页面

下载所有主要

受支持

平台的

GraalVM

社区发行



5.下一步是什么


在本教程的下一部分中,我们将讨论

GraalVM

在JVM应用程序上下文中带来的所有优点。

翻译自:

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

graalvm