====== WebAssembly (Wasm): Binární kód pro web ====== **WebAssembly** je nízkoúrovňový binární formát pro spustitelný kód v prohlížeči. Není náhradou za JavaScript, ale jeho partnerem. Umožňuje webovým aplikacím provádět výpočetně náročné úlohy (střih videa, 3D hry, šifrování), které byly dříve pro JavaScript příliš pomalé. ===== 1. Proč potřebujeme WebAssembly? ===== JavaScript byl původně navržen pro jednoduché interakce na stránce. S rozvojem komplexních aplikací (Google Earth, Figma, Photoshop v prohlížeči) narazil na své limity: * **Parsování:** JS kód musí prohlížeč nejprve stáhnout jako text a zparsovat, což trvá dlouho. * **Typování:** Protože je JS dynamicky typovaný, engine prohlížeče musí za běhu neustále kontrolovat typy proměnných. * **Garbage Collection:** Automatické čištění paměti v JS může způsobit krátké záseky v aplikaci. --- ===== 2. Klíčové vlastnosti Wasm ===== * **Rychlost:** Wasm je binární, takže se stahuje rychleji a prohlížeč ho může okamžitě kompilovat do strojového kódu. * **Bezpečnost:** Běží v bezpečeném izolovaném prostředí (sandboxu) prohlížeče, stejně jako JavaScript. Nemá přímý přístup k hardwaru bez svolení uživatele. * **Portabilita:** Je navržen jako standard (W3C), takže funguje ve všech moderních prohlížečích a na všech operačních systémech. * **Podpora jazyků:** Umožňuje vzít existující kód v C++ nebo Rustu a s minimálními změnami ho "překlopit" na web. --- ===== 3. Jak WebAssembly funguje? ===== Vývojář nepíše kód přímo ve WebAssembly (to by bylo jako psát v Assembleru). Proces vypadá následovně: 1. Vývojář napíše kód v **vysokoúrovňovém jazyce** (např. [[it:sw:rust_programming|Rust]]). 2. Pomocí kompilátoru (např. Emscripten nebo wasm-pack) se kód přeloží do souboru **.wasm**. 3. JavaScript v prohlížeči tento soubor načte, zkompiluje a spustí jeho funkce. --- ===== 4. Praktické využití ===== Kde už dnes WebAssembly potkáváte, aniž byste o tom věděli? * **Figma:** Populární nástroj pro designéry běží díky Wasm v prohlížeči stejně plynule jako nativní aplikace. * **Google Meet:** Rozmazání pozadí u videohovorů v reálném čase je výpočetně náročné a zpracovává ho právě Wasm. * **Herní enginy:** Unity a Unreal Engine využívají Wasm pro export her přímo do webového prohlížeče. * **Blockchain:** Mnoho moderních sítí (např. Polkadot nebo Near) používá Wasm jako formát pro své [[it:sw:smart_contracts|chytré smlouvy]]. --- ===== 5. Budoucnost: Wasm mimo prohlížeč (WASI) ===== WebAssembly se začíná šířit i mimo webové prohlížeče díky standardu **WASI (WebAssembly System Interface)**. To umožňuje spouštět Wasm moduly na serverech, v cloudu nebo na IoT zařízeních jako bezpečnější a lehčí alternativu k Docker kontejnerům. ---- //Související články:// * [[it:sw:rust_programming|Rust: Nejlepší jazyk pro kompilaci do Wasm]] * [[it:sw:javascript|JavaScript: Spolupráce s WebAssembly]] * [[it:sw:smart_contracts|Smart Contracts: Wasm jako engine pro blockchain]] //Tagy: {{tag>it wasm webassembly frontend rust performance web-development}}//