Een concept

Wat is Java?

Java is ontstaan doordat een aantal ervaren programmeurs nadachten over een aantal problemen waar de software industrie voor staat:

Ergenis over de verschillende grafische bibliotheken

Het Java concept is ontstaan uit ergernis over de verschillende bibliotheken voor de verschillende operating systemen (incompatibele API). Als je een bepaalde functionaliteit onder een Windows omgeving wil realiseren dan zijn daarvoor andere klassen en functies dan om hetzelfde te maken onder een Unix of Mac omgeving.

Hierbij moet je realiseren dat het aanleren van een bibliotheek van deze omvang monnikenwerk is, die jaren kost om de eigenaardigheden te kennen of te omzeilen. Ter illustratie de Class Library References van de MFC bibliotheek van Windows bestaat uit twee boeken van elk meer dan 1000 bladzijden. Deze twee boeken zijn onderdeel van een serie van 6 van dit soort boeken. Het leren kennen van een ontwikkelomgeving is veel meer werk dan het leren kennen van een programmeertaal als C++.

Je kunt je de ergernis voorstellen als je meerdere van dit soort bibliotheken moet leren kennen. Waarbij je ook nog tegen allerlei ergernissen aanloopt. Bijvoorbeeld wat in de ene omgeving eenvoudig en helder is is in de andere omgeving alleen na veel kromme tenen en trucs te realiseren.

Upgrade huishoudelijke apparatuur betekent een nieuwe kopen

Dit verhaal geldt voor grafische interfaces van PC en werkstations, maar het geldt misschien nog wel sterker voor de software in huishoudelijke apparatuur. Bijvoorbeeld een videorecorder.

Je kunt er van uitgaan dat de functionaliteit van het apparaat wordt gerealiseerd met een microcontroller. Een microcontroller is niets anders dan een computer. Meestal iets simpeler, maar dat hoeft niet. De knoppen, displays en motoren zijn aangesloten op de microcontroller en in de microcontroller draait een programma.

Het indrukken van een knop start een deel van het programma, die de bijbehorende actie uitvoert door bijvoorbeeld een melding op de display af te drukken en/of een motor te starten.

Omdat het een apparaat in massaproductie betreft, moet de productiekosten zo laag mogelijk zijn. De kosten van een microcontroller worden mede bepaald door de grootte van het geheugen. Het gevolg hiervan is dat de goedkoopste microcontroller wordt gebruikt, waarin de functies passen. De software van de videorecorder past dus precies in de gekozen microcontroller. Dit betekent dat zelfs bij een kleine uitbreiding van de functionaliteit een nieuwe microcontroller gekozen wordt. Dus bij een nieuwe versie van de software van de videorecorder moet je een nieuwe videorecorder kopen. Dit ben je dan ook gewend en we vinden het normaal.

Geen software hergebruik

Dit is de gebruikerskant van het verhaal. Ook de ontwikkelaar heeft zijn problemen. Om de software in een bepaald type microcontroller te persen wordt de structuur van de software losgelaten. In elke vrije geheugenplaats worden data of instructies geperst. Als het maar past. Dat scheelt een kwartje op de kosten voor de microcontroller en een miljoen maal een kwartje is een heleboel geld. Maar bij een volgende versie van het apparaat wordt de oude software onbruikbaar en moet opnieuw geschreven worden. Niks hergebruik van code.

Het volledig opnieuw schrijven van de software is ook niet goedkoop. Misschien is het uiteindelijke wel duurder dan de miljoen kwartjes die verdient worden met deze aanpak.

Ik krijgt de indruk dat ook in de microcontroller wereld object georienteerd denken en daarbij hergebruik van code steeds belangrijker wordt. Dit kan alleen maar als het goedkoper is. Daar komt nog bij dat de microcontroller zelf ook goedkoper wordt.

Software onafhankelijk van de hardware

Deze twee gevallen, de grafische interface bij de verschillende operating systemen en de software in microcontrollers waren voor het JAVA ontwikkelteam voldoende reden om de software onafhankelijk te maken van de hardware. De volgorde wordt dan

Virtuele machine

Om deze volgorde - eerst software, dan hardware - te kunnen realiseren moet de software draaien op een virtuele machine. Dit een stuk software die een universele processor emuleert. Dit moet zo omdat in de werkelijkheid niet alle processoren gelijk zijn. Deze software tussenlaag staat tussen de processor en het uiteindelijke programma. Het programma praat dus alleen maar tegen de Virtuele Machine en heeft geen weet van de echte processor en het operating systeem waarop hij draait.

copyright © 1998 Little World