1. 程式人生 > >屌炸天,Oracle 釋出了一個全棧虛擬機器 GraalVM,支援 Python

屌炸天,Oracle 釋出了一個全棧虛擬機器 GraalVM,支援 Python

前陣子,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、原生映象加速

來看這段程式碼,同樣來自官網。

  1. $ javac HelloWorld.java

  2. $ time java HelloWorld

  3. user 0.070s

  4. $ native-image HelloWorld

  5. $ time ./helloworld

  6. user 0.005s

GraalVM 可以預編譯成原生映象,從而極大提速了啟動時間,並能減少 JVM 應用的記憶體佔用。

4、可嵌入式執行環境

GraalVM 可以被嵌入到各種應用程式中,既可以獨立執行,也可以在已經內建好的 OpenJDK、Node.js、Oracle、MySQL 等環境中執行。

結合上面的特性,我們來看下 GraalVM 的架構圖。

GraalVM 版本介紹

如下圖所示,GraalVM 提供了社群版和企業版兩個版本。

從特性來看,上述所說的高效能、記憶體優化貌似都在企業版中??企業版或者可能只是在社群版上又增加了額外的提升吧!

社群版下載:github.com/oracle/graal/releases

總結

GraalVM 這玩意看起來很不錯,可以說這就是一個全棧開發平臺,不僅支援主流程式語言,還能組合在一起程式設計,根據不同任務來選擇最佳的語言。另外。它還能提高更高的執行效率,以及佔用更少的記憶體。

至於應用場景,是否可應用於生產,現在還真不好說。這麼一個變態級的產品,我們期待它有更好的發展吧。