GraalVM-Polyglot虚拟机

GraalVM是一个由Oracle开发的Java扩展,提供多语言支持和AOT编译,以提高性能和缩短启动时间。它不仅支持Java和JVM语言,还支持JavaScript、Python等动态语言,以及WebAssembly和LLVM。GraalVM包括一个用Java编写的编译器、OpenJDK、Truffle框架和多个语言的实现,如JavaScript引擎和Python实现。其吸引力在于更快的启动速度、云原生应用和无服务器环境中的高效运行。
摘要由CSDN通过智能技术生成

如今,整个Java生态系统似乎都将采用GraalVM。 每个库,框架甚至社区发言人,开发人员都希望在GraalVM上自豪地工作,这使GraalVM对于现代Java应用程序至关重要。

Where it comes from?

GraalVM是用纯Java编写的JVM的扩展,支持由Oracle开发的多语言编程和提前编译。 多年来,Oracle维护和分发Java虚拟机以运行Java程序。 Java虚拟机主要用C / C ++编写。 JVM的主要目的是运行Java字节码(.class文件)并连续分析程序的性能,以查找程序中经常执行的所谓热点,并将其即时(JIT)编译为本地代码。 (机器码)以提高性能。 这是在运行时完成的,而不是在Java程序执行之前完成的,因此是及时完成的​​。

Graal OpenJDK项目演示了用纯Java编写的编译器可以生成高度优化的代码。 借助此AOT编译器,由于JIT编译器不必拦截程序的执行,因此可以缩短启动时间。

Oracle开始开发GraalVM,不仅可以使用更快的JVM,还可以使用Java编写的虚拟机来应对当前的多语言迁移。 GraalVM的体系结构如下所示:

Alt Text

What actually GraalVM do?

"GraalVM – a standalone Java Development Kit to execute Java or JVM-based languages (e.g., Scala, Kotlin), dynamic languages (e.g., JavaScript, R, Ruby, R, Python), WebAssembly, LLVM-based languages (e.g., C and C++) in one shared runtime." -- From GraalVM website

Features

  • 提前(AOT)编译本机映像松露语言实施框架可实现第三方语言支持低内存占用,使Java更快多种语言支持

Inside GraalVM Distribution

GraalVM编译器—用Java编写,并支持动态和静态编译 OpenJDK的 — Polyglot API & Isolates API 松露框架—用于为GraalVM创建语言和工具的语言实现框架 LLVM bytecode interpreter JavaScript解释器—符合ECMAScript的JavaScript引擎 Java HotSpot虚拟机 — runtime with the GraalVM编译器 enabled as the top tier JIT compiler for JVM-based languages Node.js — runtime with the GraalVM JavaScript解释器 enabled as the JavaScript engine. 本机图像工具—允许在封闭环境下将Java应用程序提前(AOT)编译为可执行映像的框架 FastR— 3.5.1编程语言的GraalVM实现 GraalPython— Python 3.7编程语言的GraalVM实现 松露红宝石— Ruby 2.6.2编程语言的GraalVM实现 简易语言— GraalVM的简单演示语言 GraalVisualVM—集成了命令行JDK工具和轻量级分析功能的可视化工具 理想的图形可视化器—用于查看和检查GraalVM和Truffle编译中的临时图形表示 碎石之战– WebAssembly(Wasm)语言解释器,以二进制格式运行Wasm程序。

Why do people put so much interest?

我想人们会更感兴趣,因为更快的启动和云原生映像激发了人们大量使用GraalVM的兴趣,并且将JVM应用程序编译为原生可执行文件使分发变得简单。将JVM应用程序编译成原生可执行文件后,它就可以运行 一个JVM。

在容器世界中,这很有趣,因为该过程启动速度快,并且由于没有虚拟机,因此无法使用JIT生成任何代码,并且该过程使用的内存更少(内存受限环境中JVM的传统问题) 。

GraalVM在无服务器环境中的本机映像非常快,并且能够展示Java在其他新的现代编程语言中仍处于正轨。

Install GraalVM Community Edition on Linux(Ubuntu)

1) Download the new release of GraalVM and unpack it anywhere in your filesystem:

$ tar -xvzf graalvm-ce-java11-linux-amd64-19.3.1.tar.gz

2)将解压后的目录移动到/ usr / lib / jvm /并创建一个符号链接,以使您在更新GraalVM版本时更加轻松:

# mv graalvm-ce-java11-linux-amd64-19.3.1/ /usr/lib/jvm/
# cd /usr/lib/jvm
# ln -s graalvm-ce-java11-linux-amd64-19.3.1 graalvm

3)添加新的替代配置。 首先通过列出已安装的JVM来获取优先级编号,然后使用该编号来配置新的优先级编号:

# update-alternatives --config java

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      auto mode
* 1            /usr/lib/jvm/jdk1.8.0_231/bin/java               0         manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode

在这种情况下,我安装了3个Java替代品,因此我将安装第四个。

# update-alternatives --install /usr/bin/java java /usr/lib/jvm/graalvm/bin/java 4

为了确保一切正常,请在您的环境中设置新的JVM:

$ sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      auto mode
  1            /usr/lib/jvm/jdk1.8.0_231/bin/java               4         manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
* 3            /usr/lib/jvm/graalvm/bin/java                    0         manual mode

Press <enter> to keep the current choice[*], or type selection number: 3

要验证,只需检查版本号:

$ java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b06)
OpenJDK 64-Bit GraalVM CE 19.3.1 (build 25.242-b06-jvmci-19.3-b07, mixed mode)

而且您已设定。

Note

本机映像可执行文件不再捆绑在GraalVM发行版中。 使用手动安装$ GRAALVM_HOME / bin / gu安装本机映像。

Conclusion

我希望您有足够的信息来帮助您入门,并且Oracle会继续在这个伟大的项目上投入时间,并使多语种语言支持及其本地映像功能很快就可以投入生产。

玩得开心!

如果您喜欢这篇文章,请留下喜欢或评论。

from: https://dev.to//abdulfousan/graalvm-polyglot-virtual-machine-4mn2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值