前陣子,Oracle 發佈了一個黑科技 "GraalVM",號稱是一個全新的通用全棧虛擬機,並具有高性能、跨語言交互等逆天特性,真有這麼神奇? GraalVM 簡介 GraalVM 是一個跨語言的通用虛擬機,不僅支持了 Java、Scala、Groovy、Kotlin 等基於 JVM 的語言,以及 ...
前陣子,Oracle 發佈了一個黑科技 "GraalVM",號稱是一個全新的通用全棧虛擬機,並具有高性能、跨語言交互等逆天特性,真有這麼神奇?
GraalVM 簡介
GraalVM 是一個跨語言的通用虛擬機,不僅支持了 Java、Scala、Groovy、Kotlin 等基於 JVM 的語言,以及 C、C++ 等基於 LLVM 的語言,還支持其他像 JavaScript、Ruby、Python 和 R 語言等。
GraalVM 有以下幾個特性。
- 更加高效快速的運行代碼
- 能與大多數編程語言直接交互
- 使用 Graal SDK 嵌入多語言
- 創建預編譯的原生鏡像
- 提供一系列工具來監視、調試和配置所有代碼
官網:http://www.graalvm.org/
GraalVM 有什麼用?
1、支持多種語言組合編程
來看下麵這段代碼,來自官網。
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、原生鏡像加速
來看這段代碼,同樣來自官網。
$ javac HelloWorld.java
$ time java HelloWorld
user 0.070s
$ native-image HelloWorld
$ time ./helloworld
user 0.005s
GraalVM 可以預編譯成原生鏡像,從而極大提速了啟動時間,並能減少 JVM 應用的記憶體占用。
4、可嵌入式運行環境
GraalVM 可以被嵌入到各種應用程式中,既可以獨立運行,也可以在已經內置好的 OpenJDK、Node.js、Oracle、MySQL 等環境中運行。
結合上面的特性,我們來看下 GraalVM 的架構圖。
GraalVM 版本介紹
如下圖所示,GraalVM 提供了社區版和企業版兩個版本。
從特性來看,上述所說的高性能、記憶體優化貌似都在企業版中??企業版或者可能只是在社區版上又增加了額外的提升吧!
社區版下載:github.com/oracle/graal/releases
總結
GraalVM 這玩意看起來很不錯,可以說這就是一個全棧開發平臺,不僅支持主流編程語言,還能組合在一起編程,根據不同任務來選擇最佳的語言。另外。它還能提高更高的執行效率,以及占用更少的記憶體。
至於應用場景,是否可應用於生產,現在還真不好說。這麼一個變態級的產品,我們期待它有更好的發展吧。
@ 程式猿:你們覺得 GraalVM 前景如何,或者有什麼實際用途?歡迎留言!