歷數GraalVM的十大用途
不久前Oracle釋出了GraalVM,一套通用型虛擬機器,能執行各類高效能與互操作性任務,並在無需額外成本的前提下允許使用者構建多語言應用程式。
\\GraalVM包含了很多不同的部分,所以即使你之前聽過這個名字,或者聽過我們的一些演講,仍然有一些東西是你不知道的。在本文中,我們將列出GraalVM的一些不同的特性,並展示它的用途。
\\- 高效能Java\\t
- 佔用記憶體小、啟動速度快的Java\\t
- 組合JavaScript、Java、Ruby和R語言\\t
- 在JVM上執行本地語言\\t
- 適用於所有程式語言的工具\\t
- 擴充套件基於JVM的應用程式\\t
- 擴充套件本地應用程式\\t
- 將Java程式碼作為本地庫\\t
- 資料庫中的polyglot\\t
- 建立自己的語言\
我們可以使用GraalVM 1.0.0 RC 1(https://www.graalvm.org/downloads)來重現本文所述的內容。我是在macOS上執行GraalVM企業版,不過在Linux上執行GraalVM社群版也是一樣的。文中執行的程式碼可以從http://github.com/chrisseaton/graalvm-ten-things下載。
\\安裝
\\我從https://www.graalvm.org/downloads下載了GraalVM 1.0.0 RC 1企業版,並將它放到$PATH路徑中。
\\\$ git clone https://github.com/chrisseaton/graalvm-ten-things.git\$ cd foo\$ tar -zxf graalvm-ee-1.0.0-rc1-macos-amd64.tar.gz\ # or graalvm-ee-1.0.0-rc1-linux-amd64.tar.gz on Linux\$ export PATH=graalvm-1.0.0-rc1/Contents/Home/bin:$PATH\ # or PATH=graalvm-1.0.0-rc1/bin:$PATH on Linux
\\GraalVM內建了JavaScript,並帶有一個叫作gu的軟體包管理器,可用它來安裝其他語言。我已經安裝了從GitHub下載的Ruby、Python和R語言。
\\\$ gu install -c org.graalvm.ruby\$ gu install -c org.graalvm.python\$ gu install -c org.graalvm.R
\\我們可以通過執行java或js來獲得這些執行時的版本資訊。
\\\$ java -version\java version \"1.8.0_161\"\Java(TM) SE Runtime Environment (build 1.8.0_161-b12)\GraalVM 1.0.0-rc1 (build 25.71-b01-internal-jvmci-0.42, mixed mode)\$ js --version\Graal JavaScript 1.0 (GraalVM 1.0.0-rc1)
\\1.高效能Java
\\GraalVM中的Graal得名於Graal編譯器。Graal是一種“萬能”編譯器,也就是說,雖然它是單一的實現,卻可以用於很多用途。例如,我們可以使用Graal進行預編譯(ahead-of-time)和即時編譯(just-in-time),也可用於編譯多種程式語言。
\\我們可以將Graal簡單地用作Java JIT編譯器。
\\以下的示例程式將會輸出一篇文件的前十個單詞,它使用了Stream和Collector等Java語言特性。
\\\import java.io.IOException;\import java.nio.file.Files;\import java.nio.file.Paths;\import java.util.Arrays;\import java.util.function.Function;\import java.util.stream.Collectors;\import java.util.stream.Stream;\\public class TopTen {\ public static void main(String[] args) {\ Arrays.stream(args)\ .flatMap(TopTen::fileLines)\ .flatMap(line -\u0026gt; Arrays.stream(line.split(\"\\\\b\")))\ .map(word -\u0026gt; word.replaceAll(\"[^a-zA-Z]\
相關文章
- GraalVM快速參考指南 - graalvmLVM
- ES6 -- 變數的解構賦值的用途變數賦值
- MySQL Proxy的用途MySql
- GraalVM中的多層編譯優點LVM編譯
- 數學符號的來歷符號
- java~graalVM虛擬機器JavaLVM虛擬機
- (基礎系列)atomic原子變數類的用法、原理和用途變數
- 求職指南:英文求職簡歷十大忌諱求職
- 比特幣的用途比特幣
- 陣列越界的用途陣列
- PDB檔案的用途
- Python爬蟲的用途Python爬蟲
- 顯示卡伺服器的用途伺服器
- 爬蟲的用途有哪些爬蟲
- firewalld: 各個zone的用途
- GraalVM 21.0提供執行Java程式碼的第三種方式:Espresso通過Truffle框架執行Java程式碼 - graalvmLVMJavaEspresso框架
- 《代數的歷史》讀書筆記筆記
- 歷屆試題 數字遊戲(數學)遊戲
- 私鑰的用途是什麼?
- 伺服器的作用及用途伺服器
- JavaScript解構賦值的用途JavaScript賦值
- 加密鹽的意義和用途加密
- oracle 的dbms_logmnr用途Oracle
- update-initramfs的用途和功能
- C#單例模式的用途C#單例模式
- 如何使用JavaFX和GraalVM建立移動App?JavaLVMAPP
- Solon 1.5.67 釋出,增加 GraalVm Native 支援LVM
- GraalVM - Java8 Linux AMD64LVMJavaLinux
- Typescript 推理及其用途TypeScript
- 百年傳奇經典 寫進歷史的任天堂十大遊戲品牌遊戲
- Shell指令碼中的 /Dev/Null 用途指令碼devNull
- 區塊鏈的用途並不多 - calpaterson區塊鏈
- 伺服器的用途有哪些呢?伺服器
- 代理IP的四大用途
- 雲端計算的多種類用途
- JavaScript 函式 window.matchMedia 的用途JavaScript函式
- alter database ... create datafile的原理及用途Database
- Oracle資料字典的用途介紹Oracle