Nahradí WebAssembly (Wasm) JavaScript?

Již od vytvoření JavaScriptu v roce 1995 tvoří klíčovou součást poskytování interaktivních zážitků na webových stránkách. Vzhledem k tomu, že podpora WebAssembly (Wasm) je nyní k dispozici ve velkých prohlížečích, bude schopna obstát před konkurencí, nebo WebAssembly nahradí JavaScript jako základní nástroj pro vývoj na straně klienta na webu?

Myslím, že existuje několik faktorů, které přimějí nebo zpomalí vývojáře, aby přijali WebAssembly jako náhradu JavaScriptu. Jedná se o současnou úroveň osvojení jazyka vývojáři, stávající dostupnou podporu knihoven, jak komplexní je podpora prohlížečů a zkušenosti, které umožňují vývojářům poskytovat uživatelům.

Přijetí jazyka

V současné době téměř 98 % všech webových stránek používá JavaScript pro vývoj na straně klienta. Je to především kvůli tomu, že je to jediná skutečná možnost (zvláště poté, co v roce 2020 skončila podpora Flash). JavaScript lze také použít pro vývoj na straně serveru, což umožňuje vývojářům používat stejný jazyk pro části webových aplikací na straně klienta a na straně serveru prostřednictvím platforem, jako je Node.js. Díky tomu je JavaScript velmi flexibilní, protože se jazyk můžete naučit jednou a použít jej téměř kdekoli.

Vytvoření případu pro WebAssembly je trochu složitější. WebAssembly lze sestavit z více jazyků, z nichž každý má svá pozitiva a negativa. Nakonec si představuji, že vývojáři použijí jazyk, který už znají nejlépe. Zdá se, že tím WebAssembly zůstává na stejné úrovni jako JavaScript, protože oba mohou být použity pro vývoj na straně klienta i na straně serveru.

Podpora knihovny

Vzhledem k tomu, že JavaScript je jedinou schůdnou možností pro vývoj webu na straně klienta, bylo s ním vyvinuto velké množství knihoven a balíčků. V současné době je na npm hostováno více než 1,3 milionu balíčků, které pokrývají širokou škálu funkcí, které mohou vývojáři využít ve svých vlastních aplikacích. Díky tomu je vytváření JavaScriptu rychlejší, protože vývojáři mohou tyto balíčky používat pro běžné funkce.

Kromě toho je k dispozici také řada frameworků pro podporu vývoje na straně klienta, jako je Angular nebo Vue. Díky šíři dostupné podpory je použití JavaScriptu velmi bezpečnou možností.

V případě WebAssembly se dostupné knihovny budou v jednotlivých jazycích lišit. Vývojářům by to ale umožnilo využít existující knihovny pro tento jazyk, pokud je lze zkompilovat do WebAssembly. To otevírá možnost použití řady výkonných funkcí, které by byly dříve v JavaScriptu nedostupné nebo obtížně dosažitelné, jako je zpracování obrázků nebo videa.

Jednou z významných nevýhod WebAssembly je však to, že nemůže přímo manipulovat se stránkou HTML. V současné době musí modul Wasm používat JavaScript k aktualizaci nebo úpravě obsahu stránky v reakci na interakce uživatele nebo změny dat.

Podpora prohlížeče

Prohlížeče mají rozsáhlou podporu pro JavaScript, přičemž hlavní prohlížeče implementují širokou škálu webových rozhraní API. Tato rozhraní API umožňují kódu JavaScript spuštěnému v prohlížeči přístup k některým funkcím zařízení, od umístění zařízení po připojená periferní zařízení Bluetooth a USB.

WebAssembly podporují také hlavní prohlížeče. Aplikace, které jej využívají, tedy již mají poměrně široký dosah. Je třeba si uvědomit, že webová rozhraní API umožňující přístup k funkcím místního zařízení jsou dostupná pouze pro kód JavaScript spouštěný v prohlížeči. V důsledku toho nemůže kód WebAssembly k těmto funkcím přistupovat přímo.

Zdá se, že to naznačuje, že prodejci prohlížečů považují JavaScript za velmi flexibilní způsob, jak vývojářům odhalit stále složitější funkce a funkce zařízení. Mezitím musí WebAssembly pro přístup k těmto rozhraním API spoléhat na JavaScript. Pro mě to rozhodně vypadá, že JavaScript má v tomto případě výhodu.

Podpora zkušeností

JavaScript i WebAssembly jsou schopny spouštět složité webové aplikace na straně klienta. Oba budou zpracovávat funkce, jako je zpracování informací o směrování požadavků, reakce na změny dat a zpracování odpovědí na uživatelské příkazy. JavaScript má však velmi vyspělou podporu pro tyto případy použití a pravděpodobně pro mnohé zůstane první volbou.

WebAssembly funguje nejlépe ve specifických případech použití. To je obvykle, když je vyžadováno intenzivnější zpracování, jako je úprava obrázků nebo videa nebo vykreslování 3D grafiky. I když by bylo možné provádět tyto úkoly v JavaScriptu, výkon by byl pomalejší než u speciálně vytvořeného modulu Wasm provádějícího stejné úkoly. To je způsobeno tím, že WebAssembly je kompilován během procesu sestavení; urychlení spouštění prohlížeče.

Souhrn

Abych to uzavřel, nahradí Wasm JavaScript? Ne. Účelem Wasm je doplňovat JavaScript v prohlížečích, nikoli poskytovat náhradu. To je posíleno moduly Wasm, které potřebují k interakci se stránkou HTML používat JavaScript.

Cílem Wasm je podporovat různé případy použití, kterých by bylo obtížné nebo nemožné prakticky dosáhnout pouze pomocí JavaScriptu. Může se jednat o vykreslování 3D grafiky (jako ve hrách) nebo jiné operace náročné na zpracování (jako jsou simulace). Příkladem toho je Doom 3 běžící ve webovém prohlížeči, který používá Wasm ke spuštění hry a vykresluje grafický výstup na HTML plátno.

Zatímco Wasm otevírá dveře mnoha vzrušujícím novým příležitostem, podle mého názoru JavaScript zůstane standardem pro vývoj webových aplikací na straně klienta po dlouhou dobu. Dokonce i web WebAssembly naznačuje, že JavaScript „zůstane jediným, privilegovaným dynamickým jazykem webu“.