dinsdag 4 juli 2017

To cliënt, to server or to JavaScript?

Hoe moeilijk kan het zijn? Bepalen wat op de cliënt moet gebeuren en wat op de server. Blijkbaar best moeilijk als je ziet dat de taken tussen die twee al pakweg 30 jaar alsmaar anders worden verdeeld.

In het mainframe- en minitijdperk was de wereld nog eenvoudig: bijna alle slimmigheid zat in de server. Maar ook toen waren er al grafische terminals die schermafhandeling deden en snapte Sun al dat schijven in werkstations meer konden dan alleen lokale data opslaan.

De pc zette de boel flink op zijn kop. De meeste slimmigheid zat opeens in dat doosje op je bureau en de server mocht een beetje dommig file- en printserver spelen.

Kaboem: het internet! Een "cliënt" kan opeens wereldwijd diensten opvragen bij "servers". Met de browser als moderne kijkdoos om content te tonen die servers opsturen.

Al snel werd de browser ook ingezet om aan de client-kant kunstjes te gaan doen: "Met blijdschap geven wij in 1995 kennis van de geboorte van onze browser-scripttaal. Wij noemen haar: Java Script". Niks voor echte programmeurs natuurlijk, maar best leuk om op de cliënt mee te hobbyen.

Het blijft wonderlijk dat wat ooit een tweederangs script-taaltje werd genoemd is uitgegroeid tot misschien wel de belangrijkste programmeertaal op dit moment. Programmeertaal? Jazeker. Je mag het met alle uitbreidingen tegenwoordig een echte programmeertaal noemen. Belangrijkste? Daar kun je natuurlijk eindeloos over discussiëren. Maar feit is dat veel vernieuwingen tegenwoordig komen uit de JavaScript hoek.

Naast het feit dat JavaScript als taal volwassen is geworden, is er ook een gigantisch 'ecosysteem' omheen ontstaan. Een JavaScript framework als jQuery wordt in meer dan 90% van de webpagina's wereldwijd gebruikt. JSON is misschien wel het belangrijkste uitwisselformaat voor berichten geworden. Wat je ook nodig hebt, in de JS-wereld is er wel wat voor te vinden. Vaak in de vorm van open source en gratis beschikbaar.

Maar de cliënt vreet nog verder aan de server. Hij is tegenwoordig geschikt als runtime-omgeving voor volwaardige applicaties. Met JavaScript Front End frameworks, zoals React, Angular en Vue, bouw je volwaardige applicaties die in een browser of via een app draaien.

En onze vriend de server? Die heeft het moeilijk. Hij mag mag nog steeds doen wat hij goed kan. Bijv. data leveren aan cliëntapplicaties als die daar om vragen. Of slimme dingen doen waar veel capaciteit voor nodig is. Maar waar hij samenwerkt met een cliënt steekt zijn vriendje hem steeds vaker de loef af.

Een mooi bewijs van het volwassen worden van JavaScript is dat, met de komst van Node.js in 2009, Javascript "zelfs" is te gebruiken is op de server. Waarmee je als JavaScript-ontwikkelaar nu de luxe hebt om te kunnen kiezen waar je je code wilt laten uitvoeren. Oftewel: 'to cliënt or to server' wordt met JavaScript 'to cliënt and to server'.