Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JavaとWebAssembly

 JavaとWebAssembly

Kazuhiro Seo

July 16, 2024
Tweet

More Decks by Kazuhiro Seo

Other Decks in Programming

Transcript

  1. WebAssembly 略称: Wasm アセンブリ風のバイナリ命令セット ネイティブに近い性能が出る ほぼすべてのブラウザで動く 処理が重たいタスクに向いている 画像処理や機械学習など エッジコンピューティングでの利用も Cloudflare

    Fastly (local i32 i32 i32 i32 i32 i32) local.get 0 call $meth_otr_RuntimeClass_getClass local.set 1 i32.const 8 local.set 2 local.get 1 i32.load offset=32 i32.const 0 i32.eq if ;; label = @1 local.get 1 call $meth_otr_Allocator_allocate local.set 3 local.get 1 i32.load offset=8 local.set 4
  2. 言語に依存しない 任意の言語からWasm にコンパイル出来る C/C++/Rust/Go など もちろん( 理屈としては)Java からも生成できる Rust ⬇️

    Wasm // src/lib.rs #[no_mangle] pub extern "C" fn add(a: i32, b: i32) -> i32 { a + b } (module (type (;0;) (func (param i32 i32) (result i32))) (func $add (export "add") (type 0) (param i32 i32) (result local.get 0 local.get 1 i32.add) (table (;0;) 1 1 funcref) (memory (;0;) 16) ...