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中的文档:
- Polyglot Package 配置和运行跨语言应用程序
- Proxy Package 使用代理模拟Graal语言的对象
- IO Package 自定义文件系统的访问语言
如果你仍然有疑问,联系我们
原文请见链接:https://www.graalvm.org/docs/
作者:半场摇摆人
链接:https://www.jianshu.com/p/41d477a0caf9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。