本文共 1951 字,大约阅读时间需要 6 分钟。
不久前Oracle发布了GraalVM,一套通用型虚拟机,能执行各类高性能与互操作性任务,并在无需额外成本的前提下允许用户构建多语言应用程序。
\\GraalVM包含了很多不同的部分,所以即使你之前听过这个名字,或者听过我们的一些演讲,仍然有一些东西是你不知道的。在本文中,我们将列出GraalVM的一些不同的特性,并展示它的用途。
\\我们可以使用GraalVM 1.0.0 RC 1()来重现本文所述的内容。我是在macOS上运行GraalVM企业版,不过在Linux上运行GraalVM社区版也是一样的。文中运行的代码可以从。
\\我从 1.0.0 RC 1企业版,并将它放到$PATH路径中。
\\\$ git clone https://github.com/chrisseaton/graalvm-ten-things.git\$ cd foo\$ tar -zxf graalvm-ee-1.0.0-rc1-macos-amd64.tar.gz\ # or graalvm-ee-1.0.0-rc1-linux-amd64.tar.gz on Linux\$ export PATH=graalvm-1.0.0-rc1/Contents/Home/bin:$PATH\ # or PATH=graalvm-1.0.0-rc1/bin:$PATH on Linux\\
GraalVM内置了JavaScript,并带有一个叫作gu的软件包管理器,可用它来安装其他语言。我已经安装了从GitHub下载的Ruby、Python和R语言。
\\\$ gu install -c org.graalvm.ruby\$ gu install -c org.graalvm.python\$ gu install -c org.graalvm.R\\
我们可以通过运行java或js来获得这些运行时的版本信息。
\\\$ java -version\java version \"1.8.0_161\"\Java(TM) SE Runtime Environment (build 1.8.0_161-b12)\GraalVM 1.0.0-rc1 (build 25.71-b01-internal-jvmci-0.42, mixed mode)\$ js --version\Graal JavaScript 1.0 (GraalVM 1.0.0-rc1)\\
GraalVM中的Graal得名于Graal编译器。Graal是一种“万能”编译器,也就是说,虽然它是单一的实现,却可以用于很多用途。例如,我们可以使用Graal进行预编译(ahead-of-time)和即时编译(just-in-time),也可用于编译多种编程语言。
\\我们可以将Graal简单地用作Java JIT编译器。
\\以下的示例程序将会输出一篇文档的前十个单词,它使用了Stream和Collector等Java语言特性。
\\\import java.io.IOException;\import java.nio.file.Files;\import java.nio.file.Paths;\import java.util.Arrays;\import java.util.function.Function;\import java.util.stream.Collectors;\import java.util.stream.Stream;\\public class TopTen {\ public static void main(String[] args) {\ Arrays.stream(args)\ .flatMap(TopTen::fileLines)\ .flatMap(line -\u0026gt; Arrays.stream(line.split(\"\\\\b\")))\ .map(word -\u0026gt; word.replaceAll(\"[^a-zA-Z]\
转载地址:http://zjvdm.baihongyu.com/