支持多語言的通用虛擬機GraalVM問世 可提供一致性能
- 作者:新網(wǎng)
- 來源:新網(wǎng)
- 瀏覽:100
- 2018-04-24 12:14:12
甲骨文發(fā)布多語言的通用虛擬機,其新穎的架構(gòu)所提供的語言獨立性,不只能促進程序間的互通性,也提高了程序可維護性。小編就帶大家了解一下它的功能吧。
<
div> 甲骨文發(fā)布多語言的通用
虛擬機,其新穎的架構(gòu)所提供的語言獨立性,不只能促進程序間的互通性,也提高了程序可維護性。小編就帶大家了解一下它的功能吧。
甲骨文表示,當(dāng)前用于產(chǎn)品階段的虛擬機,都僅針對特定語言或是一小群程序語言提供高性能執(zhí)行,而編譯、內(nèi)存管理以及工具的使用都違反了一次且僅一次原則(Don’ t repeat yourself,DRY)。這樣不只會給虛擬機實做工作帶來龐大的困難,而且不一致的性能表現(xiàn)以及工具配置也會帶給開發(fā)者沉重負(fù)擔(dān)。況且不同語言撰寫的程序間溝通,串行化及反串行化成本極高,而笨重龐大的高性能虛擬機又難用以嵌入。
甲骨文實驗室為了解決現(xiàn)存虛擬機的缺陷,數(shù)年前啟動了虛擬機研究計劃,期望以新穎的架構(gòu)找到新出路,而GraalVM 1.0便是這項研究的最新結(jié)果。
GraalVM其強大的功能之一,便是能讓程序語言互相調(diào)用訪問對方的對象,而不需要事先進行轉(zhuǎn)換。例如開發(fā)者可以用Node.js訪問Java函數(shù)庫,還是以Java調(diào)用Python程序,抑或是用R語言訪問其他語言維護的數(shù)據(jù)以創(chuàng)建復(fù)雜的SVG。甲骨文認(rèn)為,這種開發(fā)彈性,能讓開發(fā)人員使用最適合的語言完成任務(wù)。
目前發(fā)布的GraalVM 1.0已經(jīng)能夠支持多類開發(fā)語言,像是Java、Scala、Groovy或Kotlin的JVM語言,還有Javascript或是Node.js也可以,另外,由C、C++或是Rust產(chǎn)生的LLVM比特代碼,以及Ruby,R和Python都不是問題。
GraalVM可以獨立執(zhí)行,也可以嵌入OpenJDK或Node.js作為平臺的一部分,甚至是嵌入MySQL或Oracle RDBMS等
數(shù)據(jù)庫中。應(yīng)用程序可以通過標(biāo)準(zhǔn)化的GraalVM執(zhí)行環(huán)境,靈活的跨堆棧部署,而在數(shù)據(jù)處理引擎中,GraalVM能讓程序以自定義格式訪問,而不需要付出任何結(jié)構(gòu)轉(zhuǎn)換成本。
而對于JVM的語言來說,GraalVM提供了創(chuàng)建預(yù)編譯原生鏡像文件的機制,不只能立即啟動應(yīng)用程序,而且還具有低內(nèi)存消耗的優(yōu)點。產(chǎn)生鏡像文件的過程,GraalVM會執(zhí)行靜態(tài)分析,從主要Java方法搜索可用的程序代碼,并進行完整預(yù)編譯(Ahead-of-Time,AOT),最后產(chǎn)生原生的二元執(zhí)行碼,能立即啟動并執(zhí)行。
GraalVM提供開發(fā)語言
虛擬化的概念,讓所有語言以及工具都能嵌入使用。甲骨文表示,接下來會特別強化GraalVM對Python,R和Ruby的支持。
甲骨文表示,當(dāng)前用于產(chǎn)品階段的虛擬機,都僅針對特定語言或是一小群程序語言提供高性能執(zhí)行,而編譯、內(nèi)存管理以及工具的使用都違反了一次且僅一次原則(Don’ t repeat yourself,DRY)。這樣不只會給虛擬機實做工作帶來龐大的困難,而且不一致的性能表現(xiàn)以及工具配置也會帶給開發(fā)者沉重負(fù)擔(dān)。況且不同語言撰寫的程序間溝通,串行化及反串行化成本極高,而笨重龐大的高性能虛擬機又難用以嵌入。
甲骨文實驗室為了解決現(xiàn)存虛擬機的缺陷,數(shù)年前啟動了虛擬機研究計劃,期望以新穎的架構(gòu)找到新出路,而GraalVM 1.0便是這項研究的最新結(jié)果。
GraalVM其強大的功能之一,便是能讓程序語言互相調(diào)用訪問對方的對象,而不需要事先進行轉(zhuǎn)換。例如開發(fā)者可以用Node.js訪問Java函數(shù)庫,還是以Java調(diào)用Python程序,抑或是用R語言訪問其他語言維護的數(shù)據(jù)以創(chuàng)建復(fù)雜的SVG。甲骨文認(rèn)為,這種開發(fā)彈性,能讓開發(fā)人員使用最適合的語言完成任務(wù)。
目前發(fā)布的GraalVM 1.0已經(jīng)能夠支持多類開發(fā)語言,像是Java、Scala、Groovy或Kotlin的JVM語言,還有Javascript或是Node.js也可以,另外,由C、C++或是Rust產(chǎn)生的LLVM比特代碼,以及Ruby,R和Python都不是問題。
GraalVM可以獨立執(zhí)行,也可以嵌入OpenJDK或Node.js作為平臺的一部分,甚至是嵌入MySQL或Oracle RDBMS等數(shù)據(jù)庫中。應(yīng)用程序可以通過標(biāo)準(zhǔn)化的GraalVM執(zhí)行環(huán)境,靈活的跨堆棧部署,而在數(shù)據(jù)處理引擎中,GraalVM能讓程序以自定義格式訪問,而不需要付出任何結(jié)構(gòu)轉(zhuǎn)換成本。
而對于JVM的語言來說,GraalVM提供了創(chuàng)建預(yù)編譯原生鏡像文件的機制,不只能立即啟動應(yīng)用程序,而且還具有低內(nèi)存消耗的優(yōu)點。產(chǎn)生鏡像文件的過程,GraalVM會執(zhí)行靜態(tài)分析,從主要Java方法搜索可用的程序代碼,并進行完整預(yù)編譯(Ahead-of-Time,AOT),最后產(chǎn)生原生的二元執(zhí)行碼,能立即啟動并執(zhí)行。
GraalVM提供開發(fā)語言虛擬化的概念,讓所有語言以及工具都能嵌入使用。甲骨文表示,接下來會特別強化GraalVM對Python,R和Ruby的支持。
以上就是多語言虛擬機的全部內(nèi)容。