甲骨文發表支援多語言的通用虛擬機器GraalVM 1.0,該公司表示,GraalVM實現了為所有開發語言提供一致性能的目標,其新穎的架構所提供的語言獨立性,不只能促進程式間的互通性,也提高了程式可維護性。

甲骨文表示,當前用於產品階段的虛擬機器,都僅針對特定語言或是一小群程式語言提供高效能執行,而編譯、記憶體管理以及工具的使用都違反了一次且僅一次原則(Don't repeat yourself,DRY)。這樣不只會給虛擬機實做工作帶來龐大的困難,而且不一致的效能表現以及工具配置也會帶給開發者沉重負擔。況且不同語言撰寫的程式間溝通,序列化及反序列化成本極高,而笨重龐大的高性能虛擬機又難用以嵌入。

甲骨文實驗室為了解決現存虛擬機器的缺陷,數年前啟動了虛擬機器研究計畫,期望以新穎的架構找到新出路,而GraalVM 1.0便是這項研究的最新結果。

GraalVM其強大的功能之一,便是能讓程式語言互相呼叫存取對方的物件,而不需要事先進行轉換。例如開發者可以用Node.js存取Java函式庫,還是以Java呼叫Python程式,抑或是用R語言存取其他語言維護的資料以建立複雜的SVG。甲骨文認為,這種開發彈性,能讓開發人員使用最適合的語言完成任務。

目前釋出的GraalVM 1.0已經能夠支援多類開發語言,像是Java、Scala、Groovy或Kotlin的JVM語言,還有Javascript或是Node.js也可以,另外,由C、C++或是Rust產生的LLVM位元代碼,以及Ruby,R和Python都不是問題。

GraalVM可以獨立執行,也可以嵌入OpenJDK或Node.js作為平臺的一部分,甚至是嵌入MySQL或Oracle RDBMS等資料庫中。應用程式可以透過標準化的GraalVM執行環境,靈活的跨堆疊部署,而在資料處理引擎中,GraalVM能讓程式以自定義格式存取,而不需要付出任何結構轉換成本。

而對於JVM的語言來說,GraalVM提供了創建預編譯原生映像檔的機制,不只能立即啟動應用程式,而且還具有低記憶體消耗的優點。產生映像檔的過程,GraalVM會執行靜態分析,從主要Java方法搜尋可用的程式碼,並進行完整預編譯(Ahead-of-Time,AOT),最後產生原生的二元執行碼,能立即啟動並執行。

GraalVM提供開發語言虛擬化的概念,讓所有語言以及工具都能嵌入使用。甲骨文表示,接下來會特別強化GraalVM對Python,R和Ruby的支援。


Advertisement

更多 iThome相關內容