Progressive Web App
Eine Webanwendung, die durch moderne Browser-APIs native App-Funktionen bietet – Offline-Nutzung, Installation auf dem Homescreen, Push-Benachrichtigungen – ohne App Store.
Ein binäres Instruktionsformat für den Browser, das es ermöglicht, Code in Sprachen wie C, C++, Rust oder Go mit nahezu nativer Geschwindigkeit im Browser auszuführen.
JavaScript ist die einzige Sprache, die nativ im Browser läuft. Das ist gut für die meisten Aufgaben, aber für rechenintensive Operationen – Bildverarbeitung, Kryptographie, ML-Inferenz – ist JavaScript zu langsam.
WebAssembly löst das: Code in C, Rust oder Go wird zu einem kompakten Binärformat kompiliert, das der Browser direkt ausführen kann – mit nahezu nativer Geschwindigkeit. JavaScript bleibt für die Browser-Interaktion zuständig, WASM für die schwere Arbeit.
JavaScript vs. WebAssembly:
| Aspekt | JavaScript | WebAssembly |
|---|---|---|
| Sprache | Nur JS/TS | C, C++, Rust, Go, … |
| Performance | Gut | Nahezu nativ |
| DOM-Zugriff | Direkt | Über JS-Bindings |
| Dateigröße | Klein | Kompakt (binär) |
| Use Case | UI, Logik | Berechnungen |
// src/lib.rs
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
pub fn tokenize(text: &str) -> Vec<u32> {
// Hochperformante Tokenisierung in Rust
text.split_whitespace()
.map(|word| hash_word(word))
.collect()
}
wasm-pack build --target web
import init, { tokenize } from './pkg/tokenizer.js';
await init(); // WASM laden
const tokens = tokenize("Hello, World!");
console.log(tokens); // [12345, 67890]
import * as ort from 'onnxruntime-web';
const session = await ort.InferenceSession.create('./model.onnx');
const input = new ort.Tensor('float32', inputData, [1, 768]);
const output = await session.run({ input }); WebAssembly ist wie ein Universalstecker-Adapter: Du hast ein Gerät (C++, Rust, Go), das normalerweise nicht in eine europäische Steckdose (Browser) passt. WASM ist der Adapter, der es trotzdem ermöglicht – und das mit voller Leistung, nicht gedrosselt.
Läuft neben JavaScript im Browser – nicht als Ersatz, sondern Ergänzung
Kompiliert aus C, C++, Rust, Go und anderen Sprachen
Nahezu native Performance für rechenintensive Aufgaben
KI-Inferenz im Browser
Kleine ML-Modelle direkt im Browser ausführen – kein Server nötig, Daten verlassen das Gerät nicht
Bild- und Videoverarbeitung
Hochperformante Bildkomprimierung, Filter oder Codec-Implementierungen im Browser
Spiele und 3D
Game-Engines wie Unity exportieren nach WebAssembly für Browser-Spiele
Nein. WASM und JavaScript ergänzen sich. JavaScript bleibt für DOM-Manipulation, Event-Handling und die meisten Web-Aufgaben. WASM übernimmt rechenintensive Teile: Bildverarbeitung, Kryptographie, Simulationen, ML-Inferenz. Typischerweise ruft JavaScript WASM-Funktionen auf.
Nicht direkt. WASM hat keinen nativen DOM-Zugriff – das muss über JavaScript-Bindings erfolgen. WASM ist für Berechnungen optimiert, JavaScript für Browser-Interaktion. Die Kommunikation zwischen beiden hat einen kleinen Overhead.
WebAssembly System Interface – ein Standard, der WASM außerhalb des Browsers nutzbar macht (Server, Edge, CLI). WASI gibt WASM Zugriff auf Dateisystem, Netzwerk und andere Systemressourcen. Cloudflare Workers und Fastly Compute nutzen WASM+WASI für Edge Computing.