GraalVM是一个共享运行时间的生态系统,无论是那些依赖于JVM的语言(Java、Scala、Groovy、Kotlin)还是说其他的编程语言例如(JavaScript、Ruby、Python、R)有性能上的优势。另外,GraalVM能够通过一种前端的LLVM执行JVM上面的原生代码。GraalVM 1.0版本是基于JDK8的。

Alt text

<center>上图描述了GraalVM作为开发生态系统的一个架构图</center>

虚拟化层代表了GraalVM提供的编程语言。非宿主型语言(JavaScript、Ruby、R、Python、LLVM二进制码)能够和基于JVM的宿主型语言达到同样的一个运行时间,并且两者可以在同一个内存空间中来回传递数据进行互操作。

架构图的底部表明了它的适用范围。GraalVM既可以独立运行,又可以嵌入到OpenJDK或者Node.js平台中,甚至可以嵌入到例如Mysql或者Oracle RDBMS这样的数据库中去。

GraalVM 1.0 正式版本中包含的语言解释器可以用于:

  • 基于JVM的语言( Java, Scala, Groovy, 或者 Kotlin)
  • JavaScript(包括Node.js)
  • 编译成LLVM二进制码的语言( C, C++, Rust)
  • Ruby, R, 以及 Python的试验版本

GraalVM是由以下几个部分组成的:

  • Graal: 动态的实时(JIT)编译器,通过独特的代码分析和优化方法,能够提升应用程序的效率和速度。
  • Graal Polyglot APIs:APIs用来在共享运行时间里绑定编程语言。这些APIs可以根据你的需求去匹配编程语言,并且只需很少的资源就可以达到更好的性能。
  • Graal SDK:一组高效的APIs集合,用于嵌入式Graal语言以及配置本机镜像。
  • Oracle HotSpot Java Virtual Machine (JVM):针对那些基于JVM的语言或者支持非宿主编程语言提供的一个运行时环境。

GraalVM特性

GraalVM能够:

  • 代码运行的更快更高效
  • 和一些更现代化的编程语言直接操作
  • 通过Graal SDK嵌入到语言内部
  • 创建编译成功的本机镜像
  • 使用简单的工具集合来监控、调试、描述代码

GraalVM参考文档

另外,你可以去了解 JavaDoc 中的文档:

如果你仍然有疑问, 联系我们

原文请见链接: https://www.graalvm.org/docs/



作者:半场摇摆人
链接:https://www.jianshu.com/p/41d477a0caf9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

GraalVM是一个共享运行时间的生态系统,无论是那些依赖于JVM的语言(Java、Scala、Groovy、Kotlin)还是说其他的编程语言例如(JavaScript、Ruby、Python、R)有性能上的优势。另外,GraalVM能够通过一种前端的LLVM执行JVM上面的原生代码。GraalVM 1.0版本是基于JDK8的。Alt text&lt;center&gt;上图描...
GraalVM 是一种开源的虚拟机平台,由Oracle公司开发。它支持多种编程语言,包括Java、JavaScript、Python、Ruby、R、C++等,旨在提高应用程序的性能和扩展性 本文从什么是 GraalVM 、适用场景、不适用场景、发展前景、目前使用它的公司和组织、它的多语言架构、与docker技术上的兼容、社区版与企业版的区别等方面让你快速了解。
什么是 GraalVM 呢? 这个东西好啊,这个东西是一个超级虚拟机,可虚可实,怎么说呢,它可以运行脚本代码,可以运行跨平台代码,最牛B的是,它TM还能把这些代码编译成机器码,你说上哪说理去,执行效率CUA的一下就上去了,速度可媲美C++,就是这么不讲武德。 它可以运行什么代码呢? 有:Java, Python, Ruby, JavaScript & Node.js, R, LLVM 这玩意儿都谁在用呢? 首先说的是以“福报”著称的阿里巴巴,用这玩意儿干啥呢?用他们自己开发的SOFA Boot
Java 主导着企业级应用。但在云计算领域,采用 Java 的成本比它的一些竞争对手更高。原生编译降低了在云端采用 Java 的成本:用它创建的应用程序启动速度更快,使用的内存更少。 那么,Java 用户的问题来了:原生 Java 是如何改变开发方式的?我们在什么情况下应该切换到原生 Java?什么情况下又不应该切换?我们应该使用什么框架?本系列文章将回答这些问题。 GraalVM 自三年前发布以来,引发了一场 Java 开发革命。 GraalVM 最常被讨论的特性之一是它的原生镜像是基于提前(AOT)编
哈喽,大家好,我是指北君。 今天给大家推荐的是 Oracle Labs 开源的跨语言全栈虚拟机—— GraalVM 。 对不需要长时间运行的、小型化的应用来说, Java 天生就带有一些劣势,特别是近几年从大型单体应用架构向小型微服务应用架构发展,再进一步上云原生技术潮流下, Java 表现出来很多不适应。 体现在单个微服务随时可以中断和更新的场景中, Java 启动时间相对较长、需要预热才能达到最高性能的特点,这种不适应尤为明显。 而在无服务架构中,上面的不适应更加突出。相比服务,一个函数的规模通常小,执
GraalVM 有许多不同的组件,如果你只是听说过它或有些简单的了解,肯定无法一窥全豹。本文将列举下 GraalVM 的几大常用功能,看看它们都能做些什么。 高性能的现代Java 占用资源少,启动速度快 JavaScript, Java, Ruby以及R混合编程 在JVM上运行原生语言 跨语言工具 JVM应用扩展 原生应用扩展 本地Java库 数据库支持多语言 创建自己的语言 本文将要 介绍 的内容在Gra...
该操作设置了 GraalVM 环境以供在GitHub操作中使用。 它下载(如果尚未缓存)所需的 GraalVM Community Edition版本 将 GraalVM 发行版提供的执行器添加到环境中 注册问题匹配器以输出错误 从19.3.0版开始,每个 graalvm 版本都可以使用修饰符来指定JDK的版本。 java8和java11在atm上可用。 steps : - uses : actions/checkout@latest - uses : DeLaGuardo/setup- graalvm @4.0 with : # GraalVM version, no pattern syntax available atm graalvm : ' 21.0.0.2 ' # Java version, optional, defa
org. graalvm .polyglot 是一个 Java 库,它位于 Maven 仓库中。要在你的项目中使用它,你需要在你的项目的依赖管理工具(例如 Maven 或 Gradle)中添加对 org. graalvm .polyglot 的依赖。 例如,在 Maven 中,你可以在你的 pom.xml 文件中添加如下依赖: <dependency> <groupId>org. graalvm .polyglot</groupId> <artifactId>polyglot</artifactId> <version>1.0.0</version> </dependency> 在 Gradle 中,你可以在你的 build.gradle 文件中添加如下依赖: implementation 'org. graalvm .polyglot:polyglot:1.0.0' 你需要替换 1.0.0 为最新发布的版本号。