waar ben je naar op zoek?

Generic filters
Exact matches only
Search in title
Search in content
Search in excerpt

Web Assembly: een revolutie voor het web

In de huidige wereld is de combinatie HTML, CSS en Javascript dé manier van programmeren op het web.

Echter zie je steeds vaker de term Web Assembly (WASM) langskomen. In deze blog zal ik proberen uit te leggen wat het is en waarom het zo speciaal is.

Wat is Web Assembly?

Javascript is ooit ontstaan als een eenvoudige lichtgewicht taal voor eenvoudige scripts. Helaas vallen de meeste applicaties tegenwoordig niet meer onder de noemer simpel of lichtgewicht. Gelukkig zijn er door de jaren heen vele toevoegingen en verbeteringen geweest om Javascript beter en sneller te maken. Echter blijft het probleem dat het Operating System (OS) dezelfde code sneller kan uitvoeren dan dat een browser dit kan met Javascript.

Eén van de verbeteringen aan Javascript is asm.js, dit is een soort geoptimaliseerde subset van Javascript. Daardoor kan dit veel sneller door de browser uitgevoerd worden. Echter was het destijds nog niet zo snel als een native applicatie. Daarom begon Mozilla in 2015 aan een onderzoek om een echte virtual machine in een browser te bouwen die naast Javascript ook andere talen kan uitvoeren op bijna dezelfde snelheid als een native applicatie. Na dit onderzoek is Mozilla gaan samenwerken met andere browser makers om dit geïmplementeerd te krijgen. Vervolgens is uit deze samenwerking de Web Assembly standaard ontstaan.

Wat betekent dit voor ontwikkelaars?

Het ontstaan van de Web Assembly standaard en de implementatie in andere browsers maakt het mogelijk om andere talen dan Javascript op het web te gebruiken. Voor mij als .net developer zou dat betekenen dat ik in plaats van Javascript ‘gewoon’ C# kan gebruiken in de browser implementatie van mijn web applicatie. Naast .net worden ook andere talen ondersteund, zoals bijvoorbeeld C, C++ of Python. Je hoeft deze code dus niet te converteren naar een andere taal om het te kunnen gebruiken op het web. Daarnaast wordt het bijna met dezelfde snelheid uitgevoerd als native code.

Web Assembly bevat ook de mogelijkheid om te communiceren met traditionele Javascript bestanden en met bijvoorbeeld je browser DOM. Daarmee kan je nu dus ook een mix en match doen tussen WASM en Javascript. Je kan dus vanuit je Javascript WASM aanroepen doen of bijvoorbeeld vanuit WASM de browser DOM manipuleren.

Is dit dan een plug-in?

Nee, Web Assembly is geen browser plug-in. Plug-ins draaiden oorspronkelijk als losse applicatie in het browser proces. Dit had als nadeel dat je daarmee beveiligingsrisico’s kon introduceren. Web Assembly code draait in dezelfde sandbox als waarin de Javascript code ook uitgevoerd wordt. Nu zou je kunnen aanvoeren dat het gedrag van Web Assembly niet helemaal hetzelfde is omdat Javascript code niet gecompileerd wordt, echter is dat niet in alle gevallen juist. De meeste moderne browsers voeren Just in Time (JIT) compilatie uit voor Javascript en dat gebeurt dus ook voor Web Assembly code.

Ondersteuning

Op het moment van schrijven, wordt Web Assembly ondersteund in de laatste paar versies van alle grote browsers met een paar uitzonderingen. Meer informatie hierover is hier te vinden.

Web Assembly verandert de structuur van het web en maakt het mogelijk om andere talen dan Javascript te gebruiken voor web development. Dit biedt vele mogelijkheden voor andere talen om hierop in te springen. Op dit moment is Web Assembly nog druk in ontwikkeling, maar heeft het zeker wel de potentie om onze manier van ontwikkelen behoorlijk te beïnvloeden.

 

 

Link gekopieërd