亚洲处破女a片60分钟_国产精品亚洲国产在 _99e热久久免费精品首页_天堂tv在线高清在线观看_国产亚洲精品美女久久

專業(yè)下載站,下載軟件就到188下載站

188軟件園

您的位置: 188軟件園>資訊頻道>業(yè)界資訊

首個(gè)運(yùn)行 WebAssembly 的 Java 庫 Wasmer JNI 出現(xiàn)了

首個(gè)運(yùn)行 WebAssembly 的 Java 庫 Wasmer JNI 出現(xiàn)了

20-05-15 | 作者:互聯(lián)網(wǎng) |

  用于執(zhí)行 WebAssembly 二進(jìn)制程序的Wasmer 公開了目前業(yè)內(nèi)首個(gè)支持WebAssembly 的Java 擴(kuò)展庫 Wasmer JNI。

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

  •易于使用:API 模仿標(biāo)準(zhǔn)的 WebAssembly API

  •快:極盡可能運(yùn)行 WebAssembly 模塊

  •安全:對(duì) WebAssembly 的所有調(diào)用完全安全并且沙箱化隔離

  Wasmer JNI 庫為不同平臺(tái)生成 JAR 包,目前支持:

  •amd64-darwin:macOS、x86 64

  •amd64-linux:Linux、x86 64

  •amd64-windows:Windows、x86 64位

  同時(shí)開發(fā)者可以為自己的平臺(tái)和架構(gòu)生成自己的 JAR。

  性能方面,由于 Wasmer JNI 是首個(gè)執(zhí)行 WebAssembly 的 Java 庫,因此無法與 Java 生態(tài)中的其它項(xiàng)目作比較,但是,不過因?yàn)?Wasmer 自身的設(shè)計(jì)上有優(yōu)勢,它帶有 3 個(gè)后端:Singlepass、Cranelift 與 LLVM,Wasmer JNI 庫目前使用 Cranelift 后端,這在編譯時(shí)間和執(zhí)行時(shí)間之間提供了最佳折衷方案。Wasmer 在 WebAssembly 服務(wù)器運(yùn)行時(shí)領(lǐng)域居于領(lǐng)先地位,去年獲得了InfoWorld 2019 年最佳開源軟件獎(jiǎng)。

  來看一個(gè)從 Java 調(diào)用 WebAssembly 的 demo:

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

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

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

  接著 Java 程序通過傳遞 5 和 37 這兩個(gè)參數(shù)來執(zhí)行 sum 函數(shù):

  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 與標(biāo)準(zhǔn) JavaScript API 非常相似。

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

  WebAssembly 描述了一種內(nèi)存安全的沙箱執(zhí)行環(huán)境,該環(huán)境甚至可以在現(xiàn)有 JavaScript 虛擬機(jī)內(nèi)部實(shí)現(xiàn)。當(dāng)嵌入到 Web 中時(shí),WebAssembly 將強(qiáng)制執(zhí)行瀏覽器的同源和權(quán)限安全策略。

  WASM 有多種實(shí)現(xiàn),包括瀏覽器和獨(dú)立系統(tǒng),它可以用于視頻和音頻編解碼器、圖形和 3D、多媒體和游戲、密碼計(jì)算或便攜式語言實(shí)現(xiàn)等應(yīng)用。目前 Wasm 已經(jīng)支持 Chrome、Firefox、Safari 與 Edge 瀏覽器。

  對(duì)于 Web 來說,因?yàn)槠涮摂M指令集設(shè)計(jì),WebAssembly 可讓加載的頁面以本地編譯代碼運(yùn)行,從而可以提高Web 性能。換句話說,WebAssembly 可以實(shí)現(xiàn)接近本地的性能,并且優(yōu)化加載時(shí)間,同時(shí)最重要的是,它可以作為現(xiàn)有代碼庫的編譯目標(biāo)。

網(wǎng)友評(píng)論

您的評(píng)論需要經(jīng)過審核才能顯示 網(wǎng)名

0條評(píng)論>網(wǎng)友評(píng)論