{"id":15,"date":"2026-06-15T06:05:29","date_gmt":"2026-06-15T06:05:29","guid":{"rendered":"https:\/\/it2503.sspu-opava.eu\/?page_id=15"},"modified":"2026-06-15T06:05:29","modified_gmt":"2026-06-15T06:05:29","slug":"jak-webassembly-funguje","status":"publish","type":"page","link":"https:\/\/it2503.sspu-opava.eu\/?page_id=15","title":{"rendered":"Jak WebAssembly funguje"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Jak WebAssembly funguje?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">WebAssembly je navr\u017een jako c\u00edlov\u00fd jazyk pro kompilaci. To znamen\u00e1, \u017ee v\u00fdvoj\u00e1\u0159i p\u00ed\u0161\u00ed k\u00f3d ve vy\u0161\u0161\u00edch programovac\u00edch jazyc\u00edch (C, C++, Rust, Go atd.) a ten je n\u00e1sledn\u011b zkompilov\u00e1n do WASM bin\u00e1rn\u00edho form\u00e1tu. V\u00fdsledn\u00fd .wasm soubor pak lze spustit v libovoln\u00e9m prost\u0159ed\u00ed s WASM runtime.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WASM pou\u017e\u00edv\u00e1 virtu\u00e1ln\u00ed stroj zalo\u017een\u00fd na z\u00e1sobn\u00edku. Instrukce jsou jednoduch\u00e9 a p\u0159\u00edmo\u010dar\u00e9, co\u017e umo\u017e\u0148uje rychlou interpretaci a kompilaci JIT. Ka\u017ed\u00fd WASM modul b\u011b\u017e\u00ed ve vlastn\u00edm izolovan\u00e9m pam\u011b\u0165ov\u00e9m prostoru, co\u017e zaji\u0161\u0165uje bezpe\u010dnost.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">ASM.js vs WebAssembly<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ASM.js byl p\u0159edch\u016fdce WebAssembly \u2014 podmno\u017eina JavaScriptu navr\u017een\u00e1 pro kompilaci C\/C++ k\u00f3du. Zat\u00edmco ASM.js p\u0159edstavoval v\u00fdznamn\u00fd pokrok, nar\u00e1\u017eel na limity JavaScriptu. WebAssembly tyto limity p\u0159ekon\u00e1v\u00e1 a nab\u00edz\u00ed v\u00fdrazn\u011b lep\u0161\u00ed v\u00fdkon, men\u0161\u00ed velikost soubor\u016f a \u0161ir\u0161\u00ed podporu nap\u0159\u00ed\u010d prohl\u00ed\u017ee\u010di.<\/p>\n\n\n\n<div class=\"wp-block-group comparison-table\">\n  <div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n    \n    <figure class=\"wp-block-table\">\n      <table>\n        <thead>\n          <tr>\n            <th>Vlastnost<\/th>\n            <th>ASM.js<\/th>\n            <th>WebAssembly<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td>Form\u00e1t<\/td>\n            <td>Textov\u00fd (JavaScript)<\/td>\n            <td>Bin\u00e1rn\u00ed (WASM)<\/td>\n          <\/tr>\n          <tr>\n            <td>Rychlost na\u010d\u00edt\u00e1n\u00ed<\/td>\n            <td>Pomal\u00e9 (parsov\u00e1n\u00ed JS)<\/td>\n            <td>Rychl\u00e9 (bin\u00e1rn\u00ed form\u00e1t)<\/td>\n          <\/tr>\n          <tr>\n            <td>Velikost soubor\u016f<\/td>\n            <td>Velk\u00e1<\/td>\n            <td>Mal\u00e1 (komprimovan\u00e1)<\/td>\n          <\/tr>\n          <tr>\n            <td>V\u00fdkon<\/td>\n            <td>~50 % nativn\u00edho<\/td>\n            <td>~80\u2013100 % nativn\u00edho<\/td>\n          <\/tr>\n          <tr>\n            <td>Podpora prohl\u00ed\u017ee\u010d\u016f<\/td>\n            <td>Pouze Firefox<\/td>\n            <td>V\u0161echny modern\u00ed<\/td>\n          <\/tr>\n          <tr>\n            <td>Typov\u00e1 kontrola<\/td>\n            <td>Anotace v JavaScriptu<\/td>\n            <td>Nativn\u00ed typov\u00fd syst\u00e9m<\/td>\n          <\/tr>\n          <tr>\n            <td>V\u00fdvoj\u00e1\u0159sk\u00e9 n\u00e1stroje<\/td>\n            <td>Omezen\u00e9<\/td>\n            <td>Rozs\u00e1hl\u00e9 (debuggery, profiler)<\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/figure>\n    \n  <\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Kompila\u010dn\u00ed \u0159et\u011bzec<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Proces p\u0159evodu zdrojov\u00e9ho k\u00f3du do WASM se skl\u00e1d\u00e1 z n\u011bkolika krok\u016f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n  <li>Zdrojov\u00fd k\u00f3d (C, C++, Rust, Go) je p\u0159elo\u017een pomoc\u00ed kompil\u00e1toru (nap\u0159. Emscripten, LLVM) do mezireprezentace<\/li>\n  <li>Mezireprezentace je n\u00e1sledn\u011b p\u0159evedena do WASM bin\u00e1rn\u00edho form\u00e1tu<\/li>\n  <li>V\u00fdsledn\u00fd .wasm soubor je optimalizov\u00e1n a komprimov\u00e1n pro distribuci<\/li>\n  <li>Prohl\u00ed\u017ee\u010d st\u00e1hne WASM modul, zvaliduje ho a zkompiluje JIT do nativn\u00edho k\u00f3du<\/li>\n  <li>JavaScript m\u016f\u017ee s WASM modulem komunikovat p\u0159es WASM API a sd\u00edlet pam\u011b\u0165<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Cel\u00fd proces je transparentn\u00ed a prob\u00edh\u00e1 v \u0159\u00e1du milisekund. V\u00fdvoj\u00e1\u0159 p\u00ed\u0161e k\u00f3d ve zn\u00e1m\u00e9m jazyce a v\u00fdsledek b\u011b\u017e\u00ed v prohl\u00ed\u017ee\u010di s nativn\u00edm v\u00fdkonem.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jak WebAssembly funguje? WebAssembly je navr\u017een jako c\u00edlov\u00fd jazyk pro kompilaci. To znamen\u00e1, \u017ee v\u00fdvoj\u00e1\u0159i p\u00ed\u0161\u00ed k\u00f3d ve vy\u0161\u0161\u00edch programovac\u00edch jazyc\u00edch (C, C++, Rust, Go atd.) a ten je n\u00e1sledn\u011b zkompilov\u00e1n do WASM bin\u00e1rn\u00edho form\u00e1tu. V\u00fdsledn\u00fd .wasm soubor pak lze spustit v libovoln\u00e9m prost\u0159ed\u00ed s WASM runtime. WASM pou\u017e\u00edv\u00e1 virtu\u00e1ln\u00ed stroj zalo\u017een\u00fd na z\u00e1sobn\u00edku. Instrukce [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-15","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/it2503.sspu-opava.eu\/index.php?rest_route=\/wp\/v2\/pages\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/it2503.sspu-opava.eu\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/it2503.sspu-opava.eu\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/it2503.sspu-opava.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/it2503.sspu-opava.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=15"}],"version-history":[{"count":1,"href":"https:\/\/it2503.sspu-opava.eu\/index.php?rest_route=\/wp\/v2\/pages\/15\/revisions"}],"predecessor-version":[{"id":16,"href":"https:\/\/it2503.sspu-opava.eu\/index.php?rest_route=\/wp\/v2\/pages\/15\/revisions\/16"}],"wp:attachment":[{"href":"https:\/\/it2503.sspu-opava.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}