Varför har WebAssembly betydelse?

0
151
Shutterstock/Andrey Suslov

WebAssembly är ett binärt instruktionsformat som kan köras i webbläsare. Det ger en exekveringsmiljö med sandlådor med nästan inbyggd prestanda, vilket eliminerar de flesta omkostnader som är associerade med JavaScript på webbsidor.

WebAssembly (Wasm) är maskinkod på låg nivå som körs i en stackbaserad virtuell maskin . Det betyder att det är mycket närmare din hårdvara än JavaScript. Det måste analyseras och tolkas helt innan det kan köras.

Att skapa Wasm är lite mer involverat än att skriva JavaScript. Även om du kan handkoda det i Wasm Text Format, är detta låg nivå och motsvarar att skriva sammansättningskod för naturlig exekvering. Oftare skriver du på ett etablerat programmeringsspråk och kompilerar för Wasm. (Mer om det senare.)

Varför betyder Wasm faktiskt?

Om ökningen av rika webbapplikationer är något att gå över är utvecklare i stort sett ganska bekväma med att skriva JavaScript. Det har utvecklats avsevärt under det senaste decenniet med nya syntaxfunktioner och förbättringar av webbläsarens prestanda. Dessa har höjt det från enkla skript till ett språk som kan stödja komplexa, fristående applikationer. Varför behövs då WebAssemble?

Wasm ersätter inte JavaScript. Det är inriktat på specifika användningsfall där JavaScript fortfarande är ett hinder och möjligen alltid kommer att vara. Av dessa fall är prestanda där Wasm särskilt utmärker sig.

JavaScript-tunga webbplatser har en tendens att känna sig trög och äta upp minne. Detta märks särskilt på mobila enheter, där webbappar fortfarande saknar & # 8220; känslan & # 8221; av deras inhemska motsvarigheter.

Eftersom Wasm sitter så mycket närmare hårdvaran erbjuder den en prestandanivå som knappt kan skiljas från inbyggda appar. Detta öppnar webben för en ny klass av prestandakritiska applikationer. Om den körs på skrivbordet kan den köras i webbläsaren utan någon märkbar prestandasvängning.

Behöver vi mer webbprestanda?

Det kommer alltid att finnas ett argument om att vissa appar helt enkelt är bäst lämpade för skrivbordsanvändning. Webben ger dock sina egna fördelar, särskilt kring bred distribution.

Att publicera din app på nätet ger dig så stor publik som möjligt. Alla kan komma åt den från vilken enhet de äger. Detta ökar bekvämligheten för dina användare och innebär att du har en kodbas att underhålla.

Den verkliga frågan är inte om vi behöver mer webbprestanda: I stället borde vi fråga oss om vi behöver fler applikationer på nätet. För att svara på den frågan kan vi titta på funktionstunga webbplatser som redan har antagit Wasm.

AutoCAD är datorstödd designprogramvara för arkitekter och ingenjörer. Den senaste webbversionen debuterade på Google I/O 2018. Den använder Wasm för att konsumera komponenter i den befintliga stationära kodbasen som den är. En del av koden går tillbaka i 35 år men körs nu i webbläsaren.

Ett annat exempel är Figma, som redan använde asm.js JavaScript-delmängd för att optimera dess prestanda. Genom att flytta till Wasm noterade Figma en 3x prestandaförbättring. Google använder också Wasm och förlitar sig på det för att ge Google Earth till webben för alla.

Dessa mycket komplexa applikationer kunde inte existera tidigare på webben. Om de gjorde det, sprang de med stränga prestationsstraffar jämfört med sina motsvarigheter på skrivbordet. Wasm är den arkitektur som är nödvändig för att slutföra webbens övergång från dokumentinriktade sidor till en komplett applikationsplattform. Du kan även spela Doom 3!

Öka utvecklarvalet

Utöver prestanda är WebAssembly viktigt eftersom det ger utvecklare större flexibilitet och val. Uteslutande arvet från Flash-, Java- och ActiveX-plugins har JavaScript varit ditt enda val när du skriver kod för webbläsaren.

Den situationen har nu förändrats. WebAssembly är ett lågnivåformat som andra språk kompilerar till. C, C ++, C #, Java, Python, Rust och många fler kan utföra WebAssemble-moduler. Detta ger utvecklare många fler alternativ när de skapar kod för webben.

Du behöver fortfarande JavaScript för att ladda dina Wasm-moduler, men det handlar om det. Du kan implementera all din projekts funktionalitet med ditt valda språk och sedan kompilera den till Wasm för webbläsaren.

Utvecklare kan nu skriva på webben på det språk som passar dem bäst och deras applikation. Det kan vara ett starkt skrivet, objektorienterat språk eller något fokuserat på funktionell programmering. Inte längre är du begränsad till JavaScript-lös typning och prototyper av objekt.

Underlättande av återanvändning av kod

WebAssembly ger stora fördelar när det kommer för kodåteranvändning. Du kan ta med dina delade bibliotek till webben utan att implementera dem på nytt i JavaScript. Detta kan spara timmar, dagar eller veckor av din tid.

Med C # som ett exempel kan du ha en .NET DLL som innehåller bekvämlighetsmetoder som används av din serversida och ditt skrivbordsprogram. Tidigare måste du implementera dessa metoder i JavaScript när det var dags att bygga din webbapp.

Med Wasm kan du kompilera om din DLL med hjälp av WebAssembly som mål. Samma kod blir tillgänglig i webbläsaren. Wasm minskar avfall och duplicering av teknik genom att låta dig använda det du redan har.

Historiskt sett har detta bara varit möjligt om din backend använde Node.js. Du kan abstrahera vanlig logik i ett JavaScript-bibliotek redo för återanvändning i frontend. Nu kan du arbeta med bibliotek skrivna på vilket språk som helst.

Det fungerar även om du kommer att hålla fast med JavaScript för större delen av din webbapp. Du kan gränssnitt med Wasm-moduler via JavaScript, så att du fortfarande kan använda din DLL av delade funktioner. Asynkrona API: er låter dig utbyta data med Wasm så att du kan ringa funktioner och få deras returvärden.

Sammanfattning

WebAssembly avfärdas lätt som en dunkel teknik med liten relevans för dagens webbappar. Wasm riktar sig verkligen mot morgondagens webb, där appar på stationära datorer kommer att köras med integrerad prestanda.

Det är också viktigt att se bortom rubrikfördelarna. Wasm handlar inte bara om hastighetsökningar. Det kan också minska tid till leverans för utvecklingsteam, särskilt de som arbetar plattform eller delar logik mellan klienten och servern. En del av spänningen kring WebAssembly härrör från webbens omvandling till ett sammanställningsmål istället för att det är en helt fristående plattform. Att bygga för webbläsaren betyder inte längre att du skriver JavaScript.

Här 2021 är antagandet av WebAssembly fortfarande relativt lågt. Projekt som använder den har rapporterat framgångar & du behöver bara prova Figma eller Google Earth för att uppskatta Wasm-prestandastandarden. Du kommer troligen att se mer av Wasm under de närmaste åren när appar, både nya och gamla, tas in i webbläsaren.