第一個執行WebAssembly的Java庫:Wasmer JNI
Wasmer JNI是一個可以直接在Java中執行WebAssembly的庫。它嵌入了WebAssembly執行時Wasmer,Wasmer JNI開源專案是:https://github.com/wasmerio/java-ext-wasm
讓我們從一個簡單的Rust程式開始,將其編譯為WebAssembly,然後在Java中執行:
#[no_mangle] pub extern fn sum(x: i32, y: i32) -> i32 { x + y } |
彙編WebAssembly後,我們得到這樣一個檔案:這裡,命名為simple.wasm。
以下Java程式sum通過傳遞5和37作為引數來執行匯出的函式:
import org.wasmer.Instance; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; class SimpleExample { public static void main(String[] args) throws IOException { // Read the WebAssembly bytes. byte[] bytes = Files.readAllBytes(Paths.get("simple.wasm")); // Instantiate the WebAssembly module. Instance instance = new Instance(bytes); // Get the `sum` exported function, call it by passing 5 and 37, and get the result. Integer result = (Integer) instance.exports.getFunction("sum").apply(5, 37)[0]; assert result == 42; instance.close(); } } |
我們已經用Java成功執行了一個Rust程式,該程式首先需要編譯為WebAssembly。這非常簡單。該API與標準JavaScript API或我們為PHP,Python,Go,Ruby等設計的其他API非常相似。
相關文章
- Android JNI 中的執行緒操作Android執行緒
- java呼叫c++動態庫之jni呼叫JavaC++
- Java築基 - JNI到底是個啥Java
- 【胡思亂想】JNI與執行緒池的維護執行緒
- 【JAVA併發第一篇】Java的程式與執行緒Java執行緒
- 通過 WebAssembly 在瀏覽器執行 PHPWeb瀏覽器PHP
- 【Flask】第一個Flask程式(安裝、執行引數、執行方式)Flask
- 只需 5 分鐘,教你如何編寫並執行一個 Rust + WebAssembly 程式RustWeb
- java JNI簡介Java
- 【Java面試】如何中斷一個正在執行的執行緒?Java面試執行緒
- Java執行緒入門第一篇Java執行緒
- Nexus.js介紹:一個多執行緒的JavaScript執行庫JS執行緒JavaScript
- 執行計劃-5:第一個子操作的變化
- java與python哪個執行快?JavaPython
- 【Java】【多執行緒】兩個執行緒間的通訊、wait、notify、notifyAllJava執行緒AI
- WebAssembly + Dapr = 下一代雲原生執行時?Web
- 一個java檔案被執行的歷程Java
- parallel: 一個簡單的並行執行Go迴圈的庫Parallel並行Go
- C++庫封裝JNI介面——實現java呼叫c++C++封裝Java
- 03-Java核心類庫_多執行緒Java執行緒
- 鴻蒙手機版JNI實戰(JNI開發、SO庫生成、SO庫使用)鴻蒙
- 初識 SpringMVC,執行配置第一個Spring MVC 程式SpringMVC
- Java JNI 學習筆記Java筆記
- 【譯】Go和WebAssembly:在瀏覽器中執行Go程式GoWeb瀏覽器
- 一個簡單java程式的執行全過程Java
- Java多執行緒打輔助的三個小夥子Java執行緒
- 一個 java 檔案的執行過程詳解Java
- Android JNI實現Java與C/C++互相呼叫,以及so庫的生成和呼叫(JNI方式呼叫美圖秀秀so)AndroidJavaC++
- Java執行緒篇——執行緒的開啟Java執行緒
- 【Java多執行緒】執行緒安全的集合Java執行緒
- Java多執行緒-執行緒池的使用Java執行緒
- 理解Java程式的執行Java
- Java中的執行緒Java執行緒
- JVM學習第一篇思考:一個Java程式碼是怎麼執行起來的-上篇JVMJava
- 004、執行第一個容器(2018-12-19 週三)
- 手動造一個執行緒池(Java)執行緒Java
- CheerpX:使用 WebAssembly 在瀏覽器中執行任何程式語言Web瀏覽器
- java多執行緒之執行緒的基本使用Java執行緒