历数GraalVM的十大用途

不久前Oracle发布了GraalVM,一套通用型虚拟机,能执行各类高性能与互操作性任务,并在无需额外成本的前提下允许用户构建多语言应用程序。

\\

GraalVM包含了很多不同的部分,所以即使你之前听过这个名字,或者听过我们的一些演讲,仍然有一些东西是你不知道的。在本文中,我们将列出GraalVM的一些不同的特性,并展示它的用途。

\\
  1. 高性能Java\\t
  2. 占用内存小、启动速度快的Java\\t
  3. 组合JavaScript、Java、Ruby和R语言\\t
  4. 在JVM上运行本地语言\\t
  5. 适用于所有编程语言的工具\\t
  6. 扩展基于JVM的应用程序\\t
  7. 扩展本地应用程序\\t
  8. 将Java代码作为本地库\\t
  9. 数据库中的polyglot\\t
  10. 创建自己的语言\

我们可以使用GraalVM 1.0.0 RC 1(https://www.graalvm.org/downloads)来重现本文所述的内容。我是在macOS上运行GraalVM企业版,不过在Linux上运行GraalVM社区版也是一样的。文中运行的代码可以从http://github.com/chrisseaton/graalvm-ten-things下载

\\

安装

\\

我从https://www.graalvm.org/downloads下载了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)
\\

1.高性能Java

\\

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]\
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值