De opmars van Javascript de laatste jaren is onstopbaar. De taal speelt een steeds grotere rol in de browser, via webapplicaties en andere interactieve websites. Ook de webserver is ze nu aan het innemen, onder de naam Node.js. Ze wordt ook vaak in één adem genoemd met HTML 5 en CSS 3, de talen die samen het nieuwe web vormen, maar zonder Javascript niet zoveel leven tonen. Een nieuwe grote groep van developers is ontstaan, die nagenoeg uitsluitend programmeren met deze drie talen.
Nochtans is Javascript qua programmeertaal niet meteen het neusje van de zalm… Een paar quotes:
- “JavaScript is a language with more than its share of bad parts.”
- “Few classical programmers found prototypal inheritance to be acceptable, and classically inspired syntax obscures the language’s true prototypal nature. It is the worst of both worlds.”
- “undefined and NaN are not constants. They are global variables, and you can change their values. That should not be possible, and yet it is. Don’t do it.
(Uit: Douglas Crockford, JavaScript: The Good Parts )
Er zijn uiteraard ook goede delen aan Javascript (anders zou dat boek toch wel anders heten), maar al bij al zal Javascript geen schoonheidsprijzen in de wacht slepen. Het is een dynamisch getypeerde taal, met prototypische overerving, en het is erg gemakkelijk in Javascript om je programma heel onleesbaar te maken. Programmeurs die met een meer klassieke taal beginnen werken, zoals Java, en daarna pas Javascript leren, moeten typisch serieus wennen (en ontwennen)!
De twee talen zijn trouwens, ondanks de naam en enkele gelijkenissen (e.g. dat ze beide een C-achtige syntax hebben), niet gerelateerd (men zou kunnen zeggen: Javascript en Java zijn zoals Parket en Park). Javascript kreeg zijn naam indertijd van NetScape in de hoop op de toenmalige populariteit van Java te kunnen piggybacken.
Tegenwoordig zijn er ook al verschillende talen die de syntactische tekortkomingen van Javascript trachten op te vangen: het zijn talen die sterk op Javascript lijken, en er ook in worden vertaald wanneer het tijd wordt om de code uit te voeren. Voorbeelden zijn CoffeeScript en Dart. Voorlopig zijn deze talen echter nog maar weinig in gebruik in vergelijking met het origineel.
Waarom is Javascript dan zo populair? Dat heeft een aantal redenen. De belangrijkste daarvan is de V8 engine, die zijn intrede maakte in Google Chrome. Deze engine (hetgeen wat de code daadwerkelijk uitvoert) heeft de performantie van de taal naar een nieuw niveau geheven, en wordt trouwens ook gebruikt in node.js. Daarnaast is het uiteraard zowat de enige taal die nog gebruikt wordt om code uit te voeren in de browser zelf (aan de “client side”), wat, in een goed gebouwde website, de server en het netwerk serieus kan ontlasten, terwijl er toch een mooie en interactieve site of applicatie wordt gepresenteerd.
Een paar positievere quotes:
- de wet van Jeff Atwood: “any application that can be written in JavaScript, will eventually be written in JavaScript“
- “After some abandoned experiments with static compilation, we looked around and saw how successfully JIT techniques are being applied in the JavaScript space: Chrome’s V8 engine, in particular, has greatly pushed the status quo of JavaScript performance.” – anoniem
Javascript viert volgend jaar al z’n twintigste verjaardag… De taal werd vrij snel populair in het begin en er werd zelfs een standaard voor geschreven. Toch keken “echte” developers een tijdlang neer op de taal. Een grote doorbraak kwam er dankzij AJAX (Asynchronous JavaScript and XML), een technologie die toelaat om niet bij elke communicatie met de server opnieuw de volledige webpagina te moeten laden. Deze technologie heeft een beetje een evolutie gekend voorheen, maar kreeg voor het eerst haar naam in 2005. Sindsdien is de groei van Javascript als taal van het web niet meer te onderschatten.
AJAX op zijn beurt heeft geleid tot twee recentere ontwikkelingen die de dominantie van de taal nogmaals onderstrepen: moderne Javascript raamwerken (Frameworks) en server-side Javascript onder de vorm van Node.js.
Frameworks
Websites bouwen met interactieve en dynamische graphics was vroeger erg moeilijk, maar daar zijn nu Javascript raamwerken voor. Het begon vooral in 2006 met JQuery: een Javascript pakket dat het een stuk eenvoudiger maakte, en nog altijd doet, om mooie zaken op het scherm te presenteren. JQuery evolueert nog steeds, en is ondertussen geïntegreerd geraakt in tal van andere pakketten en frameworks. Niet in het minst ligt JQuery aan de basis van zowat alle recentere Javascript raamwerken die het ontwikkelingsgemak nog een stapje verder nemen.
Bootstrap.js
Bootstrap werd oorspronkelijk ontwikkeld door Twitter, en in 2011 open source gemaakt. Het bestaat uit een collectie aan tools voor het ondersteunen van het bouwen van websites en -apps, vooral gebaseerd op templates voor allerlei UI-elementen. De huidige versies hebben een goede ondersteuning voor responsive design en hanteren de mobile first strategie.
Backbone.js
Backbone bestaat al sinds 2010 als Javascript raamwerk en volgt iets dat lijkt op het model-view-controller (MVC) principe. Het ondersteunt en vereenvoudigt ook de verbinding via REST van de front-end met de backend van de te ontwikkelen site.
Het is vrij populair geworden en wordt momenteel zelfs in de core van Drupal 8, het populaire CMS, ingebouwd.
AngularJS
Angular is een raamwerk dat zich focust op het via Javascript uitbreiden van het html-model van een website. Zo kan je via eenvoudige, zelf gedefiniëerde extra sleutelwoorden in de html-pagina tonnen functionaliteit toevoegen zonder aan de overzichtelijkheid van het html-model te raken. Er wordt op die manier ook een heel niveau van herbruikbaarheid toegevoegd aan web-ontwikkeling.
Node.js
Voor de allereerste keer is Javascript niet alleen aan de client side, maar ook op de server enorm populair aan het worden. Dit komt doordat het gebruik van node.js verschillende voordelen heeft:
- Efficiëntie en compatibiliteit: er moet niet langer telkens een vertaalslag worden uitgevoerd tussen de gegevens die op de server staan en degene in de browser: alles is in javascript, dus de manier waarop data wordt gerepresenteerd, is voor de client en de server hetzelfde (typisch gebeurt dit met json). Voor de vertaalslag hoeft dus ook geen code meer te worden geschreven. Daarnaast is een node.js server ook vrij performant: één server kan zeer veel requests van clients tegelijk afhandelen.
- Leercurve: Developers hoeven nog maar één programmeertaal te leren alvorens ze een volledige webapplicatie kunnen bouwen. Niet langer moeten ze een server-taal leren, zoals php of java, en daarnaast nog eens Javasript voor de client.
Dit laatste heeft trouwens ook zijn impact op de Javascript frameworks: nu zijn er al frameworks die zich niet alleen op de client, maar op de volledige stack richten, puur in Javascript: Meteor is zo’n framework.
Zal Javascript verder de wereld veroveren en misschien zelfs php naar de kroon steken? Dat is moeilijk te voorspellen, de wereld van web development verandert razend snel. Een Javascript framework dat vandaag populair is kan over een paar jaar al ouderwets lijken in vergelijking met nieuwere frameworks. We kunnen alleen maar besluiten dat we het door deze snelle evoluties allicht steeds makkelijker zullen hebben om goed werkende webapplicaties te ontwikkelen, en dat het gebruik van een modern Javascript framework, of eventueel zelfs van node.js, een te overwegen optie is bij quasi alle web projecten.
Pingback: I’m dreaming of a digital Xmas | Smals Research