GraalVM是Oracle的一个新的开源项目,它试图使Java虚拟机成为运行所有主要语言的通用虚拟机。在GraalVM之前,已经很少有像Scala、Closure这样的语言将JVM作为其运行时。这对于这些语言来说是非常成功的。GraalVM进一步扩展了这一思想,使得以JVM为目标变得很容易,从而使更多的语言可以在JVM上共存。
GraalVM是从2014年开始的一个研究项目。推特从2017年开始就在制作中使用它。但对于普通公众来说,它在2019年下半年就已经准备好了。
在本文章中,我将探讨GraalVM可以为JVM生态系统带来什么。这是介绍GraalVM系列的第一篇文章。
什么是GraalVM
来自GraalVM网站:https://www.graalvm.org/why-graalvm/
GraalVM提供了一个全面的生态系统,支持大量语言(Java和其他基于JVM的语言、JavaScript、Ruby、Python、R、WebAssembly、C/C++和其他基于LLVM的语言),并在不同的部署场景(OpenJDK、Node.js、Oracle数据库或单机版)中运行它们。
他们本质上是在说,这是一个以JavaVM为核心的生态系统,希望在其上支持运行多种语言。
为什么要使用多种语言
为什么有些人关心在JVM上运行他们的语言?以下是一些原因
服务器调优虚拟机
JVM在服务器上经过多年的战斗测试。这可以使Node.js、javascript服务器框架等系统受益,后者目前运行在V8上,针对浏览器等客户端环境进行了优化。像Ruby这样的语言也已经做到了这一点。这就是为什么有很多公司运行JRuby实现。GraalVM使这变得更容易,并且用更少的努力支持更多的语言。
多语言支持
因为我们现在可以在同一个VM上运行多种语言,所以我们可以混合和匹配这些语言。这是非常强大的。例如,我们现在可以使用Javascript等解释语言扩展Java等编译语言的功能。这种组合使它比运行单一语言更强大。我们将在以后的帖子中对此进行更多讨论。
Java生态系统库
Scala采用JVM的原因之一是其丰富的生态系统。能够在JVM上运行使所有Java库都可用于Scala。现在,所有在graalVM上运行的语言都可以使用它们。
GraalVM比上面列出的有更多的优点。你可以在这里了解更多。
GraalVM架构
上图显示了graalvm的架构。
从上面的架构来看,下面是主要组件
- JavaHotSpot虚拟机:它是体系结构的核心。一切都由JavaVM提供支持。从Java8开始支持。
- Graal编译器:Graal编译器,负责从上述层生成的AST生成字节码
- Truffle框架:一个允许在AST模型中为不同语言定义解释器的框架。这种语言之间的标准AST模型使其具有多语言性
小结
GraalVM开创了虚拟机的新纪元。它将JVM定位为所有流行语言运行时的中心。这使JVM生态系统再次令人兴奋。
除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/2198.html
暂无评论