| Geschiedenis van Java-programmeertaal | | Afdrukken | |
| Geschreven door Rinie Hooijer | |||||
| woensdag, 03 december 1997 13:00 | |||||
Pagina 1 van 3 Al jarenlang zoeken programmeurs naar wegen om goedkoper voor verschillende besturingssystemen te kunnen schrijven. Nooit werd een echte oplossing gevonden. Dit veranderde in 1994 toen Sun Microsystems Java introduceerde. Met deze programmeertaal kunnen programma's worden geschreven die geschikt zijn voor ieder besturingssysteem. De taal opent deuren voor software-ontwikkelaars die anders dicht zouden blijven.Al jarenlang zoeken programmeurs naar wegen om goedkoper voor verschillende besturingssystemen te kunnen schrijven. Nooit werd een echte oplossing gevonden. Dit veranderde in 1994 toen Sun Microsystems Java introduceerde. Met deze programmeertaal kunnen programma's worden geschreven die geschikt zijn voor ieder besturingssysteem. De taal opent deuren voor software-ontwikkelaars die anders dicht zouden blijven. Tot de komst van Java moest een programmeur de keus maken voor welk besturingssysteem hij een programma wilde schrijven, zoals bijvoorbeeld het Unix-, Macintosh- of Windows-platform. De keus wordt veelal bepaald door het marktaandeel dat een besturingssysteem heeft, omdat er dan meer van kan worden verkocht. Vandaar dat er meer software-producten verschijnen voor Windows dan voor de Apple Macintosh of Unix. Wil een bedrijf voor verschillende platformen schrijven dan schieten de ontwikkelkosten omhoog, omdat alle programma?s moeten worden herschreven. Grote bedrijven als Adobe, Quark, Microsoft en Corel hebben daar geld genoeg voor, kleinere bedrijven zien er vaak vanaf omdat de kosten hoger zijn dan de baten. Met de introductie van Java kan de toekomst er een stuk rooskleuriger uit komen te zien. Een in Java geschreven programma draait namelijk op iedere computer, ongeacht welk besturingssysteem erop staat. Daarvoor maakt het gebruik van een ?Virtual Machine?, een soort vertaalomgeving waarbinnen broncode wordt omgezet naar een specifieke computertaal. Maar daarover later meer. Het enthousiasme na de introductie was zeer groot. Bedrijven kunnen met Java kosten besparen en een veel grotere markt bereiken. Dit wil niet zeggen dat alle programmeurs nu in Java programmeren, al was het alleen maar omdat de programmeurs deze taal eerst moeten leren. Daarnaast is Java nog steeds in ontwikkeling, er is bijna geen dag dat er niets aan de taal verandert. De taal is nog lang niet volwassen en er zijn nog heel wat zaken te verbeteren. De minpunten kwamen vooral aan het licht toen Corel de WordPerfect Suite in Java ging schrijven. In de eerste bèta?s was het niet mogelijk een bestand te printen of op te slaan op de harde schijf. Simpelweg omdat de beveiliging van Java dat niet toeliet. OakDe geschiedenis van Java is er een van ups en downs. Het begon allemaal in 1990, toen Patrick Naughton, een programmeur bij Sun Microsystems, startte met het 'Green Project'. Dit was gericht op het ontwikkelen van software voor draagbare apparatuur, omdat hierin de toekomst van Sun zou liggen. De software zou dan wel onafhankelijk moeten zijn van de apparatuur waarop ze draaide. Men begon een programma in C++ te schrijven, maar al snel werd duidelijk dat deze taal te complex was. Topprogrammeur James Gosling stelde voor C++ te strippen tot een soort 'C++ minus minus'. Onbedoeld schreven ze bij Sun een nieuwe taal die 'Oak' werd genoemd, naar de boom die voor het kantoor van Gosling stond.Het probleem was dat deze naam al als merk was gedeponeerd. De nieuwe naam werd Java, zoals bekend vernoemd naar de koffie die de programmeurs dronken. Het idee achter de taal was dat deze zou moeten kunnen communiceren met verschillende processoren. Als eerste doel voor de taal werd het maken van interactieve televisie gezien. Het Green Project slaagde niet omdat de markt er geen belangstelling voor had, en Java leek een langzame dood te sterven. SunGelukkig voor Sun werd het World Wide Web vrij snel na de beëindiging van het Green Project enorm populair onder de computergebruikers. Het zou uiteindelijk de redding betekenen voor de programmeertaal Java. In 1993 ontwikkelde Marc Andreessen, nu president van Netscape, voor Sun als eerste een programma om te kunnen bladeren op het World Wide Web. De statische pagina's die het World Wide Web in het begin voortbracht waren een doorn in het oog van veel ontwikkelaars en Internet-liefhebbers. Ook bij Sun werd er naar oplossingen gezocht om de pagina's meer dynamiek te geven. Gosling kwam op het idee om de programmeertaal Java hiervoor te gebruiken: die is klein, robuust, platform-onafhankelijk en object-georiënteerd. Perfect geschikt dus voor het World Wide Web.De eerste browser die werd geschreven in Java was WebRunner, de voorloper van de HotJava-browser. Het was niet zozeer de browser als wel de potentiële kracht van Java die zorgde voor een hele opleving binnen Sun. Men realiseerde zich zeer snel dat er een goudmijntje was gevonden, dat alleen nog moest worden geëxploiteerd. Bij Sun rekenden ze zich rijk. Als dit zou lukken dan konden er eindelijk programma's geschreven worden die onafhankelijk zijn van hard- en software. En - misschien nóg wel belangrijker - de groeiende macht van Microsoft zou hiermee kunnen worden doorbroken. Razendsnel werden Java-interpreters ontworpen die voor de communicatie tussen de Java-taal en de verschillende computers moesten zorgen. Daarnaast werden er miljoenen gestopt in een reclamecampagne, om de hele wereld ervan te overtuigen dat Java de programmeertaal van de toekomst zou worden. De strategie slaagde. In no time was de nieuwe taal wereldwijd bekend. Iedereen zag er de voordelen van en steun leek dan ook verzekerd. Nadat ook onafhankelijke analisten en programmeurs waren overtuigd reisde directeur McNealy de wereld rond om licenties af te sluiten voor Java. Dat lukte hem aardig. Vooral de concurrenten van Microsoft waren er als de kippen bij. Eindelijk hadden zij met elkaar een dure troef in handen, die uitgespeeld kon worden tegen Microsoft. Java werkt immers platform-onafhankelijk, is kleiner in omvang en zeer éénvoudig te distribueren. Waarom zouden mensen op den duur nog kostbare office pakketten aanschaffen waarvan zij maar twintig procent gebruiken? Als de concurrenten de handen ineen zouden slaan was Microsoft misschien toch nog van de troon te stoten. MicrosoftDe theorie over Java mag dan mooi zijn, in de praktijk werkt het toch iets anders. Om Microsoft te onttronen moeten eerst de miljoenen Windows-gebruikers worden overtuigd van het gemak van Java. Maar hoe bereik je deze mensen als er, behalve kleine applets voor het World Wide Web, nog geen bruikbare en goed draaiende applicaties zijn die je gelijk kunnen bevestigen? En belangrijker nog, hoe zorg je ervoor dat iedere Windows-machine een compiler krijgt om Java te kunnen interpreteren? In de toekomst zal er wel hardware komen die Java ondersteunt, maar vooralsnog heeft deze nieuwe programmeertaal een besturingssysteem nodig om te kunnen draaien. En met het gegeven dat het leeuwendeel van deze computers draait op een of andere versie van Windows hebben Sun en consorten nog heel wat werk te verzetten.Het is dan ook meer dan begrijpelijk dat Sun heel blij was toen ook Microsoft een licentie afsloot om Java te kunnen gebruiken. Eensklaps kreeg iedere computer waarop de Microsoft Internet Explorer was geïnstalleerd een Java-compiler, omdat deze geïntegreerd is met de browser. De populariteit van Java steeg enorm, gezien het aantal applets dat werd gedownload van de officiële Java-sites. Inmiddels geven de mensen bij Sun toe dat de levensvatbaarheid van Java vooral is te danken aan het feit dat Microsoft deze taal ondersteunt. Open standaardSun doet het graag voorkomen alsof Java een open standaard is, waarvan iedereen kan profiteren. Misschien is dat wel zo, maar Sun houdt zelf de touwtjes strak in handen. Zo mag niemand iets aan de standaarden van Java veranderen of de naam Java gebruiken. Vandaar dat er nu producten verschijnen met namen als Jbuilder, van Borland, en J++, van Microsoft. Kort nadat Microsoft een licentie had afgesloten werd duidelijk wat men van plan was met Java. Microsoft vindt dat Java teveel beperkingen heeft. Zo maakt Java geen gebruik van de specifieke eigenschappen die het Windows besturingssysteem biedt. Java kan dat niet, omdat dat ten koste zou gaan van de uitwisselbaarheid ten opzichte van de verschillende systemen. Microsoft geeft daar niet zoveel om, omdat men in de luxe positie verkeert dat op het merendeel van de computers Windows is geïnstalleerd. Microsoft ging aan de slag en kwam met de componententaal ActiveX, die weliswaar gebruik maakt van Java-eigenschappen, maar zeker niet hetzelfde is als Java. ActiveX maakt gebruik van Microsoft's OLE- en OCX-componenten en werkt dus vooral goed op een Windows-besturingssysteem. Daardoor kan ActiveX dan ook gebruik maken van de specifieke eigenschappen van dat systeem. Het resultaat is dat ActiveX-componenten veel sneller en krachtiger zijn dan Java.Sun gaf weliswaar toe dat dit waar is, maar voerde tegelijkertijd aan dat ActiveX ook z'n zwakke kanten heeft. Omdat ActiveX nauw verbonden is met het besturingssysteem en toestaat dat binaire code wordt uitgevoerd op de lokale computer, is er een gat in het beveiligingssysteem. Microsoft probeert er alles aan te doen om dit lek te dichten, maar is daar tot op heden nog niet in geslaagd. Om verwarring te voorkomen heeft Sun het initiatief genomen voor de kwalificatie 100% pure Java. Dit gedeponeerde handelsmerk geeft aan dat een programma voldoet aan de originele Java-specificaties en dus geheel platform-onafhankelijk is. Sun hoopt hiermee Microsoft de wind uit de zeilen te nemen, dat Java zo wil aanpassen dat er meer uit het Windows-platform wordt gehaald. Wat is Java nu precies?Java is een object-georiënteerde, geïnterpreteerde programmeertaal, die veel weg heeft van C++. Sommigen menen dat Java een eenvoudiger versie is van C++, zij het met een aantal essentiële verschillen. Niets is minder waar. Misschien zien C++ en Java er vanuit een 'helikopter-view' hetzelfde uit, maar dan gaat het vooral om de basis-syntax. Eenmaal op de grond aangekomen blijken er meer verschillen dan overeenkomsten te zijn. Java mag zeker niet worden gezien als familie van C++, maar lijkt meer op programma?s als Smalltalk en Lisp. Het belangrijkste verschil tussen de twee talen is dat C++ niet platform-onafhankelijk is en Java wel.Het traject van een gecompileerde taal als C++ ziet er dan ook anders uit dan dat van Java. Voordat er kan worden gestart met het schrijven van een computerprogramma in een gecompileerde taal als C++ moet er een keuze worden gemaakt voor een besturingssysteem. Dit is van belang om tijdens het schrijven van het programma rekening te kunnen houden met de specifieke kenmerken van zo?n systeem. Hierna kunnen er regels met leesbare code worden geschreven. De code bepaalt wat het programma moet doen: er kunnen functies worden aangeroepen, knoppen en balken gedefinieerd en wiskundige berekeningen worden gemaakt. De samengevoegde code vormt het uiteindelijke programma. Om dat te kunnen gebruiken moet de leesbare code eerst nog wel worden omgezet naar een specifieke computertaal. Dat gebeurt door een compiler. Vroeger duurde het bij grote programma?s uren voordat de compiler zijn werk had gedaan. Het enige dat overbleef was meestal een EXE- of COM-bestand, dat vervolgens kon worden gedraaid op de daarvoor bestemde computer. Het is bij een groot programma ook mogelijk om de code te verdelen in kleinere stukjes. Deze onderdeeltjes kunnen dan bijvoorbeeld specifieke informatie aanroepen voor de videokaart, het beeldscherm of de printer. De onderdelen worden in zo'n geval niet weggeschreven naar een uitvoerbaar bestand, maar naar een DLL-file. Er moet er dan nog wel een extra programma worden geschreven om deze DLL-bestanden te kunnen aanroepen. Het voordeel van deze constructie is dat de afzonderlijke DLL?s kunnen worden gedeeld en vernieuwd, als dat nodig is. Meestal blijkt na het schrijven van een programma dat niet alles goed werkt. De meest gebruikte oplossing is dan de originele broncode te veranderen en vervolgens alles weer te compileren. Het voordeel van een taal die wordt gecompileerd naar machinecode is dat deze gebruik kan maken van de specifieke kenmerken van het systeem en daardoor beter en sneller is. JavaBij het programmeren in Java hoeft er niet vooraf een keus te worden gemaakt voor een bepaald besturingssysteem. Evenals bij gecompileerde talen moet er code worden geschreven. Deze code wordt vervolgens gecompileerd door een compiler, die over het algemeen in Java is geschreven en voor ieder besturingssysteem beschikbaar is. Het grote verschil met C++ is dat de compiler de code niet compileert naar een specifieke computertaal, maar naar een 'tussentaal', ook wel J-code genoemd, die niet leesbaar is.Na het compileren blijft er een CLASS-bestand over dat door de Java run-time interpreter wordt omgezet naar specifieke computertaal, om het programma uit te kunnen voeren. Het zijn ook deze CLASS-bestanden die we aanroepen in onze webpagina?s. De run-time interpreter maakt deel uit van de Java Virtual Machine, waartoe ook de just-in-time compiler kan behoren. De Java Virtual Machine (VM) is een omgeving waarin van alles gebeurt en is meestal geschreven in het veel snellere C++, om goed met het systeem te kunnen communiceren. De VM is klein, voor ieder platform beschikbaar, draait als apart programma of wordt geïntegreerd in andere software, zoals een browser. Als eerste wordt een CLASS-bestand geladen in de VM door de byte-code verifier. Deze controleert of de geschreven code aan de Java-specificaties voldoet. Is dit het geval dan kan de code worden doorgegeven aan de Class Loader, die alle classes controleert waarnaar wordt verwezen. Is de code veilig bevonden dan kan deze door de byte-code interpreter worden geïnterpreteerd. Voordat de code kan worden uitgevoerd moet deze nog wel door de Java class libraries heen. Dit zijn standaardbibliotheken met gegevens over de manier hoe Java moet omgaan met een bepaalde interface. De neutrale code is nu omgezet naar de specifieke computertaal van het systeem waarop het moet draaien. Een Java CLASS-bestand kan dus op iedere computer worden gedraaid. Vandaar de reclamekreet: "Write once, run anywhere". Het grootste probleem van de standaard-interpreters is dat ze zeer langzaam zijn. Java-interpreters hebben het voordeel dat ze te maken hebben met gecompileerde code, waardoor Java een snelle geïnterpreteerde taal is. Voor kleine webapplicaties (applets) is Java toereikend, maar op het moment dat we te maken krijgen met grotere programma?s wordt het anders. Daarom zijn veel fabrikanten begonnen met het ontwerpen van just-in-time compilers. Deze slaan de Java Virtual Machine over of worden er in geïntegreerd (de nieuwere versies van de VM?s). De just-in-time compilers converteren de source code on the fly naar de eigenlijke machinetaal. Ze zorgen voor een enorme snelheidsverbetering, doordat de geconverteerde code tijdens de uitvoering van het programma wordt opgeslagen in het geheugen. ToekomstZoals gezegd werd Java opmerkelijk snel geaccepteerd in de computerwereld. De concurrenten van Microsoft zagen het als een troef om onder het heersende juk van Microsoft uit te komen. Het valt niet te verwachten dat het zover zal komen. Vooralsnog heeft Java een besturingssysteem nodig om te kunnen draaien. Maar ook als er eenmaal computers verschijnen met hardware voor Java is het zeer de vraag of de consument zal overstappen. Wat die consument vooral wil is snelheid, en dat biedt Java niet, omdat het niet de specifieke eigenschappen van een besturingssysteem aanspreekt. In de toekomst zal dat misschien wel enigszins veranderen, maar dan nog zal nooit de snelheid worden gehaald van programma's die in native code zijn geschreven.Java zal Windows niet verdringen, maar het zal als een zoveelste besturingssysteem naast Windows verkrijgbaar zijn. In aantallen zal Java Windows op den duur overtreffen, omdat de Java Virtual Machine op alle platformen kan worden geïnstalleerd. Java is een schitterende uitvinding voor het World Wide Web en kleine applicaties. Hierdoor kan het Web eindelijk een dynamisch medium worden, waarvan iedereen kan profiteren. De Java-revolutie is voorbij, en voorlopig zijn er alleen maar winnaars. De hoofdrolspelers Sun en Microsoft verdienen goed aan Java, door programma?s te ontwikkelen en nieuwe markten aan te boren. Grote ondernemingen als IBM, Oracle en Netscape gebruiken Java om hun Netwerk Computer aan de man te brengen. De belangrijkste winnaar is natuurlijk de consument, die uiteindelijk weer kan kiezen tussen verschillende besturingssystemen, tussen snelheid of uitwisselbaarheid en tussen grote officepakketten of kleine componenten. En om de consument is het tenslotte toch allemaal te doen, nietwaar? |
|||||
| Laatst aangepast op dinsdag, 01 september 2009 13:20 |
