Oracle 推出 GraalVM:跨语言全栈虚拟机解析
不久前,Oracle 发布了一项创新技术 “GraalVM”,宣称是一款全新的通用全栈虚拟机,具备高性能与跨语言交互等卓越特性。它究竟有何神奇之处?
GraalVM 概述
GraalVM 是一款跨语言的通用虚拟机,不仅支持 Java、Scala、Groovy、Kotlin 等基于 JVM 的语言,以及 C、C++ 等基于 LLVM 的语言,还兼容
JavaScript、Ruby、Python 和 R 等多种语言。
GraalVM 主要特性包括:
更高效的代码执行速度
支持多语言直接交互
可利用 Graal SDK 嵌入多语言环境
可生成预编译的原生镜像
提供完整的监控、调试与配置工具集
GraalVM 应用场景
1、支持多语言混合编程
以下代码示例来自官网:
text
const express = require(‘express’);
const app = express();
app.listen(3000);
app.get(‘/‘, function(req, res) {
var text = ‘Hello World!’;
const BigInteger = Java.type(
‘java.math.BigInteger’);
text += BigInteger.valueOf(2)
.pow(100).toString(16);
text += Polyglot.eval(
‘R’, ‘runif(100)’)[0];
res.send(text);
})
该示例同时使用了 Node.js、Java 和 R 三种语言,展现了 GraalVM 的跨语言能力。它打破了编程语言之间的壁垒,且官方称这种互操作近乎零开销,使开发者能够为应用灵活选择最佳语言组合。
2、原生镜像加速启动
观察以下示例:
text
$ javac HelloWorld.java
$ time java HelloWorld
user 0.070s
$ native-image HelloWorld
$ time ./helloworld
user 0.005s
GraalVM 可将应用预编译为原生镜像,显著提升启动速度,并降低 JVM 应用的内存占用。
3、可嵌入多种运行环境
GraalVM 能够嵌入各类应用程序中,既可独立运行,也可在 OpenJDK、Node.js、Oracle、MySQL 等现有环境中集成。
结合上述特性,可参考以下 GraalVM 架构示意图:
https://img/18-7-25-26341155.jpg
GraalVM 版本说明
GraalVM 提供社区版与企业版两个版本,如下图所示:
https://img/18-7-25-16994384.jpg
从功能来看,前述的高性能与内存优化等特性似乎更多集中于企业版。企业版很可能在社区版基础上增强了部分高级功能。
社区版下载:github.com/oracle/graal/releases
小结
GraalVM 展现出了强大的技术潜力,堪称一个全栈开发平台。它不仅兼容主流编程语言,还支持语言间的混合编程,让开发者能根据任务特点选用最合适的语言。此外,它在执行效率与内存占用方面也有显著优势。
至于其实际应用场景与生产环境适用性,目前尚待观察。这样一款颇具颠覆性的产品,值得我们持续关注其未来发展。
各位开发者,你们如何看待 GraalVM 的前景?是否有实际应用设想?欢迎留言交流!
