wasm/docs/site/index.md
</div>
</div>
</div>
</div>
</div>
<div class="langbenefits__title">
<h4>WebAssembly the JVM</h4>
</div>
<div class="langpage__benefits-text">
<h5><a href="#getting-started">Load and use Wasm modules</a> and functions directly in Java</h5>
</div>
</div>
<div class="langbenefits__card">
<div class="langbenefits__icon">
</div>
<div class="langbenefits__title">
<h4>WebAssembly 2.0 Support</h4>
</div>
<div class="langpage__benefits-text">
<h5>Full WebAssembly 2.0 compatibility and support for many <a href="https://webassembly.org/features/" target="_blank">feature extensions</a>, including WASI</h5>
</div>
</div>
<div class="langbenefits__card">
<div class="langbenefits__icon">
</div>
<div class="langbenefits__title">
<h4>Portable Native Extensions</h4>
</div>
<div class="langpage__benefits-text">
<h5>Integrate <a href="https://github.com/graalvm/graal-languages-demos/tree/main/graalwasm/graalwasm-embed-c-code-guide/" target="_blank">C, C++</a>, <a href="https://github.com/graalvm/graal-languages-demos/tree/main/graalwasm/graalwasm-embed-rust-code-guide/" target="_blank">Rust</a>, and <a href="https://github.com/graalvm/graal-languages-demos/tree/main/graalwasm/graalwasm-embed-go-code-guide/" target="_blank">Go</a> libraries using Wasm as an alternative to JNI or FFM API</h5>
</div>
</div>
</div>
<div class="langbenefits__row">
<div class="langbenefits__card">
<div class="langbenefits__icon">
</div>
<div class="langbenefits__title">
<h4>JavaScript integration</h4>
</div>
<div class="langpage__benefits-text">
<h5>Simplifies use of WebAssembly modules with <a href="https://github.com/graalvm/graal-languages-demos/blob/main/graalwasm/graalwasm-spring-boot-photon/" target="_blank">JavaScript bindings</a></h5>
</div>
</div>
<div class="langbenefits__card">
<div class="langbenefits__icon">
</div>
<div class="langbenefits__title">
<h4>Fastest Wasm on the JVM</h4>
</div>
<div class="langpage__benefits-text">
<h5><a href="https://www.graalvm.org/latest/reference-manual/java/compiler/">Graal JIT</a> compiles Wasm for native code speed</h5>
</div>
</div>
<div class="langbenefits__card">
<div class="langbenefits__icon">
</div>
<div class="langbenefits__title">
<h4>100% Java</h4>
</div>
<div class="langpage__benefits-text">
<h5>Written in <a href="https://central.sonatype.com/artifact/org.graalvm.polyglot/wasm" target="_blank">pure Java</a> with zero native dependencies</h5>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="languages__example-box">
<div class="languages__snippet">
<div class="language__text-secondary">
<h4>or</h4>
</div>
{%- highlight groovy -%}
implementation("org.graalvm.polyglot:polyglot:{{ site.language_version }}") implementation("org.graalvm.polyglot:wasm:{{ site.language_version }}") {%- endhighlight -%} </div> <div class="example-logo-box">
</div>
</div>
<div class="language__example-subtitle-mobile">
<h4>2. Create a WebAssembly module, for example with <a href="https://webassembly.github.io/wabt/demo/wat2wasm/" target="_blank">wat2wasm</a></h4>
</div>
<div class="languages__example-box">
<div class="languages__snippet">
<div class="language__example-subtitle">
<h4>2. Create a WebAssembly module, for example with <a href="https://webassembly.github.io/wabt/demo/wat2wasm/" target="_blank">wat2wasm</a></h4>
</div>
{%- highlight wat -%}
;; wat2wasm add-two.wat -o add-two.wasm (module (func (export "addTwo") (param i32 i32) (result i32) local.get 0 local.get 1 i32.add ) ) {%- endhighlight -%} </div> <div class="example-logo-box">
</div>
</div>
<div class="language__example-subtitle-mobile">
<h4>3. Embed the Wasm module in Java</h4>
</div>
<div class="languages__example-box">
<div class="languages__snippet">
<div class="language__example-subtitle">
<h4>3. Embed the Wasm module in Java</h4>
</div>
{% highlight java %} import java.net.URL;
import org.graalvm.polyglot.Context; import org.graalvm.polyglot.Source; import org.graalvm.polyglot.Value;
try (Context context = Context.create()) { URL wasmFile = Main.class.getResource("add-two.wasm"); Value mainModule = context.eval(Source.newBuilder("wasm", wasmFile).build()); Value mainInstance = mainModule.newInstance(); Value addTwo = mainInstance.getMember("exports").getMember("addTwo"); System.out.println("addTwo(40, 2) = " + addTwo.execute(40, 2)); } {% endhighlight %} </div><!-- languages__snippet --> <div class="example-logo-box">
</div>
</div>
</div>
</div>
</div>
<a href="https://github.com/graalvm/graal-languages-demos/tree/main/graalwasm/graalwasm-embed-c-code-guide/" target="_blank">
<div class="guides__topics">Embed C in Java Using GraalWasm</div>
</a>
</div>
<div class="guides__card">
<a href="https://github.com/graalvm/graal-languages-demos/tree/main/graalwasm/graalwasm-embed-go-code-guide/" target="_blank">
<div class="guides__topics">Embed Go in Java Using GraalWasm</div>
</a>
</div>
<div class="guides__card">
<a href="https://github.com/graalvm/graal-languages-demos/blob/main/graalwasm/graalwasm-micronaut-photon/" target="_blank">
<div class="guides__topics">Embed Photon Image Processing Library with GraalWasm in Micronaut</div>
</a>
</div>
</div>
<div class="guides__column">
<div class="guides__card">
<a href="https://github.com/graalvm/graal-languages-demos/tree/main/graalwasm/graalwasm-embed-rust-code-guide/" target="_blank">
<div class="guides__topics">Embed Rust in Java Using GraalWasm</div>
</a>
</div>
<div class="guides__card">
<a href="https://github.com/graalvm/graal-languages-demos/blob/main/graalwasm/graalwasm-spring-boot-photon/" target="_blank">
<div class="guides__topics">Embed Photon Image Processing Library with GraalWasm in Spring Boot</div>
</a>
</div>
</div>
</div>
</div>
</div>
<a href="https://www.youtube.com/watch?v=uefc2t9AmQI" target="_blank">
<div class="guides__topics">Video: GraalVM meets WebAssembly at Devoxx 2025</div>
</a>
</div>
<div class="guides__card">
<a href="https://medium.com/graalvm/announcing-graalwasm-a-webassembly-engine-in-graalvm-25cd0400a7f2" target="_blank">
<div class="guides__topics">Blog: Announcing GraalWasm — a WebAssembly engine in GraalVM</div>
</a>
</div>
</div>
<div class="guides__column">
<div class="guides__card">
<a href="https://www.youtube.com/watch?v=Z2SWSIThHXY" target="_blank">
<div class="guides__topics">Video: GraalWasm at Wasm I/O 2025</div>
</a>
</div>
</div>
</div>
</div>
</div>