日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

首个运行 WebAssembly 的 Java 库 Wasmer JNI 出现了

發布時間:2023/11/22 综合教程 57 生活家
生活随笔 收集整理的這篇文章主要介紹了 首个运行 WebAssembly 的 Java 库 Wasmer JNI 出现了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用于執行 WebAssembly 二進制程序的Wasmer 公開了目前業內首個支持WebAssembly 的Java 擴展庫 Wasmer JNI。

根據介紹,此次開源出來的 Wasmer JNI 的特性包括:

?易于使用:API 模仿標準的 WebAssembly API

?快:極盡可能運行 WebAssembly 模塊

?安全:對 WebAssembly 的所有調用完全安全并且沙箱化隔離

Wasmer JNI 庫為不同平臺生成 JAR 包,目前支持:

?amd64-darwin:macOS、x86 64

?amd64-linux:Linux、x86 64

?amd64-windows:Windows、x86 64位

同時開發者可以為自己的平臺和架構生成自己的 JAR。

性能方面,由于 Wasmer JNI 是首個執行 WebAssembly 的 Java 庫,因此無法與 Java 生態中的其它項目作比較,但是,不過因為 Wasmer 自身的設計上有優勢,它帶有 3 個后端:Singlepass、Cranelift 與 LLVM,Wasmer JNI 庫目前使用 Cranelift 后端,這在編譯時間和執行時間之間提供了最佳折衷方案。Wasmer 在 WebAssembly 服務器運行時領域居于領先地位,去年獲得了InfoWorld 2019 年最佳開源軟件獎。

來看一個從 Java 調用 WebAssembly 的 demo:

從一個簡單的 Rust 程序入手,將其編譯為 WebAssembly,然后從 Java 執行。

#[no_mangle]pub extern fn sum(x: i32, y: i32) -> i32 { x + y}

編譯為 WebAssembly 后,得到一個名為simple.wasm 的文件。

接著 Java 程序通過傳遞 5 和 37 這兩個參數來執行 sum 函數:

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(); }}

可以看到,Wasmer JNI 的API 與標準 JavaScript API 非常相似。

WebAssembly也叫 WASM,它是為基于棧的虛擬機設計的二進制指令格式,WASM作為可移植目標,用于編譯高級語言(如 C/C++/Rust),從而可以在Web 上部署高性能客戶端和服務器應用,同時它也可以在許多其它環境中使用。

WebAssembly 描述了一種內存安全的沙箱執行環境,該環境甚至可以在現有 JavaScript 虛擬機內部實現。當嵌入到 Web 中時,WebAssembly 將強制執行瀏覽器的同源和權限安全策略。

WASM 有多種實現,包括瀏覽器和獨立系統,它可以用于視頻和音頻編解碼器、圖形和 3D、多媒體和游戲、密碼計算或便攜式語言實現等應用。目前 Wasm 已經支持 Chrome、Firefox、Safari 與 Edge 瀏覽器。

對于 Web 來說,因為其虛擬指令集設計,WebAssembly 可讓加載的頁面以本地編譯代碼運行,從而可以提高Web 性能。換句話說,WebAssembly 可以實現接近本地的性能,并且優化加載時間,同時最重要的是,它可以作為現有代碼庫的編譯目標。

官方公告

總結

以上是生活随笔為你收集整理的首个运行 WebAssembly 的 Java 库 Wasmer JNI 出现了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。