A short introduction to GraalVM
GraalVM是一个生态系统和共享运行时,不仅提供基于JVM的语言(如Java,Scala,Groovy和Kotlin)的性能优势,还提供其他编程语言(如JavaScript,Ruby,Python和R)的性能优势.此外,它还支持通过LLVM前端在JVM上执行本机代码. GraalVM 19.2.0基于JDK版本8u222.

上图说明了GraalVM作为开放式生态系统的体系结构.
虚拟化层代表GraalVM提供的编程语言. 客户编程语言(即JavaScript,Ruby,R,Python和LLVM bitcode)在与基于主机JVM的应用程序相同的运行时中的执行现在是脚踏实地的. 宿主语言和客户语言可以直接相互操作,并在同一存储空间中来回传递数据.
底部展示了适用范围. GraalVM既可以独立运行,也可以作为OpenJDK或Node.js平台的一部分进行嵌入,甚至可以在Oracle数据库中执行.
Distribution Components List
GraalVM由核心和可选组件组成,并作为存档分发. 该存档允许使用GraalVM作为高性能可嵌入多语言应用程序的运行时平台,并包括以下内容:
- Runtimes
- Java HotSpot VM运行时启用了GraalVM编译器,作为基于JVM的语言和支持的客户编程语言的顶层JIT编译器.
- Node.js运行时,启用了GraalVM JavaScript解释器作为JavaScript引擎.
- 库(jar文件)
- GraalVM编译器 - 一种动态即时(JIT)编译器,通过独特的代码分析和优化方法提高应用程序的效率和速度.
- JavaScript解释器 - 符合ECMAScript的JavaScript引擎.
- LLVM bitcode解释器 - 直接从LLVM bitcode执行程序的
lli工具的实现. - GraalVM Polyglot API - 用于在共享运行时中组合编程语言的API. 这些API允许您根据需要匹配编程语言,并使用更少的资源为您提供更好的性能.
- Utilities
- 使用GraalVM JavaScript解释器的JavaScript REPL
- LLVM bitcode解释器命令行实用程序
- GraalVM Updater实用程序,用于安装和管理其他组件
可以使用可选组件扩展GraalVM基本安装:
- GraalVM Native Image功能,允许将脚本应用程序提前编译为本机机器代码二进制文件. 警告: GraalVM Native Image作为Early Adopter技术提供 ,这意味着它可以在生产中使用,并且作为Oracle GraalVM Enterprise Edition订阅的一部分将由Oracle支持,但不受Oracle标准保修的保护.
- Python解释器 - 符合Python 3.7的实现.
- Ruby解释器 - 基于Ruby,MRI,2.6.2版标准实现的Ruby引擎.
- R解释器 - R编程语言的GNU R 3.5.1兼容实现.
警告:对Ruby,R和Python语言的支持是实验性的 . 实验性功能可能永远不会包含在生产版本中,或者在被视为生产就绪之前可能会发生重大变化.
GraalVM Features
GraalVM可以让你:
GraalVM Documentation
无论您是第一次尝试使用GraalVM运行应用程序还是准备开始使用GraalVM Polyglot API进行编码,请查看我们的文档以帮助您.
或者,您可以查看GraalVM SDK Javadoc中的参考文档:
- Polyglot Package允许您配置和运行多语言应用程序.
- Proxy Package允许您使用代理模仿客户语言对象.
- The IO包 allows you to customize the file system access of languages.
如果您无法找到所需答案或有疑难解答疑问,请与我们联系 .