Inhoud leereenheid 5
Visueel programmeren met Java
Java als fenomeen Introductie
205
Leerkern 208 1 2 3 4 5 6 7
Ontstaansgeschiedenis van Java 208 De ontwerpdoelen van Java 212 Java en het internet 216 Applets, applets en nog eens applets! 219 Java in het bedrijfsleven 227 Ontwikkelomgevingen voor Java 229 Meer informatie over Java 232
Samenvatting 235 Zelftoets 236 Terugkoppeling –
204
236
Uitwerking van de zelftoets
236
Leereenheid 5
Java als fenomeen
Leereenheid 5
Java als fenomeen
INTRODUCTIE
In de eerste leereenheden van dit blok hebt u kennis gemaakt met een programmeeromgeving waarmee we Java-programma’s kunnen ontwikkelen en hebt u geleerd om zelf eenvoudige Java-applets te maken, gebruikmakend van bestaande Java-klassen. Als afsluiting van dit inleidende blok willen we u laten kennismaken met Java als verschijnsel en u proberen duidelijk te maken waarom Java tot zo’n enorme hype heeft kunnen leiden binnen de wereld van de informatieen communicatietechnologie. Vanaf het moment dat Java in mei ’95 officieel door Sun Microsystems werd aangekondigd, hebben de vaktijdschriften en zelfs vele dagbladen tal van artikelen gewijd aan Java en de invloed van Java op informatica in het algemeen en op internet in het bijzonder. Leestekst
Zie als voorbeeld het artikel uit Computable van 14 maart ’97 van een van de goeroes uit de informatica Martin Healey op de volgende pagina. Lees het artikel alleen globaal door, u wordt niet geacht het volledig te begrijpen.
Was de Java-hype de eerste jaren vooral het gevolg van de mogelijkheden die Java-applets boden, daarna is het succes uitgebouwd dankzij de mogelijkheden die Java biedt voor het maken van complete gedistribueerde systemen, waarbij niet alleen Java aan de client-kant van belang is, maar vooral ook de server-kant belangrijk is. Java is daarmee veel meer geworden dan een programmeertaal, veelal wordt dan ook gesproken over Java als platform. In deze leereenheid proberen we u een idee te geven hoe Java is ontstaan (paragraaf 1), wat de ontwerpdoelen zijn die aan Java ten grondslag hebben gelegen (paragraaf 2), hoe de relatie ligt tussen Java en het internet (paragraaf 3). We zullen u laten kennismaken met een aantal applets zoals die op het www (world wide web) inmiddels in grote aantallen worden getoond (paragraaf 4). Ook zullen we in paragraaf 5 laten zien dat Java zich niet alleen richt op applets, maar dat het een volwaardige programmeertaal is, waarin ook tal van op zichzelf staande toepassingen (applicaties) zijn ontwikkeld. We proberen een globaal overzicht te bieden van het aanbod aan Javaontwikkelomgevingen (paragraaf 6). We zullen daarbij wat extra aandacht besteden aan de door Sun beschikbaar gestelde Java 2 software development kit (SDK), een relatief eenvoudige programmeeromgeving die ten grondslag ligt aan geavanceerde omgevingen zoals JBuilder. In de laatste paragraaf geven we nog wat verwijzingen naar andere informatiebronnen over Java, zoals boeken, tijdschriften en nieuwsgroepen.
205
Visueel programmeren met Java
COLUMN Martin Healey
Java: een bevrijding
E
r is geen twijfel mogelijk: de introductie van Java is niets minder dan een revolutie. De meeste startende bedrijven in Californië en elders hebben de PC de rug toegekeerd en richten zich nu volledig op Java-applicaties. Dit zal de komende jaren een enorme impact op de ITindustrie hebben. De redenen voor het succes van Java zijn ingewikkeld. De taal werd in eerste instantie gebruikt voor het ontwikkelen van objecten die dynamisch in een webbrowser konden worden geladen, zodat de terminal waarop de browser draaide, ze kon uitvoeren. Men zag dit als een grote verbetering ten opzichte van de veel eenvoudiger sequentiële scripts die aanvankelijk werden gebruikt om invulformulieren en dergelijke in browsers te implementeren. Java is echter meer. Java als programmeertaal is object-georiënteerd; het is niet de eerste object-georiënteerde taal (denk aan Smalltalk en Eiffel) maar misschien wel de laatste. De syntax van Java is afgeleid van C++, in tegenstelling tot Smalltalk, dat nergens van afgeleid is. Java is daarom niet zo ‘puur’ als Smalltalk maar heeft een veel groter commercieel draagvlak. Grof gezegd is Java een soort C++, maar dan zonder C. Dat is een enorme stap voorwaarts. C++ was een object-georiënteerde uitbreiding van C, en bevat daarom veel traditionele, procedurele en andere eigenschappen van systeemtalen; C had nooit voor applicaties gebruikt mogen worden. Java heeft alles in zich om een echte, object-georiënteerde standaardtaal te worden. De Java-klassebibliotheken zijn niet compatibel met C++-bibliotheken. De voortschrijdende ontwikkeling van de taal zal zich richten op de klassebibliotheken, maar ook op uitbreidingen van de taal zelf.
D
e huidige opwinding rond Java draait om het aanmaken van actieve objecten die kunnen samenwerken met Internet-tools. In deze omgeving worden Java-applicaties gecompileerd tot standaard bytecode formaat en gekoppeld aan Html-pagina’s op web-servers. Deze objecten worden geïnterpreteerd in de browser. De web-pagina’s worden pas van de server geladen als ze nodig zijn. Momenteel werkt men aan de ontwikkeling van compilers die de bytecode à la minute vertalen en van cacheing, een techniek om de performance te verbeteren. De belangrijkste eigenschap van de Java-objecten is dat ze onafhankelijk zijn van de processor waar zij op draaien, zodat Java-applicaties op een breed scala van platforms kunnen worden geïmplementeerd. De industrie wordt hierdoor bevrijd van het juk van Microsoft en Intel. Het zijn natuurlijk nog steeds opties, maar de wurggreep is gebroken, waardoor de concurrentie eindelijk kan losbarsten. Dit zal weer leiden tot een toename van kwaliteit, value for money èn
206
functionaliteit. Naast de technische kwaliteiten is dit de ware reden voor het succes van Java; het is een kans voor de volgende generatie softwarehuizen om marktaandeel van Microsoft af te nemen. Daarom zijn IBM, Sun en Oracle de applicatie-ontwikkelaar zo behulpzaam. Tenminste, zolang hij voor Java kiest en Active X maar links laat liggen. Commerciële kansen wegen nu eenmaal zwaarder dan gelijk hebben. In de Internet-wereld worden de klassebibliotheken van Java bepaald door de browsers; zij concentreren zich op gui-interfacing, simpele privé-bestandjes en toegang tot het Tcp/ip-netwerk. Andere standaardfuncties worden daaraan toegevoegd, zoals Jdbc – voor de toegang tot SQLdatabases, vergelijkbaar met Odbc – en samenwerking met het gedistribueerde object-model, Corba, door middel van Joe.
O
mdat Java-objecten dynamisch worden geladen, bevinden sommige objecten zich niet op applicatieniveau, maar op systeemniveau. Een object waarmee remote procedure calls kunnen worden uitgevoerd voor Tuxedo- of Cics-transacties, zou de deur openen voor Java en NC’s in transactiesystemen. Dat zal ongetwijfeld gebeuren. Alleen Microsoft zal met Active X proberen om Java aan PC-applicaties te koppelen, waardoor het niet op andere platformen zal draaien. Versie 4 van OS/2 heeft een geïntegreerde Java runtime-module. Een browser, Netscape Navigator, is leverbaar als optie. Maar als alle nieuwe ontwikkelaars met Java werken, dan zal OS/2 alle nieuwe applicaties kunnen draaien, terwijl Windows zijn belangrijkste voordeel kwijtraakt! Het is toch een vreemde wereld. Java moet ook een algemene ontwikkeltool worden die C++ de komende twee jaar gaat vervangen. De tijdsschaal is afhankelijk van de beschikbaarheid van volwassen programmeeromgevingen en Er is geen twijfel over klassebibliotheken. Dit gebeurt vrij snel mogelijk: de Introductie voor de huidige pc-sector vanwege alle van Java is niets gui-ontwikkelomgevingen die reeds minder dan een verkrijgbaar zijn voor C++, Smalltalk, revolutie. Visualbasic en dergelijke. Deze systemen kunnen gebruik maken van de mechanismen voor het afhandelen van schermen en gebeurtenissen en bieden een omgeving waarin de klassebibliotheken ongestoord verder kunnen rijpen. Sun, Microsoft, Borland, Symantec en IBM leveren momenteel Java-ontwikkelomgevingen. Zij vervangen de huidige compilers door Java-compilers (en debuggers), maar behouden de omgeving die de programmeur zo goed kent, inclusief het beheer van de broncode.
Leereenheid 5
Java als fenomeen
LEERDOELEN
Na het bestuderen van deze leereenheid wordt verwacht dat u − een goed beeld hebt gekregen hoe Java is ontstaan en dit in eigen woorden kort kunt samenvatten − een goed beeld hebt gekregen van wat de relatie is tussen Java en het internet, dat u applets kunt tonen in uw eigen webbrowser en dat u kunt aangeven waarom beveiligingscontrole van applets zo belangrijk is − een goed beeld hebt gekregen van de mogelijkheden die Java biedt voor het bouwen van professionele toepassingen en in het bijzonder voor gedistribueerde toepassingen − een goed beeld hebt gekregen van wat de Sun- en JavaWorldpagina’s aan informatie over Java te bieden hebben − op de websites van Sun, JARS en Java Boutique een aantal applets hebt bekeken − een Java-applet waarvan de broncode – bijvoorbeeld op het www of als bouwsteen op Studienet – beschikbaar is, in kunt passen in een JBuilder-project en daar kunt verwerken − van de gegeven ontwerpdoelen van Java er tenminste acht kunt noemen en van elk van de ontwerpdoelen uit kunt leggen waarom dit van belang is − een goed beeld hebt gekregen wat voor andere nieuwsbronnen er zoal over Java bestaan, zoals boeken, tijdschriften en nieuwsgroepen − kunt uitleggen wat de volgende begrippen betekenen en kunt aangeven wat hun rol is binnen Java: bytecode, virtuele machine, Java-enabled browser, Java-compiler, Java-interpreter, JIT-compiler, html, server side Java, garbage collection.
Waarschuwing!
Studeeraanwijzingen Deze leereenheid heeft een duidelijk andere functie dan de andere leereenheden uit deze cursus. Het is de bedoeling dat u vertrouwd raakt met Java als fenomeen en dat u allerlei begrippen die met Java te maken hebben, beter zult kunnen plaatsen. Ook wordt nadrukkelijk van u verwacht dat u met een browser die geschikt is voor Java, enige tijd rondsnuffelt op het internet. Als u zelf niet beschikt over een internetaansluiting en een voor Java geschikte browser, raden wij u ten zeerste aan er elders een op te zoeken. Op elk studiecentrum van de Open Universiteit zijn voorzieningen voor het surfen op internet. Lukt dit niet, dan kunt u deze leereenheid ook gewoon doorlezen en daarna verder gaan met leereenheid 6. U mist dan wel een inzichtgevend en motiverend deel van de cursus. Het is niet onmogelijk dat u bij het bezoeken van de in deze leereenheid genoemde webpagina’s zo gefascineerd raakt door Java en alles wat daar omheen gebeurt, dat u veel meer wilt weten dan voor deze cursus noodzakelijk is. Ook is het niet ondenkbaar dat u het leuk vindt om uren achter elkaar allerlei Java-applets uit te proberen en wellicht al wilt begrijpen hoe de Java-code van deze applets werkt. Overigens kan – bij een trage verbinding – ook het wachten op een webpagina of de erin draaiende applet veel tijd kosten! We willen u erop wijzen dat dit alles niet echt noodzakelijk is voor het doornemen van de rest van de cursus. Wij gaan daarom uit van ongeveer 3-4 uur internetgebruik. Het geven van allerlei internetadressen in deze leereenheid moet u dan ook meer zien als een mogelijkheid om er gebruik van te maken, dan als een verplichting om dit te doen. Als u wat
207
Visueel programmeren met Java
beter wilt weten wat nu wel en niet van u verwacht wordt, bekijk dan nog eens de hiervoor geformuleerde leerdoelen; een aantal hiervan zijn tamelijk expliciet gesteld: ‘kunt’, ‘kunt uitleggen wat’, een aantal zijn bewust wat vager geformuleerd: ‘een goed beeld hebt gekregen van’. Leereenheid 5 ook op internet Onthoud dat links naar internetsites kunnen verouderen!
Studielast
Omdat deze leereenheid een groot aantal webadressen bevat, hebben we de volledige leereenheid ook in pdf-formaat op het web gezet (www.ou.nl/info-alg-java/cursussen/vpmj/le5). De juistheid van de hyperlinks uit de schriftelijke versie is minder goed te garanderen, gebruik daarom de linkspagina van de cursussite op Studienet. Als u zich weet te beperken tot 3-4 uur internetgebruik dan bedraagt de studielast van deze leereenheid circa 6 uur.
LEERKERN 1 Aanleiding tot het Java-project
Green team
208
Ontstaansgeschiedenis van Java
In 1990 besloot een van de software engineers van Sun Microsystems, Patrick Naughton, dat hij weg wilde bij Sun om een andere baan te accepteren bij NeXT. De reden hiervoor was dat hij zich vastgelopen voelde in een project dat zo fraai begonnen was, het NeWS-systeem (Networked/extensible Window system) onder leiding van de briljante en inspirerende James Gosling. Om dit NeWS-systeem te kunnen onderhouden, moest op een gegeven moment door Naughton’s ‘Windows group’ van 112 medewerkers ondersteuning worden geboden voor drie toolkits, drie Windowsystemen, drie hardwarearchitecturen, twee gebruikersinterfaces en twee versies van een besturingssysteem. Een constatering als ‘er zit een fout in de scrollbarcode’ kon in feite te maken hebben met elk van de 108 verschillende combinaties. En dat was niet meer leuk. Toen hij de hoogste baas bij Sun, Scott McNealy, vertelde van zijn plannen om weg te gaan, vroeg deze Naughton om een lijst te maken van zijn klachten en een oplossing voor te stellen, ‘as if you were God’. Hij ging in op dit verzoek en hij spaarde daarbij niets of niemand: hij stelde voor het NeWS-project te schrappen en suggereerde dat de meeste van de ruim 100 medewerkers van de Window system group niet nodig zouden zijn als Sun in staat zou zijn om orde te scheppen in de technische chaos die was ontstaan, waarbij alles met alles moest kunnen worden gecombineerd. Hij mailde zijn commentaar naar McNealy en verwachtte dat het wel niet veel zou uithalen en wat zou het ook, hij ging immers toch weg. Het tegendeel bleek echter het geval. Zijn commentaar werd heen en weer gemaild tussen de toptechnici van Sun en Naughton kreeg veel steun voor zijn ideeën, zelfs van zijn mentor James Gosling en van Bill Joy, een van de oprichters van Sun, die beiden nog wat olie op het vuur gooiden door de problematiek in de top van de organisatie ter discussie te stellen. Het resultaat hiervan was dat Sun Naughton een aanbod deed om deel uit te maken van een klein team, the Green team, van de beste software engineers waaronder Gosling en Joy, met een heel open opdracht: ‘make something cool’.
Leereenheid 5
Oak
Het team hield zich in de eerste periode vooral bezig met de toekomstige technologische mogelijkheden van consumentenelektronica, zoals (de opvolgers van) Nintendo Game Boys (mini spelcomputers), set-top boxes voor tv’s (kastjes die ‘video on demand’ mogelijk moesten gaan maken) en videorecorders. Wat daarbij opviel was dat al deze apparaten gebruik maakten van verschillende processoren, met als gevolg dat als fabrikanten bepaalde functies wilden toevoegen aan een tv of videorecorder, ze direct beperkt werden door de specifieke hardware en ingebakken programmatuur van het apparaat. Verder was er het probleem van de beperkte geheugens van die apparaten. Dit alles leidde tot een frisse, nieuwe benadering die een belangrijke rol zou moeten gaan spelen in dit marktsegment: hardware waarvan de functionaliteit van buiten af aangepast of uitgebreid zou kunnen worden door er nieuwe software aan toe te voegen. Het eerste product van het team was een nieuwe, objectgeoriënteerde programmeertaal, door Gosling Oak genoemd, naar de boom voor het raam van zijn werkkamer. Enigszins gebaseerd op C++ was de taal uitgekleed tot een minimum vanwege de beperkte geheugenruimte die beschikbaar zou zijn op de chips van de apparaten die het team voor ogen stonden. Tegelijkertijd werd flink wat onderzoek gedaan naar hoe en waarom mensen werden aangetrokken tot bepaalde videospelletjes en hoe de interactie ging met dergelijke apparatuur.
FIGUUR 5.1
*7
Duke
First Person
Java als fenomeen
James Gosling, de architect van Java
Nadat de onderzoekgegevens waren verzameld, ontwikkelde het team een klein, op afstand te besturen apparaatje, *7 genaamd, met een kleine visuele interface. Het apparaat toonde een bewegend figuurtje, Duke genaamd, dat de gebruikers hielp door uit te leggen hoe het apparaat te gebruiken. Essentieel aan het ontwerp van *7 was de overtuiging dat de interface ervan uitdagend en leuk moest zijn en dat het apparaat een klein privéapparaat diende te zijn. Duke, een creatie van Joe Palrang, zou de mascotte worden van Java. Sun besloot het inmiddels sterk uitgebreide Green team om te vormen tot een afzonderlijk bedrijf, genaamd First Person. Het bedrijf had een goed concept maar nog geen idee wat ze er precies mee moesten doen.
209
Visueel programmeren met Java
Uiteindelijk besloot het bedrijf zich te gaan richten op de interactieve televisiemarkt die zich aan het ontwikkelen was. Een overeenkomst met Time Warner om set-top boxes voor televisies te ontwikkelen, ging op het laatste moment niet door. Ook een andere overeenkomst met het bedrijf 3DO ging niet door toen het de exclusieve rechten voor deze nieuwe technologie wilde claimen. Het maken van set-top boxes voor ‘video on demand’ leek de mist in te gaan. Mosaic en het world wide web
De kansen van het bedrijf keerden toen in 1993 door de NCSA (National Center for Supercomputing Applications) het browserprogramma Mosaic werd geïntroduceerd, waarmee het world wide web werd geboren. Er volgden al snel meer activiteiten op het gebied van webtechnologie en het internet, tot dat moment het domein van voornamelijk wetenschappers, werd plotseling enorm populair bij het grote publiek. Begin 1994 besloot het First Person team om zijn beperkte menskracht te gaan richten op een softwaresysteem voor on-line multimedia. Bill Joy stelde verder voor om de taal Oak te positioneren als een taal voor het internet en om de taal op het internet vrij te geven. Daarmee werd plotseling de taal zelf het product in plaats van het apparaat waarop het had moeten draaien.
FIGUUR 5.2
Java
James Gosling, Arthur van Hoff en Kim Polese (voormalig product manager van het Java-team)
De Nederlander Arthur van Hoff herschreef de Oak-compiler geheel in de taal Oak zelf, in plaats van in C. Tegelijkertijd bouwden Patrick Naughton en Jonathan Payne een op Oak gebaseerde browser, genaamd Webrunner. De eerste applet – Duke zwaaiend naar zijn ouders – was geboren. Het management van Sun ondersteunde het plan om de taal vrij te geven, maar pas nadat de taal een andere naam had gekregen: Java. Er is veel gespeculeerd over de herkomst van deze naam. Na een moeizame discussiebijeenkomst met het team over een nieuwe, meer marktgerichte naam, werd de naam Java verzonnen tijdens een bezoek aan de plaatselijke koffiebar met lekkere Java-koffie.
210
Leereenheid 5
Java als fenomeen
De veronderstelling dat Java een naam zou zijn met goede marketingmogelijkheden, is inmiddels waar gebleken, gezien de grote belangstelling voor het bijbehorende icoon – ook als bewegende applet – en ook de behoefte om bij verwante producten te verwijzen naar koffie: Hot Java, JavaBeans, Visual Café. Java is dus geen afkorting, zoals door sommigen wordt verondersteld: ‘Just another vague acronym’.
FIGUUR 5.3
Hot Java, Netscape Navigator en Internet Explorer
Java en koffie
Het enige wat toen nog nodig was, was een manier om applets in browsers te laten draaien. Dat lukte wel in de eigen, onbekende browser die inmiddels Hot Java was genoemd, maar de grote doorbraak voor Java ontstond toen Netscape besloot Java te ondersteunen met zijn Navigator-browsers. Geruime tijd later volgde ook Microsoft met zijn Internet Explorer en daarmee was Java als dé taal voor het internet niet meer weg te denken.
FIGUUR 5.4
De Hot Java Browser (Sun) werd geheel in Java geschreven. 211
Visueel programmeren met Java
Referenties en verwant leesmateriaal: – Jason English, It all started with a blunt letter http://java.sun.com/java2/whatis/1996/storyofjava.html − David Bank, The Java Saga http://www.wired.com/wired/archive/3.12/java.saga.html − Michael O’Connell, Java: The inside story, http://sunsite.uakom.sk/ sunworldonline/swol-07-1995/swol-07-java.html – Jon Byous, Java technology: the early years http://java.sun.com/features/1998/05/birthday.html − Patrick Naughton, The Java Handbook, Epilogue: The Long Strange Trip to Java, McGraw-Hill, 391-409. 2
Sun-documenten
Ontwerpdoelen van Java als programmeertaal
Ontwerpdoelen van Java
De taal Java is gemaakt met expliciet gedefinieerde ontwerpdoelen (design goals). Deze zijn indertijd vastgelegd in een aantal door Sun publiek gemaakte documenten op het www, vrij uitgebreid (85 blz.) in: – James Gosling en Henry McGilton, The Java Language Environment: A White Paper, http://java.sun.com/docs/white/langenv/; mei ’96 en op een kortere (8 blz.) en populaire manier in: – The Java Language: An Overview, http://java.sun.com/docs/ overviews/java/java-overview-1.html. Wie meer informatie zoekt over Java in de vorm van deze zogeheten ‘white papers’, kan rondkijken op: http://java.sun.com/docs/white/. We zullen deze ontwerpdoelen hier ook opsommen en elk van een korte toelichting voorzien. We wijzen er met nadruk op dat het in deze paragraaf vooral gaat om de ontwerpdoelen van Java als programmeertaal. Java als platform – dus met alle bijkomende technologie en bijbehorende API ’s – heeft een veel omvattender stel ontwerpdoelen, waarop we hier niet ingaan. Een aardig overzicht hiervan vindt u op http://java.sun.com/java2/whatis/; zie ook figuur 5.5.
FIGUUR 5.5 Studeeraanwijzing
212
Informatie over het Java-platform vindt u op het web.
Het is bij het volgende overzicht niet te voorkomen zo nu en dan over de rand van deze cursus heen te kijken; we hebben echter geprobeerd termen die u nog niet kent, zoveel mogelijk te vermijden of kort uit te leggen. In een aantal gevallen zullen we volstaan met vooruitverwijzingen naar leereenheden uit de cursus waarin het betreffende onderwerp wordt uitgelegd. Het is zeker niet nodig – en mogelijk – alle
Leereenheid 5
Java als fenomeen
aspecten van wat hier beschreven staat nu al tot in detail te begrijpen, wel is het van belang dat u een breed overzicht krijgt van wat men met Java heeft willen bereiken. Een van de belangrijkste doelen van de ontwerpers van Java is geweest om de taal zo eenvoudig mogelijk te houden. Alhoewel er bewust voor gekozen is om de syntaxis van de taal sterk te laten lijken op de taal C++, en dus ook op de taal C , zijn een aantal zaken die C++ zo lastig maken om te leren, bewust buiten de taal Java gehouden.
Java is eenvoudig
Leestekst
Zo maakt Java onder meer veel minder vaak gebruik van overloading van operatoren (hiervan is sprake als eenzelfde symbool voor verschillende operaties wordt gebruikt; bijvoorbeeld het gebruik van + voor de optelling van verschillende typen en bij Java bovendien voor de concatenatie van strings), en heeft Java geen meervoudige overerving (Engels: multiple inheritance; hiervan is sprake als een klasse erft van meer dan één superklasse). Verder kent Java nauwelijks automatische typeconversies (op deze zogenoemde ‘coërcies’ komen we in leereenheid 8 nog terug) en heeft Java naast klassen niet ook nog eens de zogeheten structures van C++ en ook geen unions.
Geen goto-opdracht
Java kent geen goto-opdrachten, waarmee van een willekeurige plek in een programma naar een willekeurige andere plek kan worden gesprongen. Door velen is in het verleden al aangegeven dat dit leidt tot een slechte en onoverzichtelijke stijl van programmeren (men spreekt wel over spaghetticode) en dat alles wat met goto-opdrachten gebeurt ook zonder kan. In Java is men zo consequent geweest om de constructie buiten de taal te laten. En misschien wel het belangrijkste voordeel van Java ten opzichte van talen als C en C++, is dat Java geen pointerbewerkingen (pointer = wijzer) kent, die zeker voor beginnende programmeurs tot veel verwarring en fouten kunnen leiden. Kortom, er is in eerste instantie uitgegaan van C++, maar dan ontdaan van veel aspecten die onnodig ingewikkeld of verwarrend zijn. Java wordt daarom ook wel eens gekscherend aangeduid met C++– –. In de eerder genoemde Java White Paper wordt de volgende uitspraak geciteerd:
Geen pointerbewerkingen
Weet dat u in een ontwerp perfectie hebt bereikt, Niet wanneer u niets meer toe kunt voegen, Maar wanneer u niets meer weg kunt nemen. Antoine de Saint-Exupery Java heeft automatische garbage collection
Wat Java wél heeft, in tegenstelling tot talen als C++ en Pascal, is automatische garbage collection. Dit betekent dat een programmeur zich niet langer zorgen hoeft te maken over het vrijgeven van geheugen als dit niet langer wordt gebruikt. Het ontbreken hiervan is in de eerder genoemde talen een probleem dat vooral in grotere projecten lastig en tijdrovend is en ook vaak een bron van fouten. Ook dit is een zeer belangrijk aspect waardoor de taal Java relatief eenvoudig is in het gebruik. En het maakt de taal zelf ook eenvoudiger omdat we geen taalconstructies hoeven toe te voegen die voor de handmatige garbage collection zorgdragen. Zo heeft Pascal een disposeprocedure nodig om geheugen waar niet langer naar verwezen wordt, vrij te geven voor gebruik, en C (++ ) een functie free voor hetzelfde doel. In leereenheid 7 komen we uitvoerig terug op deze automatische ‘vuilnisophaaldienst’ van Java (paragraaf 2.7).
213
Visueel programmeren met Java
Java stelt geen al te hoge eisen
Java 2 Platform, Micro Edition
NB: het gaat hier om het basis-Javasysteem en niet om een ontwikkelomgeving als JBuilder!
Java is oorspronkelijk ontworpen om te draaien op kleine computers en daarom was het Java-systeem voor een programmeertaal aanvankelijk relatief klein. Echter door het gebruik van Java in steeds meer volwassen toepassingen, zoals grote, zelfstandig draaiende applicaties, is het Javasysteem inmiddels flink gegroeid. Om de Java 2 Software Development Kit (SDK) op een pc te draaien, wordt nu al minimaal 32 Mb intern geheugen aanbevolen. Het systeem is wel snel, zodat een Pentium 166 MHz processor al voldoende is. Voor consumentenproducten en dergelijke is overigens een aparte, uitgeklede editie van het Java 2 platform ontwikkeld, het Java 2 Platform, Micro Edition (J2ME ; zie http://java.sun.com/j2me/). Door het aantal toegevoegde standaardklassen te beperken, is deze versie van Java ook geschikt om te worden gebruikt op apparaten met relatief weinig geheugen; denk aan PDA’s (personal digital assistent) en andere palmtops, set-top boxes, telefoons met beeldscherm en andere consumentenelektronica. Zie de voorbeelden uit figuur 5.6; meer details vindt u op http://java.sun.com/features/2000/06/ce.html.
FIGUUR 5.6
Java-technologie wordt in toenemende mate toegepast in consumentenelektronica. Van links naar rechts: Motorola-telefoon met Java-technologie, draadloze PDA ’s van firma RIM, JavaCard in een daarvoor bestemde kaartlezer.
Java is objectgeoriënteerd
Zoals we al uitgebreid gezien hebben in de eerste vier leereenheden, is Java ontworpen als een objectgeoriënteerde taal. Om redenen van eenvoud en efficiëntie is een uitzondering gemaakt voor primitieve typen zoals getallen, tekens (characters) en booleans. En indien nodig, kan voor elk van deze primitieve typen gebruik gemaakt worden van bijbehorende verpakkingsklassen, zoals we gezien hebben in leereenheid 4.
Java is betrouwbaar
Java is ontworpen voor het maken van zeer betrouwbare (Engels: robust) software. Er wordt gezorgd voor uitvoerige (type)controle tijdens de vertaalfase, gevolgd door een controle voorafgaand aan de uitvoering van een programma. Ook het ontbreken van pointeroperaties en de reeds genoemde garbage collector dragen in hoge mate bij aan de betrouwbaarheid van software die in Java is geschreven. Een andere eigenschap die belangrijk is voor de betrouwbaarheid, is dat Java gebruik maakt van exception handling: als er iets onverwachts gebeurt, dan hoeft het systeem niet direct te crashen, maar wordt er een ‘exceptie’ gecreëerd die vervolgens kan worden afgehandeld. Exception handling in Java zal pas in de vervolgcursus Objectgeoriënteerd programmeren met Java worden behandeld.
Exeption handling
214
Leereenheid 5
Java als fenomeen
Java is veilig
Java is gemaakt om te worden gebruikt in gedistribueerde omgevingen zoals het internet, of in intranets: een afgeschermd net voor bijvoorbeeld een organisatie. Een belangrijk aspect daarbij – dat ook met betrouwbaarheid te maken heeft – is de veiligheid (security) bij het oversturen en verwerken van de bytecode in bijvoorbeeld een browser. Omdat voorkomen moet worden dat een ‘paard van Troje’ wordt binnengehaald, is het mogelijk dat een Java-programma geverifieerd wordt voordat het wordt verwerkt (zie ook figuur 5.9 in de volgende paragraaf). Het beveiligingsmodel van Java 2 kent verschillende niveaus van betrouwbaarheid van Java-programma’s, variërend van volledig onbetrouwbaar tot volledig betrouwbaar. Alleen Java-programma’s met de juiste permissies hebben toegang tot bepaalde systeembronnen, zoals lokale bestanden op de eigen computer. Dit geldt zowel voor applets die over het internet worden verstuurd, als voor programma’s op de eigen computer. Java-programma’s zonder enige permissie hebben geen enkele toegang tot lokale systeembronnen. Door kritiek op de beveiliging binnen Java, is het beveiligingsmodel van Java in de opvolgende versies steeds verder aangescherpt.
Java is architectuurneutraal
Java is ontworpen voor toepassingen in netwerken. Deze netwerken zijn in het algemeen samengesteld uit verschillende systemen met verschillende processoren en verschillende besturingssystemen die daarop draaien. Om een Java-toepassing overal op het netwerk te kunnen laten draaien, genereert de Java-compiler een architectuurneutrale tussencode, de bytecode, die uitgevoerd kan worden op alle processoren waarop het run-timesysteem van Java draait. Zie ook het stuk aan het einde van de volgende paragraaf over de virtuele machine van Java en de daardoor gerealiseerde platformonafhankelijkheid. Op deze wijze is een van de belangrijkste doelstellingen van het Javateam: write once, run anywhere, voor een groot deel waarheid geworden.
Write once, run anywhere
Architectuurneutraal is natuurlijk erg belangrijk als men software overdraagbaar (portable) wil maken. Maar er is meer voor nodig. In tegenstelling tot C en C++ zijn er geen implementatiespecifieke aspecten in de taal. Het aantal bits waarmee de primitieve typen (zoals int, float, double, boolean) in het geheugen worden gerepresenteerd, is bijvoorbeeld precies vastgelegd, net als het gedrag van de bewerkingen op die typen.
Java is portable
Leestekst
Zo is bijvoorbeeld een waarde van het type int altijd – dat wil zeggen: in elke implementatie van het Java-systeem – een ‘signed two’s complement 32 bit integer’ en een waarde van het type double altijd een ‘64-bit IEEE 754 double precision floating point number’.
Java heeft een goede performance
Alhoewel de eerste versies van Java een performance – qua verwerkingssnelheid – opleverden die duidelijk een stuk lager was dan die van C of C++, is er door verschillende optimalisaties een performance ontstaan die vrijwel vergelijkbaar is met die van C of C++.
Java is multithreaded
Bij tegenwoordige toepassingen is het gewoon dat er verschillende processen (schijnbaar) tegelijk aan het werk zijn. Als u met een browser een plaatje aan het ophalen bent, is het prettig als u tegelijkertijd al een andere applet kunt bekijken of kunt ‘scrollen’ door de betreffende webpagina. Voor het maken van dergelijke programmatuur is een vorm van parallellisme nodig die Java biedt in de vorm van zogeheten threads of draden. We zullen deze threads pas behandelen in de cursus Objectgeoriënteerd programmeren met Java.
215
Visueel programmeren met Java
Java is leuk
Ten slotte is het leuk om in Java te programmeren. Dankzij het feit dat het moeilijker is om fouten te maken in de taal, bent u als programmeur minder tijd kwijt met het opzoeken van vervelende bugs – bijvoorbeeld wat betreft geheugenbeheer – en daardoor productiever. Ook de beschikbaarheid van een uitgebreide en goed gedocumenteerde API maakt het programmeren in Java leuker en de programmeur productiever. Het is duidelijk dat Java is gemaakt door mensen die niet alleen verstand hebben van programmeertalen, maar die zelf ook heel veel geprogrammeerd hebben en weten welke potentiële ergernissen er bij een programmeertaal moeten worden voorkomen. De auteurs van deze cursus hebben in elk geval ook ervaren dat het leuk is om in Java te programmeren.
Kritiek op Java
Zijn er dan alleen maar positieve zaken te melden over Java? Nee, er zijn ook wel kritische geluiden te vernemen. De volgende kritiekpunten zijn in het verleden het vaakst genoemd. – De veiligheid van Java-applets blijkt niet zo waterdicht te zijn (geweest?) als door Sun wordt (werd) beweerd: in het verleden hebben wetenschappers al de nodige implementatiefoutjes weten bloot te leggen; deze zijn in nieuwere versies van Java gerepareerd. Belangstellenden kunnen eens kijken op de Secure Internet Programming-site van Princeton University: www.cs.princeton.edu/sip/. – De wijze waarop threads (voor het definiëren van parallelle processen) in Java zijn gerealiseerd, is ook aan kritiek onderhevig. Vooral wetenschappers uit de Occam-wereld – Occam is een programmeertaal speciaal gemaakt voor parallelle toepassingen – zijn verbaasd dat in Java geen gebruik is gemaakt van het CSP-concept van Hoare (communicating sequential processes). – Tot slot noemen we de kritiek die er is geweest op de eerste versie van het event-handlingmechanisme van Java, zoals gerealiseerd in JDK 1.0 . In de 1.1-versie is dit mechanisme volledig omgegooid, met als nadelig gevolg dat er al kort na het verschijnen van de taal duidelijk verschillende versies van JDK bestaan. De grote wijzigingen (vooral uitbreidingen) in opvolgende versies van Java zijn sowieso een kritiekpunt geweest op Java. Weliswaar kunnen volgende versies van Java wel alle oude versies aan; het omgekeerde is vanzelfsprekend niet in alle gevallen waar. De uitspraak ‘write once, run anywhere’ is daarmee wel afhankelijk geworden van de gebruikte versie van Java! In paragraaf 6 komen we kort terug op (de versies van) JDK.
Veiligheid
Threads
Versies
3
Applets uitvoeren binnen een browser
Java en het internet
Alle applets die we kunnen uitvoeren binnen onze applet viewer, zoals beschikbaar binnen JBuilder, kunnen we evengoed laten werken binnen een browser, voorzover die geschikt gemaakt is voor Java (zogeheten Java-enabled browsers). De meeste recente browsers zoals Netscape Navigator en Internet Explorer zijn geschikt voor Java, al is er een koppeling tussen de verschillende versies van deze browsers en de opeenvolgende versies van Java. Om Java-2-applets te verwerken in een browser die niet over de juiste Java virtual machine beschikt, moet u gebruikmaken van een Java-plugin. Zie ook bijlage 4 in cursusdeel 4. Om een applet uit een JBuilder-project te tonen in uw browser, kunt u eenvoudig op het door JBuilder aangemaakte html-bestand dubbelklikken, bijvoorbeeld vanuit de verkenner van Windows. Ook kunt u het bestand vanuit uw browser openen.
216
Leereenheid 5
Java als fenomeen
Voor de InvoerUitvoerApplet is dat bijvoorbeeld het bestand InvoerUitvoerApplet.html dat u kunt vinden in de map jbproject\vpmj01InvoerUitvoer\classes; zie ook paragraaf 3.1 van leereenheid 1. De applet verschijnt dan in uw browser en werkt daarbij op dezelfde wijze als in de applet viewer; zie figuur 5.7.
FIGUUR 5.7
Html
Hypertext markup language
De InvoerUitvoerApplet werkt binnen een browser op dezelfde wijze als binnen de applet viewer.
Dit gaat zo eenvoudig omdat JBuilder bij elk project automatisch een html-bestand genereert (en plaatst in de submap classes van de map die het project bevat). Dit html-bestand verwijst naar het gecompileerde class-bestand dat wordt uitgevoerd. In plaats van de applet viewer verwerkt in figuur 5.7 echter de browser het html-bestand InvoerUitvoerApplet.html. U kunt deze html-code ook vanuit de browser nog eens bekijken, door de broncode van de webpagina op te vragen; bij Internet Explorer gaat dat via Beeld - Bron. U krijgt dan de html-code te zien, zoals getoond in figuur 5.8.
FIGUUR 5.8
Broncode van het html-bestand InvoerUitvoerApplet.html
217
Visueel programmeren met Java
Scheiding van compilatie en interpretatie
Bytecode Java-interpretator
Beveiligingscontrole
Wat gebeurt er nu als u een internetpagina bezoekt waarin een Javaapplet is opgenomen? Behalve de html-code die de webpagina – exclusief applets – beschrijft, worden ook de Java class-bestanden waarnaar wordt verwezen, over het internet getransporteerd. Deze class-bestanden zijn het resultaat van een Java-compiler die – al in een eerder stadium – is losgelaten op de Java-broncode. JBuilder bevat zo’n compiler, maar ook de door Sun (gratis) beschikbaar gestelde software development kit (zie paragraaf 6) bevat een Java-compiler (javac). De class-bestanden bevatten de platformonafhankelijke bytecode. Met behulp van een Java-interpretator (Java interpreter) kan deze bytecode op de ontvangende machine worden verwerkt. Om te voorkomen dat met de ontvangen class-bestanden, die ten slotte op uw computer moeten worden uitgevoerd, rare dingen aan de hand zijn (virussen, opdrachten om de harde schijf te wissen, ...) wordt een beveiligingscontrole uitgevoerd, waarbij wordt gekeken of de ontvangen bytecode permissie heeft voor toegang tot bepaalde systeembronnen van de eigen computer. Applets hebben normaal gesproken geen toegang tot deze lokale systeembronnen, hierdoor kan worden gegarandeerd dat er door het verwerken van applets geen ongelukken optreden. Het proces kan schematisch als volgt worden uitgebeeld (figuur 5.9). computer die wordt bezocht Java-programma
compilatie
Java-byte-code
INTERNET
beveiligingscontrole
uw computer beperkte omgeving
Java-byte-code
FIGUUR 5.9
verwerking
De beveiligingscontrole van Java
We zouden kunnen zeggen dat de betreffende applet wordt uitgevoerd binnen een ‘omgeving met restricties’: zo kunnen bijvoorbeeld geen bestanden op uw computer worden gelezen of gewijzigd. Omdat uw browser beschikt over de mogelijkheden om deze Java-applets uit te voeren, is het voldoende om alleen het class-bestand voor de betreffende applet over te halen; alle andere klassen (standaard Java API-klassen) zijn al beschikbaar op de betreffende browser! Java virtual machine (JVM)
218
Het gehele systeem (de Java-interpretator én de standaard Java APIklassen) dat in staat is om (gecompileerde) Java-programma’s (bytecode dus) uit te voeren, staat bekend als de Java virtual machine (JVM): de virtuele machine van Java.
Leereenheid 5
Java als fenomeen
U kunt zich hierbij de voorstelling maken dat de instructies in de bytecode de machinetaal vormen van een denkbeeldige (virtuele) Javacomputer. In plaats van JVM worden ook wel termen gebruikt als Javaplatform of Java run-time environment. De specificaties van de JVM zijn door Sun zeer nauwkeurig vastgelegd, waardoor fabrikanten van besturingssystemen, JIT-compilers (zie verderop), browsers, of zelfs chips (waarin de software is ‘ingebakken’) kunnen zorgen dat Java op het betreffende platform kan draaien. Deze JVM’s zitten dus niet alleen in de eerder genoemde ‘Java-enabled’ browsers, maar kunnen ook ‘stand alone’ draaien; denk bijvoorbeeld maar aan de applet viewer. JVM’s zijn beschikbaar voor vrijwel alle gangbare besturingssystemen, zoals alle Windows-versies, MacOS en vrijwel alle Unix-versies (Solaris, Linux, ...). Platformonafhankelijkheid
Door het fraaie idee van machineonafhankelijke bytecode en de virtuele machine is het mogelijk een zeer grote mate van platformonafhankelijkheid te bewerkstelligen. Hierbij is bovendien rekening gehouden met de verschillende windowsystemen die op de verschillende besturingssystemen draaien. Het ideaal dat Patrick Naughton – en vele anderen met hem! – voor ogen stond, is kortom werkelijkheid geworden: schrijf een applet (of applicatie) en vertaal deze; de bytecode draait dan op alle genoemde platforms zonder enige aanpassing en zonder dat het programma opnieuw vertaald dient te worden! NB: overigens blijkt in de praktijk deze platformonafhankelijkheid toch nog niet altijd helemaal waargemaakt te kunnen worden, in ieder geval is vereist dat de versie van de JVM niet lager is dan die van de JVM waarop de applet werd ontwikkeld en vertaald.
Just in time (JIT) compilers
Om het proces van de Java-interpretatie – dus het verwerken van bytecode op een bepaalde machine – te versnellen, wordt tegenwoordig meestal gebruik gemaakt van zogeheten just in time (JIT) compilers; ook JBuilder bevat een JIT-compiler en deze JIT-compilers worden ook in browsers ingebouwd. Meer informatie over de relatie tussen compilers, interpreters en just in time compilers vindt u in een aardige pagina van de Java Tutorial (zie paragraaf 7): http://java.sun.com/docs/books/tutorial/getStarted/ intro/definition.html. 4
Applets, applets en nog eens applets!
De enorme populariteit die Java met name in de eerste jaren heeft verworven, is zonder enige twijfel te danken aan het feit dat iedereen eigen Java-applets kan maken en via het www kan etaleren aan de rest van de wereld. In veel gevallen wordt behalve de applet ook de Java-broncode beschikbaar gesteld. In deze paragraaf zullen we een aantal van deze applets laten zien. Wij gaan er hierbij van uit dat u de beschikking hebt over een internetaansluiting en een browser die geschikt is voor Java. Applets van Sun
Een van de aardigste ingangen voor het bekijken van applets is de appletpagina van Sun: http://java.sun.com/applets/ (zie figuur 5.10).
219
Visueel programmeren met Java
FIGUUR 5.10
Bij de appletpagina van Sun vindt u behalve de applets uit de verschillende JDK-versies ook een groot aantal andere fraaie voorbeelden.
Kiezen we in eerste instantie voor de JDK 1.1-applets – deze zijn door vrijwel alle browsers te bekijken – dan vinden we de voorbeelden die we ook al zagen in paragraaf 5.3 van leereenheid 1. We kunnen bijvoorbeeld kiezen voor een van de voorbeelden van MoleculeViewer, waarbij net als bij de draadmodellen die we in leereenheid 1 al hebben gezien, de molecuulmodellen met de muis kunnen worden geroteerd; zie figuur 5.11.
FIGUUR 5.11
Ook andere applets uit de JDK van Sun zijn het bekijken waard, zoals de Fractal-applet (zie figuur 5.12) waarin in een aantal stappen een zogeheten fractal wordt opgebouwd.
Andere applets uit de JDK Sorteeralgoritmen worden behandeld in de cursus Datastructuren en algoritmen.
220
Een van de JDK 1.1-applets werkend in een browser
Een voor het informaticaonderwijs interessante applet is de SortDemoapplet, een prachtige animatie van drie sorteeralgoritmen: bubble sort (een traag algoritme), bi-directional bubble sort (iets sneller) en quick sort (een heel snel algoritme); zie figuur 5.13.
Leereenheid 5
Other Applets Applet Archive
Java als fenomeen
FIGUUR 5.12
Een fractal zoals gemaakt door de Fractal-applet van Sun
FIGUUR 5.13
Door achtereenvolgens op elk van de drie deelapplets te klikken, kunt u de drie algoritmes gelijktijdig aan het werk zien. Quick sort wint met glans!
Onder ‘Other Applets’ of ‘Applet Archive’ vindt u ook tal van interessante applets die u bijvoorbeeld kunt gebruiken om uw eigen home page mee te verfraaien. Probeer eens een aantal van de volgende voorbeelden: Bubbles, Hangman (zie figuur 5.14), ScrollingImages (leden van het Javateam), TumblingDuke, UnderConstruction, Crossword, Dining Philosophers (lees ook de tekst), LED of Neon Sign, of Pythagoras (een prachtig ‘grafisch bewijs’ van de bekende stelling). Bij veel van deze applets zijn ook de grafische en/of audio-mogelijkheden van Javaapplets toegepast.
FIGUUR 5.14
Bij het goed raden van het woord bij Hangman trakteert Duke ons op een toepasselijke vreugdedans.
221
Visueel programmeren met Java
Broncode van veel applets beschikbaar
Van elk van de Sun-applets wordt de broncode ook gegeven; klik op The source, zie bijvoorbeeld figuur 5.14. Afhankelijk van de (versie van de) browser krijgt u de Java-code te zien in de browser zelf of wordt automatisch JBuilder opgestart en wordt de broncode getoond in de codeeditor.
Java Boutique JARS
Een tweetal andere websites waar veel informatie over applets te vinden is, zijn de Java Boutique (http://javaboutique.internet.com/applets/) of JARS (Java Applet Rating Service; www.jars.com/); zie figuur 5.15.
FIGUUR 5.15
Twee websites over Java-applets: Java Boutique en JARS
Twee willekeurige voorbeelden van applets die vanuit eerstgenoemde pagina te vinden zijn: The Mandelbrot Set (http://javaboutique.internet.com/Mandelbrot/) en 3D Maze (http://javaboutique.internet.com/ 3DMaze/). Bij de eerste applet kunt u steeds opnieuw een willekeurige uitsnede nemen van de beroemde Mandelbrot-fractal. Zie figuur 5.16.
FIGUUR 5.16
Java on the brain
222
Twee applets over Mandelbrot-fractals en een 3D doolhof
Tot slot een applet uit de begintijd van Java die (relatief!) simpel, maar toch indrukwekkend is: ‘Rubik Unbound’ gemaakt door Karl Hörnell. De applet is te vinden op: www.javaonthebrain.com/java/rubik/. In de applet kunt u met de muis de kubus van Rubik manipuleren (zie figuur 5.17).
Leereenheid 5
FIGUUR 5.17
Java als fenomeen
De ‘Rubik Unbound’ applet van Karl Hörnell
Als u een bepaalde applet waarvan de broncode beschikbaar wordt gesteld, interessant vindt en u zou deze willen onderbrengen in een JBuilder-project, dan is dat – in sommige gevallen! – mogelijk. U kunt dan de betreffende applet ook draaien in uw applet viewer, dan wel in uw browser, zonder dat u op het internet bent aangesloten. NB: we gaan er hierbij van uit dat de auteur van de betreffende applet door het beschikbaar stellen van de code, toestemming geeft voor het importeren ervan! Uiteraard doet u dit verder op eigen risico.
Importeren van applets in JBuilder
Leestekst
De volgende procedure sluit zoveel mogelijk aan bij de methode zoals geleerd in leereenheid 1 en zorgt ervoor dat u zich zo min mogelijk met zaken als html-code hoeft bezig te houden. We maken namelijk gebruik van de eigenschap dat JBuilder bij het generen van een applet automatisch een bijbehorende html-pagina genereert, vervolgens vervangen we de door JBuilder gegenereerde applet door de geïmporteerde applet met dezelfde naam. De verwijzingen van de html-pagina naar de applet zijn dan automatisch in orde, u hoeft nog slechts het formaat aan te passen. Als u vertrouwd bent met html, zijn er ook wel andere (kortere) procedures te bedenken, we zullen deze hier niet behandelen. Meer informatie vindt u in bijlage 4: Applets en webpagina’s.
De procedure hiervoor verloopt als volgt; we nemen daarbij de Bubblesapplet als voorbeeld; zie figuur 5.10 onder ‘Other Applets’.
Procedure
Zoek naam op van de applet
Fase 1
Eerst moeten we weten wat de naam is van de applet die we gaan importeren. We bekijken daartoe de broncode; bij de Bubbles-applet is dat Bubbles; dit is ook te zien aan de naam van het bestand: Bubbles.java.
Maak een nieuw project aan
Fase 2
Vervolgens maken we op dezelfde manier als in leereenheid 1 een nieuw project vpmj05Bubbles.jpx aan en voegen een applet toe, met als naam dezelfde naam als de te importeren applet, hier dus Bubbles; zie figuur 5.18. Hierdoor wordt de juiste mappenstructuur aangemaakt en wordt een html-bestand gegenereerd. Dit bestand hebben we nodig; het Javabestand zullen we in een volgende stap vervangen door het te importeren bestand.
Let ook op hoofden kleine letters!
223
Visueel programmeren met Java
FIGUUR 5.18
Geef de applet de juiste grootte
Fase 3
We geven de applet nu de juiste grootte. Dit is het enige dat we doen in de gegenereerde html-code. We passen daarom de waarden van WIDTH en HEIGHT aan in de broncode van het gegenereerde bestand Bubbles.html, bereikbaar via tabblad Source (zie figuur 5.19).
FIGUUR 5.19
Haal het bestand op
224
Fase 4
We geven de door JBuilder gegenereerde applet dezelfde naam als de te importeren applet.
We passen de grootte van de applet aan.
Pas nu halen we het bestand – in dit geval Bubbles.java – op van de Sunwebsite: http://java.sun.com/applets/other/Bubbles/. We plaatsen het bestand in de juiste map: jbproject\vpmj05Bubbles\src; zie figuur 5.20. De applet die we aan het project toevoegden, heeft dezelfde naam; het bestand moeten we dus overschrijven. Zie figuur 5.21.
Leereenheid 5
Java als fenomeen
FIGUUR 5.20
We plaatsen het opgehaalde bestand in de juiste map (jbproject\vpmj05Bubbles\src)
FIGUUR 5.21
Overschrijf het bestand.
De code van de opgehaalde applet is nu zichtbaar in de code-editor; zie figuur 5.22.
FIGUUR 5.22
De code van het opgehaalde bestand Bubbles.java
225
Visueel programmeren met Java
Verwerk de geïmporteerde applet
Fase 5
We zijn nu klaar en de applet kan lokaal verwerkt worden in de applet viewer van JBuilder. Selecteer in het projectpaneel het html-bestand Bubbles.html en verwerk de applet. Als u alles goed hebt uitgevoerd, zal de Bubbles-applet draaien in de applet viewer; zie figuur 5.23.
FIGUUR 5.23
De Bubbles-applet in de applet viewer
Waarschuwing
Deze procedure zal niet werken bij alle Java-applets waarvan de broncode wordt aangeboden. Als de applet gebruik maakt van plaatjes of geluid of van andere niet-standaardklassen van Java, zal het meestal niet goed gaan.
Leestekst
Vaak zijn er nog allerlei extra Java-bestanden, plaatjes (gif, jpg) en dergelijke nodig om de betreffende applet te verwerken, die wel op de bezochte computer aanwezig zijn, maar niet ook zijn geïmporteerd naar de eigen pc. Veel van de grafisch georiënteerde Java-applets die worden aangeboden, maken gebruik van extra bestanden. Voor deze applets zal deze procedure dus niet werken. De Sun-applets die gebruik maken van de Duke-plaatjes, zullen bijvoorbeeld niet werken!
U kunt de procedure desgewenst nog eens herhalen bij de Rubik-applet. U moet dan het gecomprimeerde bestand rubik_tar.tgz ophalen dat u met een programma als WinZip kunt uitpakken. Het bevat drie bestanden; voor de hiervoor gegeven procedure hebt u slechts het bestand rubik.java nodig dat u op de beschreven manier kunt toevoegen aan uw zelfgemaakte project vpmj05Rubik.jpx. Lokaal verwerken van de geïmporteerde applet in een browser
226
En natuurlijk is het nu ook weer mogelijk om de applet lokaal – dus zonder internetverbinding – te verwerken binnen de eigen browser, of door in de juiste map de html-file te dubbelklikken of door deze met uw browser op te zoeken. Bedenk daarbij dat de aangemaakte htmlbestanden zijn ondergebracht in de map classes in de map waarin het project zich bevindt; zie figuur 5.24.
Leereenheid 5
FIGUUR 5.24 5
Java als fenomeen
Rubik Unbound, lokaal draaiend in de eigen browser
Java in het bedrijfsleven
Applicaties in Java
Door alle aandacht voor de applets in Java, zou u bijna gaan denken dat gewone, stand-alone-applicaties in Java niet mogelijk zijn; het tegendeel is echter waar. Java is een complete taal waarin programma’s kunnen worden ontwikkeld die uit te voeren zijn op alle platforms die beschikken over een Java virtuele machine. Ook JBuilder geeft ondersteuning voor het maken van applicaties; wellicht herinnert u zich het dialoogscherm (de ‘object gallery’) voor het creëren van een nieuwe applet (zie figuur 1.36 in leereenheid 1). Naast het tabblad Web voor een nieuwe Applet bevat het scherm onder meer ook een tabblad General voor een nieuwe Application. Alhoewel we er in deze cursus voor gekozen hebben om de taalconstructies van Java te leren oefenen binnen Java-applets, zijn alle constructies ook toepasbaar binnen Java-applicaties. Het omgekeerde is echter niet waar; wilt u bijvoorbeeld gegevensuitwisseling met bestanden binnen een computer, dan is dat – om begrijpelijke redenen: denk aan beveiliging – niet mogelijk binnen een applet, maar wel binnen een applicatie. Pas in de vervolgcursus besteden we aandacht aan applicaties, waarbij we ook kijken naar de verschillen tussen applicaties en applets. We zullen daar ook aandacht besteden aan de mogelijkheden van gegevensopslag vanuit Java-applicaties.
JBuilder is een Java-applicatie
Voorbeelden van Java-applicaties zijn er inmiddels te over. Ook JBuilder zelf is geschreven in Java, mede om deze reden is het mogelijk om het product voor verschillende platforms (Windows, Linux, Solaris, MacOS) uit te leveren.
Java op de server
Na de eerste jaren waarin Java vooral de aandacht heeft getrokken door de mogelijkheden van Java-applets, is de doorbraak voor industriële toepassingen vooral te danken aan de mogelijkheden die Java biedt voor gedistribueerde toepassingen waarbij Java ook op de server kan draaien (server side Java). Vooral technieken als Java-servlets, remote method
227
Visueel programmeren met Java
invocation ( RMI) en CORBA (gecombineerd met Java) hebben deze gedistribueerde systemen met Java mogelijk gemaakt. Deze onderwerpen worden behandeld in de cursus Gedistribueerd programmeren met Java. Java 2 Enterprise Edition (J2EE)
Een belangrijke ontwikkeling met betrekking tot industriële toepassingen is de introductie van de zogeheten Java 2 Enterprise Edition (J2EE). Wie hier meer van wil weten, kan bijvoorbeeld de eenvoudig toegankelijke ‘white paper’ Simplified Guide to the Java 2 Platform Enterprise Edition lezen (in pdf-formaat): http://java.sun.com/j2ee/white/j2ee_guide.pdf.
Java Industry
Inmiddels hebben zich zeer vele softwarebedrijven gestort op het maken van Java-applicaties. Een overzicht van actuele success stories in Java wordt gegeven op een van de pagina's van de Java Community: Succes Stories, http://jcp.org/en/press/success (zie figuur 5.25).
FIGUUR 5.25
Sun Nederland Java startpagina
228
Door de Java Community wordt een pagina onderhouden met actuele industriële successen met Javatechnologie.
Tot slot willen we u ook twee relevante Nederlandse websites niet onthouden. Op de website van Sun Nederland (nl.sun.com/) wordt regelmatig informatie over Java gegeven, in het bijzonder over industriële ontwikkelingen; zie figuur 5.26. Ook de Engelstalige website van de Nederlandse Java User Group (www.nljug.org) geeft regelmatig nieuws over activiteiten in Nederland die betrekking hebben op Java.
Leereenheid 5
FIGUUR 5.26 6
Java als fenomeen
Twee Nederlandse websites met informatie over Java
Ontwikkelomgevingen voor Java
Interactive development environment (IDE)
In de leereenheden 1, 3 en 4 van deze cursus hebt u kennisgemaakt met een ontwikkelomgeving voor Java: JBuilder van Borland. Dit is echter zeker niet de enige. Op het www worden enkele pagina’s aangeboden waarop gepoogd wordt een overzicht te bieden van het zeer grote aanbod van programmeeromgevingen voor Java. Een daarvan is de JavaWorld-pagina die zich richt op zogeheten ‘interactive development environments’ (IDE’s): www.javaworld.com/javaworld/tools/jw-toolside.html.
Marktleiders
Deze pagina biedt ingangen naar (vrijwel) alle verkrijgbare producten die (min of meer) vergelijkbaar zijn met JBuilder. Ondanks het zeer grote aantal producten in deze lijst, zijn de volgende producten duidelijk de marktleiders: JBuilder (www.borland.nl/jbuilder), WebSphere Studio van IBM (www-306.ibm.com/software/info1/websphere/index.jsp), Java Studio van Sun (vroeger Forte for Java; wwws.sun.com/software/ sundev/jde/index.html), Eclipse (www.eclipse.org/). Wat de beste ontwikkelomgeving is, hangt sterk af van de randvoorwaarden – beginnende of ervaren programmeur, hardware-eisen, ... – en uiteindelijk ook van persoonlijke voorkeur.
Waarom JBuider?
De reden waarom de Open Universiteit gekozen heeft voor JBuilder, heeft te maken met de marktpositie van JBuilder, de grote waardering van professionele programmeurs voor het product en het gemak waarmee u als beginnende programmeur met JBuilder aan de slag kunt.
Gratis basisversies
Veel van de aanbieders van Java-IDE’s bieden inmiddels een basisversie van het product gratis aan. Zo kon tijdens het schrijven van deze cursus ook het product JBuilder X Foundation gratis via het www worden opgehaald; zie figuur 5.27. U dient zich dan eerst als gebruiker bij Sun te laten registreren. Omdat het gaat om een fors bestand, moet wel rekening gehouden worden met een flinke transmissietijd. Voor deze cursus is het
229
Visueel programmeren met Java
niet nodig – en ook niet aan te bevelen! – te werken met een ander product dan de meegeleverde versie van JBuilder. Als u later zelf Java-software wilt ontwikkelen en kennis wilt nemen van de nieuwere edities van JBuilder, is dit echter een interessante optie.
FIGUUR 5.27
Java 2 software development kit (SDK)
Behalve deze uitgebreide programmeeromgevingen bestaan er ook relatief eenvoudige omgevingen waarmee Java-programma’s kunnen worden ontwikkeld. De bekendste hiervan is zonder enige twijfel de door Sun zelf uitgebrachte Java 2 software development kit (SDK , vroegere versies worden JDK genoemd), een onderdeel van Java 2 Platform. De rest van deze paragraaf zullen we hieraan besteden.
FIGUUR 5.28
230
JBuilder X Foundation kon gratis worden opgehaald.
De SDK-pagina van Sun
Leereenheid 5
Deze programmeeromgeving wordt ook gratis ter beschikking gesteld; op de webpagina (http://java.sun.com/j2se/, zie figuur 5.28) hoeft u slechts de instructies te volgen en u kunt de software ophalen samen met de Java 2 Standard Edition (J2SE) en vervolgens installeren op uw pc. Let er wel op, de versie van deze SDK is nu (voorjaar 2004): Java 2, Standard Edition, v 1.4.
Gratis downloaden van SDK
Waarschuwing!
Feitelijk is het downloaden voor de cursus ook niet nodig, omdat de volledige SDK (Java 2 Platform, Standard Edition, v 1.1, vroeger JDK) met alle klassen, tools, voorbeelden en documentatie is meegeleverd met JBuilder. Mocht u toch belangstelling hebben om dit te uit te proberen, houd er dan wel rekening mee dat het gecomprimeerde J2SE-bestand ruim 48 Mb groot is. Verder duurt het overhalen van een dergelijk bestand uiteraard wel even. Deze software is onder meer te vinden in de map JBuilder8\jdk1.4 (zie bijvoorbeeld figuur 5.29).
FIGUUR 5.29
Verschillende versies van JDK
Java als fenomeen
Veel van de basistools uit de SDK zoals javac, java, javadoc, appletviewer zijn te vinden in de map JBuilder8\jdk1.4\bin.
Zoals bij alle professionele software wordt ook SDK/JDK beschikbaar gesteld in verschillende versies. Grote verandering in de JDK -software hebben plaatsgevonden bij de overgang van JDK 1.0 naar JDK 1.1, aangezien daarbij een aantal essentiële wijzigingen in de API zijn aangebracht (onder andere in het event-handlingmechanisme) en later van JDK 1.1 naar Java 2 SDK (vanaf versie 1.2, onder andere toevoeging van Swing-componenten en een groot aantal andere klassen). Vandaar dat bij sommige Sun-applets een expliciet onderscheid gemaakt wordt tussen oudere (JDK 1.0 en JDK 1.1 ) en nieuwe applets. De oude applets zijn wel compatibel met de nieuwe versies, het omgekeerde is niet altijd waar: nieuwe applets kunnen gebruik maken van klassen en methoden die niet bekend zijn in oudere versies. Op zich is JBuilder 8 Standard gebaseerd op Java 2 en kunnen alle klassen en methoden van Java 2 gebruikt worden. Bij het opnemen van applets in webpagina’s moet echter wel rekening gehouden worden met het feit dat veel browsers nog niet op Java 2 zijn afgestemd, vandaar dat we ons in
231
Visueel programmeren met Java
deze cursus voor het grootste deel beperken tot klassen en methoden uit JDK 1.1 . Voor meer informatie kunt u bijlage 4 (Applets en webpagina’s) bekijken. Basistools van Java
Ook het werken (onder DOS ) met de basistools javac, java, javadoc, appletviewer, is niet lastig. Omdat u ze voor deze cursus niet nodig hebt – het werken binnen JBuilder gaat een stuk eenvoudiger – gaan we er niet verder op in en verwijzen we naar de documentatie van Sun op het web: http://java.sun.com/j2se/1.4/docs/tooldocs/tools.html#basic.
Nieuwsgroep comp.lang.java. softwaretools
Als u toegang hebt tot algemene nieuwsgroepen, is het bovendien aardig eens een kijkje te nemen in de levendige nieuwsgroep comp.lang.java.softwaretools via news.surfnet.nl. Regelmatig verschijnen er vragen of discussies over de meest geschikte Java IDE; zie als voorbeeld figuur 5.30.
FIGUUR 5.30
7
In de nieuwsgroep comp.lang.java.softwaretools is interessante actuele informatie over Java software-tools te vinden.
Meer informatie over Java
Als u zich verder wilt verdiepen in Java of op de hoogte wilt blijven van alle ontwikkelingen, dan is dat ruimschoots mogelijk. In deze laatste paragraaf geven we een aantal ingangen tot informatie. Java-boeken
232
Het aantal boeken over Java is in de afgelopen jaren erg groot geworden en voor een nieuwkomer is het niet eenvoudig het (vele) kaf van het (weinige) koren te scheiden. Daarom geven we hier wat informatie over een aantal van de betere boeken, meestal met verwijzingen naar relevante webpagina’s.
Leereenheid 5
The Java series (Addison-Wesley)
Java als fenomeen
De meest vooraanstaande serie Java-boeken is geschreven door en in samenwerking met de mensen uit het Java-team zelf (James Gosling, Bill Joy, Frank Yellin, Tim Lindholm, Patrick Chan, Kathy Walrath, ...) en door Addison-Wesley uitgegeven onder de naam The Java Series (zie http://java.sun.com/docs/books/; op deze site is ook te zien welke van deze boeken ook on-line beschikbaar zijn). Het gaat hierbij om boeken over de taal Java zelf (Arnold, Gosling en Holmes), het standaardwerk over de specificatie van de taal (Gosling, Joy, Steele en Bracha), over de specificatie van de Java virtual machine (Lindholm en Yellin) en boeken over de API en over geavanceerde toepassingen als database access en parallel programmeren. Als u als beginnend programmeur overweegt een extra boek over Java aan te schaffen, zijn de meeste van deze boeken echter te specialistisch, wellicht met uitzondering van The Java programming language, third edition van Ken Arnold, James Gosling en David Holmes. Als u (later) precies wilt weten hoe de taal is gedefinieerd, dan is de volgende ‘bijbel van Java’ aan te bevelen: The Java language specification, James Gosling, Bill Joy, Guy Steele en Gilad Bracha. The Java language specification, second edition, staat integraal op het web: http:// java.sun.com/docs/books/jls/second_edition/html/j.title.doc.html). Als u permanent toegang hebt tot het internet, is het handiger om deze on-lineversie te raadplegen, dan om het boek te kopen.
The Java tutorial
Een boek dat u wel kunt overwegen, is het volgende boek uit deze serie: The Java tutorial: A short course on the basics (third edition), Mary Campione en Kathy Walrath, Addison-Wesley, 2000 (gebaseerd op JDK 1.1 ). Ook is er een vervolgboek hierop geschreven: The Java tutorial continued: The rest of the JDK. Van beide boeken is op de Sun-pagina’s ook een onlineversie beschikbaar; zie bijvoorbeeld http://java.sun.com/docs/ books/tutorial/.
Sun Microsystems Press Java Series
Een andere serie Java-boeken waarbij Sun direct is betrokken, is de ‘Sun Microsystems Press Java Series’, met titels als Instant Java, Java by example, Graphic Java, Just Java, Distributed Java en Core Java (2 delen), zie www.sun.com/books/java_series.html. Veel van deze boeken zijn bedoeld voor professionele programmeurs en zullen pas interessant worden als u verder bent in uw studie.
Java for students
Ook voor het onderwijs in Java is een groot aantal boeken beschikbaar. Het boek Java for students van Bell en Parr is een goed boek, evenals Java gently: Programming principles explained (derde druk) van Judy Bishop (Addison-Wesley). Een boek dat zijn kwaliteiten vooral onleent aan zijn omvang (1355 blz.) en compleetheid is Java: how to program (vijfde druk) van Deitel en Deitel; zie www.deitel.com/books/. Alles wat er te zeggen valt, wordt gezegd en uitentreuren toegelicht. Het boek is bedoeld als zelfstudieboek, maar is vooral goed bruikbaar als receptenboek of naslagwerk. Deze drie boeken worden ook genoemd in een artikel dat in 1999 in het tijdschrift JavaWorld (zie figuur 5.31) is verschenen over zeven boeken voor beginners; de auteur heeft overigens een voorkeur voor twee andere boeken, zie www.javaworld.com/javaworld/jw-02-1999/jw-02bookreview_p.html.
Java gently Java: how to program
233
Visueel programmeren met Java
Java in a nutshell
Het volgende boek is door veel instanties geroemd en geprezen: Java in a nutshell; A desktop quick reference, David Flanaga, O’Reilly, 2002 (vierde druk): www.oreilly.com/catalog/javanut4/. Het boek is vooral interessant als naslagwerk, bijvoorbeeld bij het zoeken naar de verschillende klassen uit de standaard API.
Uitgebreide lijsten met Java-boeken
Een zeer uitgebreid overzicht van Java-boeken vindt u op het volgende adres: www.javaworld.com/books/books-index.html. De verzameling van rond de 2500 (!) boeken zijn op verschillende manieren gesorteerd of onderverdeeld in categorieën. De lijst is vooral nuttig als u al weet wat u zoekt en een verwijzing naar informatie op het web zoekt of als u op zoek bent naar een boek over een specifiek onderwerp. Een ander overzicht – voorzien van persoonlijke voorkeuren – is te vinden op www.ibiblio.org/javafaq/books.html.
Java-tijdschrift JavaWorld
Als u op de hoogte gehouden wilt worden van actuele ontwikkelingen rondom Java, dan is het gratis maandelijkse on-linetijdschrift JavaWorld een goede informatiebron: www.javaworld.com. E-mail alerts
U kunt desgewenst ook regelmatig via e-mail een herinnering krijgen om het nieuwste nummer van JavaWorld te bekijken; inschrijving gaat via de webpagina (e-mail alerts; zie figuur 5.31).
FIGUUR 5.31
Java-nieuwsgroepen
234
Homepage van JavaWorld
Als u beschikt over de mogelijkheid om nieuwsgroepen te bekijken, is dat ook een bron van informatie en natuurlijk kunt u ook actief deelnemen aan de binnen deze nieuwsgroepen gevoerde discussies. Daarbij moet worden aangetekend dat bij sommige nieuwsgroepen – bijvoorbeeld comp.lang.java.programmer – het vooral zeer ervaren, professionele programmeurs zijn die zich met deze discussies bemoeien.
Leereenheid 5
Java als fenomeen
Alle Java-nieuwsgroepen beginnen met comp.lang.java. De oudste hiervan zijn comp.lang.java.programmer en comp.lang.java.misc, daarnaast zijn een groot aantal andere toegevoegd, veelal over specialistische onderwerpen (beans, databases, security).
FIGUUR 5.32
Er is een groot aantal Java-nieuwsgroepen
Het is niet zo moeilijk om hier nog een lange lijst van interessante Javasites te noemen. Voorlopig houden we het echter bij de eerdergenoemde Sun- en JavaWorld-pagina’s, die zoveel verwijzingen bevatten naar andere webpagina’s dat u via deze ingangen wel uw weg zult kunnen vinden.
SAMENVATTING Paragraaf 1
Het feit dat Java de taal voor het internet is geworden, is zeker niet zo van meet af aan gepland. Wel is Java gemaakt als taal voor gedistribueerde toepassingen, waardoor het nodig was om een maximale mate van platformonafhankelijkheid te krijgen. Door de plotselinge opkomst van het world wide web kwam deze eigenschap ineens zeer goed van pas. Door de toevoeging van Java aan de belangrijkste browsers als Netscape Navigator en Internet Explorer ontstond de doorbraak voor Java als internettaal.
Paragraaf 2
De ontwerpdoelen van Java zijn door Sun vastgelegd in een aantal documenten die op het internet zijn te vinden. Kort samengevat kunnen we zeggen dat Java eenvoudig, klein, objectgeoriënteerd, betrouwbaar, veilig, architectuurneutraal, portable, multithreaded is en leuk. Verder heeft Java automatische garbage collection en een goede performance.
Paragraaf 3
Applets die in JBuilder zijn gemaakt, kunnen behalve in de applet viewer van JBuilder ook worden uitgevoerd in Java-enabled browsers. De aanroep van de (gecompileerde) Java-bytecode gaat vanuit htmlpagina’s. Als een internetpagina ergens op het www wordt bezocht, dan wordt niet alleen de html-code opgehaald, maar ook de Java-bytecode van de applet die binnen de webpagina moet gaan draaien. Voordat deze door uw computer wordt uitgevoerd, vindt eerst een beveiligingscontrole plaats. Hierdoor kunnen problemen als het binnenhalen van virussen worden voorkomen.
235
Visueel programmeren met Java
Paragraaf 4
De populariteit van Java is in grote mate te danken aan de mogelijkheid om applets te maken. Er zijn heel veel applets te vinden op het internet; de appletpagina’s van Sun, Java Boutique en JARS zijn de bekendste websites. Vaak wordt ook de Java-broncode van de applets gegeven. Het is dan mogelijk om er een JBuilder-project van te maken en de applet lokaal in de applet viewer of in de browser te draaien.
Paragraaf 5
Het is ook mogelijk om stand-alone-applicaties in Java te maken; een voorbeeld is JBuilder zelf. Voor het succes van industriële toepassingen zijn, naast de mogelijkheden voor het maken van Java-applets, vooral de toepassingen van Java op de server van belang geweest. Ook de introductie van de Java Enterprise Edition heeft een stimulans gegeven voor het bouwen van industriële toepassingen.
Paragraaf 6
Er is een zeer groot aantal ontwikkelomgevingen voor Java op de markt. De meest geavanceerde omgevingen zijn ontwikkeld door bedrijven als Borland, IBM en Sun, die samen het grootste deel van de markt in handen hebben. JBuilder van Borland staat goed bekend en is populair bij professionele programmeurs. Toch is de meestgebruikte ontwikkelomgeving de Java software development kit van Sun zelf, een relatief eenvoudige verzameling tools die gratis is op te halen vanaf de Sun-pagina’s. Omdat er grondige wijzigingen in de API van Java zijn aangebracht, is het belangrijk met welke versie van JDK/SDK wordt gewerkt: 1.0, 1.1, 1.2 of 1.4 (beide Java 2).
Paragraaf 7
In de laatste paragraaf is nog wat informatie verzameld over Javaboeken, het tijdschrift JavaWorld en Java-nieuwsgroepen.
ZELFTOETS
236
1
a Geef aan wat de rol is van de Java-compiler en van de Javainterpreter. b Geef aan wat Java-bytecode is en waarom het idee achter de bytecode zo belangrijk is. c Waarom is het belangrijk dat via het internet opgehaalde applets binnen een beperkte omgeving worden verwerkt?
2
Wat zijn naar uw mening de belangrijkste redenen waarom Java zo’n succes is geworden?
3
Noem tenminste acht ontwerpdoelen van Java en leg uit waarom deze van belang zijn.
Leereenheid 5
Java als fenomeen
TERUGKOPPELING
Uitwerking van de zelftoets 1
a De Java-compiler vertaalt de Java-broncode naar de bytecode. Bestanden met deze bytecode zijn herkenbaar aan de extensie .class. De Java-interpreter leest de bytecode en voert deze uit op het betreffende systeem. Sommige systemen – zoals JBuilder en de meeste browsers – hebben de interpreter vervangen door JIT-compilers, die tot snellere programma’s leiden. b Bytecode is een platformonafhankelijke tussencode. Deze kan worden gekoppeld aan html-pagina’s en bij het bezoeken hiervan over het internet worden getransporteerd en op de ontvangende machine worden geverifieerd en vervolgens uitgevoerd in de vorm van een applet. Ook voor Java-applicaties is het idee van machineonafhankelijke gecompileerde code belangrijk. Deze kan immers worden uitgevoerd op alle machines waarop een Java virtuele machine draait. c Dit is van belang omdat men wil uitsluiten dat Java-applets op de ontvangende machine onaangename zaken uitvoeren, zoals het wissen van (delen) van de harde schijf.
2
De belangrijkste reden waarom Java zo’n succes is geworden, is zonder twijfel het feit dat de taal kon worden toegevoegd aan de bekende internetbrowsers Netscape Navigator en (later) Internet Explorer. Hierdoor werd het mogelijk om programmaatjes (applets) te koppelen aan statische webpagina’s. De redenen waarom Netscape en Microsoft hiertoe hebben besloten, zijn uiteraard ook van belang. Een van de belangrijkste redenen is de opsplitsing in de platformonafhankelijke compileerfase en platformafhankelijk uitvoeringsfase: het idee van bytecode dus, de betreffende browsers draaien immers op een groot aantal verschillende platforms. Verder is de mogelijkheid om de bytecode te kunnen verifiëren voordat deze wordt uitgevoerd van groot belang. Als gebruikers van een browser niet voldoende vertrouwen in dit proces zouden hebben, dan zouden de betreffende Java-enabled browsers al gauw verdacht worden en minder populair. Ook het feit dat de taal klein is, maakte het eenvoudig mogelijk om Java aan genoemde browsers toe te voegen. In tweede instantie zijn ook de mogelijkheden van Java op de server een belangrijke reden geweest voor het doorzetten van het succes van Java als taal voor industriële toepassingen. Bijkomende – maar niet doorslaggevende – redenen voor het succes van Java zijn de andere plezierige eigenschappen van de taal (zie zelftoetsopgave 3). Er zijn immers ook andere goede, objectgeoriënteerde, betrouwbare programmeertalen met garbage collection die niet (zo) populair zijn geworden.
3
In deze cursus zijn de volgende 11 ontwerpdoelen genoemd: eenvoudig, het hebben van garbage collection, klein, objectgeoriënteerd, betrouwbaar, veilig, architectuurneutraal, portable, snel (goede performance), multithreaded en leuk. Voor een uitleg of toelichting van elk van deze ontwerpdoelen zie paragraaf 2.
237