3年前 (2021-08-06)  相关技术 |   抢沙发  731 
文章评分 0 次,平均分 0.0

上一篇中介绍了GraalVM的基本功能,GraalVM是Oracle的一个新的开源项目,它试图使Java虚拟机成为运行所有主要语言的通用虚拟机。在GraalVM之前,已经很少有像Scala、Closure这样的语言将JVM作为其运行时。这对于这些语言来说是非常成功的。GraalVM进一步扩展了这一思想,使得以JVM为目标变得很容易,从而使更多的语言可以在JVM上共存。

GraalVM是从2014年开始的一个研究项目。推特从2017年开始就在制作中使用它。但对于普通公众来说,它在2019年下半年就已经准备好了。

在本系列文章中,我将探讨GraalVM可以为JVM生态系统带来什么。这是该系列的第二篇文章,它开始探索graalvm的多语言方面。

Polyglot虚拟机

GraalVM的主要优点之一是能够在同一个VM中混合和匹配多种语言。从上一篇文章中,我们已经看到在Graal上运行的所有语言都经过相同的编译器。这使得在同一个VM中使用多种语言更加顺畅。

在本文中,我将展示如何设置一个可以将Scala与JavaScript混合使用的环境。

依赖关系

要运行graalvm和truffle,我们需要在build.sbt中添加以下依赖项。我们需要在JDK 8上运行它。

"org.graalvm.sdk" % "graal-sdk" % "20.0.0",
"org.graalvm.truffle" % "truffle-api" % "20.0.0"

这里我们添加了graal和truffle依赖项。

因为我们想要使用JavaScript,所以需要从它的truffle实现中添加依赖项。

"org.graalvm.js" % "js" % "20.0.0",

JavaScript Hello World

完成所有依赖关系后,我们就可以编写第一个polyglot示例了。作为编程传统,我们将从hello world开始。

val polyglot = Context.create()
polyglot.eval("js","print('hello world from javascript')")

在Java中,我们只编写了两行JS代码!!让我们看看它的部件

Polyglot上下文

对于任何语言,我们都需要创建上下文。此上下文允许我们配置该语言所需的所有属性。这里我们创建一个简单的上下文。

Eval函数

上下文上的Eval函数获取语言源代码并对其求值。就这么简单。

现在我们已经在GraalVM上编写了第一个多语言程序。

您可以在github上访问完整的代码:https://github.com/phatak-dev/GraalVMExperiments/blob/master/src/main/scala/com/madhukaraphatak/graalvm/JsHelloWorld.scala

小结

GraalVM的多语言特性使得在同一个VM上混合和匹配不同的语言非常有吸引力。在本文中,我们看到了如何使用GraalVM polyglot API编写简单的JavaScript Hello World。

 

除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/2202.html

关于

发表评论

表情 格式

暂无评论

登录

忘记密码 ?

切换登录

注册