前陣子,Oracle 發佈了一個黑科技 "GraalVM",號稱是一個全新的通用全棧虛擬機,並具備高性能、跨語言交互等逆天特性,真有這麼神奇?java
GraalVM 是一個跨語言的通用虛擬機,不只支持了 Java、Scala、Groovy、Kotlin 等基於 JVM 的語言,以及 C、C++ 等基於 LLVM 的語言,還支持其餘像 JavaScript、Ruby、Python 和 R 語言等。git
GraalVM 有如下幾個特性。github
官網:http://www.graalvm.org/express
來看下面這段代碼,來自官網。編程
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 消除了各類編程語言之間的隔離性,那這種多編程語言結合使用會不會有性能影響?官方的說明是:零開銷的互操做,這樣,咱們就能夠爲應用程序選擇最佳的編程語言組合。oracle
來看這段代碼,一樣來自官網。app
$ javac HelloWorld.java $ time java HelloWorld user 0.070s $ native-image HelloWorld $ time ./helloworld user 0.005s
GraalVM 能夠預編譯成原生鏡像,從而極大提速了啓動時間,並能減小 JVM 應用的內存佔用。編程語言
GraalVM 能夠被嵌入到各類應用程序中,既能夠獨立運行,也能夠在已經內置好的 OpenJDK、Node.js、Oracle、MySQL 等環境中運行。工具
結合上面的特性,咱們來看下 GraalVM 的架構圖。
以下圖所示,GraalVM 提供了社區版和企業版兩個版本。
從特性來看,上述所說的高性能、內存優化貌似都在企業版中??企業版或者可能只是在社區版上又增長了額外的提高吧!
社區版下載:github.com/oracle/graal/releases
GraalVM 這玩意看起來很不錯,能夠說這就是一個全棧開發平臺,不只支持主流編程語言,還能組合在一塊兒編程,根據不一樣任務來選擇最佳的語言。另外。它還能提升更高的執行效率,以及佔用更少的內存。
至於應用場景,是否可應用於生產,如今還真很差說。這麼一個變態級的產品,咱們期待它有更好的發展吧。
@ 程序猿:大家以爲 GraalVM 前景如何,或者有什麼實際用途?歡迎留言!