Java (2)

Een van de gekmakendste paradoxen van de computerwereld zit verscholen in het woord 'platform'. Aan de ene kant is een computer in heel zijn wezen het flexibelste stuk gereedschap dat de mens ooit heeft uitgevonden. Een computer kan in principe elke gedaante aannemen die u maar wilt.

Met één uitzondering: het is bijna ondoenlijk om een computer de gedaante van een andersoortige computer te laten aannemen. Een Apple die zich onherkenbaar en perfect vermomt als IBM-achtige PC, SUN-sparc werkstation of nog weer iets anders, is een nog nooit vertoond kunststukje. Evenzo is software die op één type computer prima werkt, voor bijna elk ander computertype onbruikbaar. De reden is dat computers weliswaar hun werk doen in de vluchtige wereld van stroompulsjes en magnetisme, maar zelf vierkant in de grofstoffelijke wereld van metaal en keramiek staan. Hoe flexibel een computer ook is, de onderdelen waaruit hij is opgetrokken hebben ieder hun eigen rotsvaste gedaante, met al even rotsvaste, rigide eigenschappen. En omdat er nu eenmaal altijd meer wegen naar Rome leiden, zijn er verschillende stammen van computers ontstaan, die materieel even ver van elkaar kunnen verschillen als een bakfiets van de TGV.

Die stammen worden in de wandeling platforms genoemd. Platforms zijn als het ware het toneel waarop computerprogramma's hun kunsten vertonen. Om te zorgen dat computerprogramma's stevig op het toneel staan, op de juiste manier de decorstukken weten te zetten en niet in de orkestbak vallen, is een toneelmeester nodig, die de 'hardware' grondig kent, en zorgt dat die hardware de strapatsen van elk programma op de juiste manier verwerkt. Die functie vervult, breed gesproken, het besturingssysteem. Het is een tolk tussen programma's en gebruikers aan de ene kant, en de hardware aan de andere. In een ideale wereld zouden alle besturingssystemen alleen aan de hardware-kant verschillen, maar aan de kant van programma's en gebruikers identiek zijn. Helaas is de wereld niet ideaal, en zijn besturingssystemen aan de software-kant net zo verschillend en onverenigbaar als aan de onderkant. Dat komt doordat alle bestaande besturingssystemen gebouwd zijn door mensen die noodgedwongen maar wat gingen pionieren. Hoe de hardware-kant eruit moest zien was gegeven, maar de andere kant lag open. Er bestonden geen standaarden, en dus deed iedereen wat hem het beste leek. En zo werd het basisprobleem grotendeels bestendigd: met een besturingssysteem aangeklede computers verschillen bijna net zoveel van elkaar als kale computers.

Aanvankelijk leek dat commercieel ook helemaal niet dom. Onverenigbaarheid tussen systemen maakte het voor de klanten immers lastig om naar een concurrent over te stappen. Ze hadden dure software aangeschaft, die bij wisseling van platform waardeloos zou worden, en de gebruikers zouden opnieuw dure cursussen moeten volgen en dikke boeken moeten doorploegen om te leren hoe je een bestandje kopieerde, of een folder, pardon: directory moest maken. Maar dat veranderde toen de kantoornetwerken hun intrede begonnen te doen. Vele kleintjes maken meer dan één grote, ontdekte men, en ruilde midi- en minicomputers, en zelfs grote mainframes, in voor netwerken van PC-achtige machines. Opeens werd het daardoor razend belangrijk dat computers naadloos met elkaar konden samenwerken, en zelfs als een eenheid konden optreden. Menige computerspecialist heeft aan de haken en ogen die daaraan vastzaten grijze haren overgehouden.

Nu wist die computerspecialist tenminste nog met welke soorten computers hij te maken had. Hij wist immers precies welke computers allemaal onderdeel van het netwerk waren. Die strohalm werd hem ontnomen met de komst van het Internet, of beter: met de komst van het World Wide Web. Al gauw ontstond de roep om meer te kunnen doen met die webpagina's dan alleen maar tekst en plaatjes vertonen. Waarom zou je er geen heuse programma's in kunnen stoppen? Een briljante gedachte. Net zoals een Apple- of Windowsgebruiker nu bijvoorbeeld een calculatortje op het bureaublad op zijn beeldscherm heeft liggen, zou zo'n calculatortje op een webpagina kunnen liggen. Programma's die gegevens opzochten en presenteerden, zouden, als ze op een webpagina stonden en dus in verbinding stonden met het Internet, die gegevens van overal ter wereld kunnen halen. Het hele Internet zou zo n gigantische computer worden, die bij iedereen thuis op tafel stond. Denk je de mogelijkheden daarvan eens in!

Prachtige fantasie was het, die vooralsnog keihard stukliep op de onoverbrugbare verschillen tussen platforms. Immers, een programma dat op een webpagina moest draaien, kon op elke willekeurige soort computer, elk platform aangeroepen worden, en dat gold zowel voor bestaande platforms als voor platforms die nog ontwikkeld zouden worden. Hoe kon je een programma schrijven dat onder zulke onvoorspelbare omstandigheden kon werken? Dat zich niets van zijn toevallige omgeving zou aantrekken? Het begin van de oplossing van het probleem lag bij het World Wide Web zelf.

Om daarover heen en weer te fietsen, heb je een browser nodig. Omdat het web nog maar zo jong was, bestonden er daarvan niet veel. Eigenlijk zijn er maar twee grote jongens: Netscape en Microsoft Explorer. Die browsers zitten in de computer van de gebruiker en kunnen dus met die computer omgaan. Als je nu programma's kunt maken die voor een flink deel via de browser werken en geen bewerkingen gebruiken die sommige machines niet kennen, ben je een eind, zo filosofeerde een aantal slimme softwarejongens bij computerfabrikant Sun in de kantine. De browser is dan eigenlijk een soort besturingssysteem bovenop het eigenlijke besturingssysteem, hij tolkt tussen netwerkprogramma's en het platform waarop de browser geladen is. Een potente gedachte, en omdat nette Amerikanen op het werk geen alcohol mogen nuttigen, noemden ze hun gedachte geen Jenever maar Java, sterke koffie. En ze gingen aan de slag.