如今,整个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的体系结构如下所示:

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 javaThere 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 mode2            /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 mode1            /usr/lib/jvm/jdk1.8.0_231/bin/java               4         manual mode2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
* 3            /usr/lib/jvm/graalvm/bin/java                    0         manual modePress <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

GraalVM-Polyglot虚拟机相关推荐

  1. org.graalvm.polyglot 依赖哪个maven

    org.graalvm.polyglot 是一个 Java 库,它位于 Maven 仓库中.要在你的项目中使用它,你需要在你的项目的依赖管理工具(例如 Maven 或 Gradle)中添加对 org. ...

  2. org.graalvm.polyglot maven仓库不存在

    很抱歉,我无法解决这个问题.我是一个计算机程序,没有访问 Maven 仓库的能力.如果您遇到了问题,建议您尝试在线搜索解决方案或者联系 Maven 仓库的管理员.

  3. 使用GraalVM实现java调用python脚本

    背景说明 在很多场景下,我们都有从java调用脚本的功能,常用的有groovy脚本,pyhon脚本和js等.在上篇中,列举了java调用pyhton脚本的几种方案,并最终选取了JEP的方式,但是随着业 ...

  4. 【译】GraalVM—下一代JVM介绍

    原标题:GraalVM – an introduction to the next level JVM 随着Red Hat宣布Quarkus作为- 为GraalVM和HotSpot量身定制的下一代Ku ...

  5. java nashorn_在JDK11上GraalVM的JavaScript性能是Nashorn的两倍

    GraalVM是一个运行时平台,它支持Java和其他基于Java字节码的语言,但也支持其他语言,如JavaScript,Ruby,Python或LLVM.我们坚信,正如我们目前所知,它是语言虚拟机的未 ...

  6. 学习使用Whally GraalVM!

    介绍 在Truffle在神圣的Graal中服务:Graal和Truffle在JVM上进行多语种语言解释的帖子中,我们得到了简短的介绍,并对Graal,Truffle及其周围的一些概念进行了深入研究. ...

  7. 基于 GraalVM 的 ShardingSphere Proxy Native 探索

    作者简介:ShardingSphere Contributor,何其恒,自2021 年开始为项目贡献小的改进.专注于添加现有模块对 GraalVM Native-Image 的第一方支持与 Shard ...

  8. 解密新一代Java JIT编译器Graal

    \ 关键要点 \\ Java的C2 JIT编译器寿终正寝.\\t 新的JVMCI编译器接口支持可插拔编译器.\\t 甲骨文开发了Graal,一个用Java编写的JIT,作为潜在的编译器替代方案.\\t ...

  9. Python训练了个模型,怎么交给Java用呢?

    最近碰到几个人问,如何实现 java 调用他们写好的 Python 应用(模型),这里我就把几种常见的办法做下汇总整理.喜欢本文记得收藏.关注.点赞. [注]文末提供技术交流群 推荐文章 李宏毅< ...

  10. Oracle发布多语种虚拟机平台GraalVM 1.0

    \ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ Oracle发布了多语种虚拟机平台GraalVM的1.0版本.初始发布版包括运行Java和J ...

最新文章

  1. 【 NLS 】Newton – Raphson Iteration Procedure of TOA - Based Positioning
  2. list转torch tensor
  3. MFC Windows 消息发送顺序
  4. GridView 序号 排序 正序 倒序
  5. 特殊类型窗体制作: 用C#实现启动欢迎界面
  6. UNIX网络编程——fcntl函数
  7. vue-router之路由属性配置说明
  8. EntityFramework中常用的数据删除方式
  9. Redis基础(三)——数据类型
  10. java AST 表达式_Atitti.java exp ast java表达式语法ast构造器
  11. .NET下,你采用的哪种方式来操作数据库
  12. Enable mod_rewrite in apache2.2
  13. Linux内核调优之Sysctl研究
  14. xp+WinDBG+VMware调试内核
  15. php检测移动浏览器,PHP 检测手机浏览器的代码
  16. 导入自己写好的python包
  17. 使用AJAX 和php数组两种方式获取LOL英雄信息
  18. 开源项目-绩效管理系统
  19. 禁止K8S容器内子进程拥有提升权限的能力
  20. 全网史上最全的AR学习开发资源汇总(转载他人整理作品,供参考)

热门文章

  1. 广东计算机应用基础实践考试成绩查询,广东考试成绩查询入口
  2. 零基础DIY四轴飞行器超级详细保姆级教程(STM32F407ZGT6主控、WIFI图传、陀螺仪平衡、气压计/超声波定高、手机蓝牙控制等功能)
  3. echarts实现贵州地图
  4. ZZ:Django 模板
  5. HBuilder云打包ios证书申请流程
  6. Linux 命令自动补全包bash-completion
  7. 全球及中国身体区域网络行业商业模式分析及投资风险预测2022年版
  8. Hippo4j 官宣!Hippo4j 1.4.x 新版本正式发布,探索更多玩法
  9. 【Redis 高级】- 持久化 - RDB
  10. pqc的中文全称_PQC是什么?