Skip to ContentSkip to Navigation
Maatschappij/bedrijvenCentrum voor Informatie TechnologieResearch and Innovation SupportVirtual Reality en Visualisatie

Iets over JAVA

Jan Kraak

Verscheen in Intercom in 1997

Met de programmeertaal Java kan veel meer dan de simpele animaties die er tegenwoordig nog vaak mee worden gemaakt. Behalve voor commerciële toepassingen, is er ook veel emplooi voor Java te vinden in de academische wereld, zoals bij computer ondersteund onderwijs via Internet. Verder is Java onder meer nuttig voor platform-onafhankelijke gedistribueerde verwerking. In Java programmeren is lang geen sinecure, maar gelukkig zijn er krachtige hulpmiddelen beschikbaar.

Inleiding

Wie over het World Wide Web surft komt ze vaak tegen: simpele animaties in de vorm van wuivende poppetjes en lopende teksten. Verder ziet men bijvoorbeeld buttons die oplichten als ze worden aangeraakt. Deze objecten, die vaak alleen maar dienen om aandacht te trekken, zijn het resultaat van programmaatjes, applets genaamd, geprogrammeerd in Java. Applets worden samen met de HTML-pagina door Netscape of andere Web-browsers opgehaald van een Web-server en vervolgens op het beeldscherm tot leven gebracht.

Al enige tijd staat Java geweldig in belangstelling. In academische boekwinkels buigen de boekenplanken diep door onder de last van de vele Java-boeken, die vaak meer pagina's hebben dan de Bijbel. En wie een applet heeft geschreven, stijgt onmiddellijk in de achting van collega's.

Als je het eenmaal kunt, is het spelen met en het exploreren van Java een aardig tijdverdrijf. Maar dat is niet de enige reden van de populariteit van Java, je kunt er ook praktische dingen mee maken. Hierover gaat dit artikel, maar eerst in het kort iets over de taal zelf.

Object georiënteerd

Bij oppervlakkige beschouwing van de code van een Java applet lijkt die wel wat op de programmeertaal C, maar bij nadere bestudering van de functie van de verschillende onderdelen blijken er toch aanzienlijke verschillen te zijn. Java is namelijk een object taal. Een object bestaat uit variabelen die de toestand beschrijven en methoden die het gedrag bepalen.

Een schoolvoorbeeld van een object-georiënteerd systeem is een grafische gebruikers interface (GUI), waarin verschillende objecten zijn te onderscheiden zoals windows, buttons en scrollbars. De variabelen van een button object bepalen bijvoorbeeld de kleur en de grootte. Een button methode bepaalt wat er gebeurt als je er op drukt.

Object georiënteerde talen zoals Java kennen een aantal kernconcepten zoals data-abstractie, inheritance en polymorfisme waar hier verder niet op wordt ingegaan. Java is gedeeltelijk afgeleid van C++, hierbij zijn echter allerlei lastige aspecten weggelaten. Daarom hebben C++ programmeurs weinig moeite om Java te leren - diegenen die gewend zijn om in C of FORTRAN te programmeren, moeten zich echter een nieuwe object-georiënteerde denktrant eigen maken.

Write once, run anywhere

De compiler van een conventionele programmeertaal zet de sourcecode direct om in machine-instructies. Dit betekent dat een programma opnieuw moet worden gecompileerd bij wisseling van type computer. De Java-compiler (javac) produceert daarentegen een computer-onafhankelijke bytecode, bestemd voor een abstracte of virtuele machine, de Java Virtual Machine - afgekort tot JVM. Wil men Java op een bepaald platform draaien, dan is daarvoor een implementatie van de JVM nodig. In de begintijd van Java was dat het afzonderlijke programma HotJava, maar tegenwoordig heeft elke Web-browser, zoals Netscape Communicator, een JVM die automatisch de Java bytecode van een applet interpreteert en uitvoert. Bij het ontwerp van Java is veel aandacht besteed veiligheid, zie voor meer details Java Security FAQ en Providing Your Own Security Manager.

Tegenwoordig zijn voor elk platform Web-browsers met Java beschikbaar (die hoeven natuurlijk nog niet overal geinstalleerd te zijn), het maakt niet uit of het een UNIX- platform, een Macintosh of een PC is. Dit betekent dat Java applets overal gedraaid kunnen worden, hetgeen uniek is in de computerwereld. Een van de bekendste slogans van Java is dan ook "Write once, run anywhere".

Commerciele toepassingen

Huidige HTML Web-pagina's bevatten soms invulformulieren, bijvoorbeeld om in te tekenen voor een cursus. Pas na invulling van alle invoervelden wordt de informatie naar een programma op een bepaalde computer gestuurd, waarbij een invulfout pas na enige tijd wordt terug gemeld. In deze nogal starre manier van interactie in Web-pagina's is een aanzienlijke verbetering aan te brengen met behulp van Java applets die zijn voorzien van een volwaardige grafische gebruikersinterfaces met windows, buttons, scrollbars etc. In applets kan men tevens het ingevoerde testen en er onmiddellijk op reageren. Door de ingevoerde gegevens vervolgens te koppelen met grote databases en bijbehorende programmatuur, denken veel commerciële instellingen, zoals banken of verzekeringsmaatschappijen, hun klanten in de toekomst op een zo persoonlijk mogelijke manier te kunnen benaderen. Alles wat u antwoordt op vragen wordt onthouden, zodat u bij een volgend bezoek aan de site nog persoonlijker kan worden benaderd. Voor het zover is moet er echter nog wel het een en ander gebeuren: de lijnen moeten sneller worden, de beveiliging moet worden verbeterd etc. Maar de verwachtingen zijn hoog gespannen. Hetzelfde geldt voor smart cards die hier alleen maar worden genoemd.

Systolic parallel processing

In een academische omgeving is er ook veel emplooi voor Java. Men kan de taal zelf gebruiken om studenten object georiënteerd te leren programmeren of om gebruikersinterfaces te leren maken. Maar men kan ook applets maken die helpen bij het doorgronden van moeilijke concepten, vooral de animatie- mogelijkheden zijn daarvoor geschikt.
Als voorbeeld nemen we een applet van het algoritme van Cannon voor de parallelle vermenigvuldiging van twee n*n matrices. C is het product van de matrices A en B, genoteerd als C=A.B. Voor de vermenigvuldiging van twee 4*4 matrices moet een computer met een enkele processor 64 maal een vermenigvuldiging gevolgd door een optelling uitvoeren. Een parallelle computer met 16 processoren, die zodanig aan elkaar zijn gekoppeld dat de matrix-elementen steeds bij de juiste processoren komen, kan daarentegen dezelfde matrix- vermenigvuldiging in slechts vier stappen uitvoeren, dus 16 maal zo snel. Onderstaande figuur toont een met Java gerealiseerde schematische voorstelling van de 16 processoren, samen met de array-elementen die door deze processoren worden verwerkt.
Hier klikken voor Cannon's applet (600*600)

Na het indrukken van de knop 'begin Cannon' krijgt u de configuratie voor de eerste stap. Het vierkantje rechtsonder stelt bijvoorbeeld een processor voor die eerst A(4,3) vermenigvuldigt met B(3,4) en daarna het resultaat optelt bij C(4,4), de andere vierkantjes doen tegelijkertijd iets soortgelijks. Raken we met de muis de button 'next' aan, dan bewegen de array elementen van A en B zich synchroon naar een volgende processor. Pijlen geven de bewegingsrichting aan, waarna de 16 processoren weer hun werk doen. Na nog twee stappen is de bewerking al klaar.
Via deze applet wordt de stroom van data door het netwerk van processoren, een zogenaamde systolische array, geïllustreerd. Dit is een illustratie van slechts een van de vele fascinerende algoritmen zoals die te vinden zijn in het boek 'Systolic Parallel Processing' van prof. dr. Nikolay Petkov. In hetzelfde boek staat ook een matrix- transpositie waarvoor door Udo Hettema, student Informatica, een applet is gemaakt.
De hiervoor genoemde matrix-vermenigvuldiging applet is hiervan afgeleid, het aantal veranderingen was tamelijk gering. Dit is in overeenstemming met de veelgehoorde bewering dat object- georiënteerde programma's gemakkelijk aangepast en hergebruikt kunnen worden.

Gedistribueerde verwerking

Behalve voor onderwijsdoeleinden kan men Java applets ook goed gebruiken om bestaande applicatieprogramma's en/of grote databases op Internet beschikbaar te stellen. Men schrijft dan de gebruikersinterface met Java die vervolgens de invoer naar een applicatieprogramma stuurt voor het 'echte werk' dat zich ergens op een computer in het netwerk bevindt. Deze vorm van gedistribueerde verwerking gaat via het zgn. client-server concept, waarbij de Java applet de client is. Zo kunt u een programma voor demonstratie-doeleinden aan de hele Internet-wereld beschikbaar te stellen, zonder dat u daarbij de code vrijgeeft (let op: applets zelf kunnen worden gedecompileerd, 'Write once, steal everywhere').
Voorbeelden:
  • demo-applet van MicroAVS
  • grating cell operator van drs. Peter Kruizinga (Informatica)
  • WebVizard - Geographic Information System
  • IFC Examples of JWAVE Components

Volgens dezelfde techniek zijn bij het AMC in Amsterdam het ziekenhuis-informatiesysteem, een image database, een medisch literatuursysteem en een tekst database beschikbaar gemaakt voor medici met een Internet-aansluiting (het Zouga project). Momenteel wordt de bediening van de telescopen van het W.M. Keck Observatorium op Hawaii met behulp van een Java-interface via het Internet platform-onafhankelijk gemaakt, zodat astronomen straks vanuit huis en overal op de wereld er mee kunnen werken. Het spreekt van zelf dat voor deze toepassingen zekere restricties gelden zodat niet iedereen er bij kan.

In Java versie 1.0 was het mechanisme voor gedistribueerde verwerking nog wat primitief: men moest zelf tamelijk veel programmeren en de koppeling was nogal 'los' etc. In de huidige versie 1.1 gaat het gemakkelijker en beter, met nieuwe technieken zoals RMI (Remote Method Invocation) en vooral JDBC (Java Data Base Connectivity), voor communicatie met SQL- databases. Binnenkort wordt Netscape uitgebreid met Corba.

Java beans

Binnen slechts een paar jaar is Java vanuit het niets uitgegroeid tot een vakgebied met een eigen jargon, waaraan men bijna een volledige dagtaak kan hebben om het volledig te overzien en om het bij te houden, omdat alles razendsnel verandert.

Wie reeds kan programmeren, zal niet veel moeite hebben met de syntax van Java. Wat meer moeite zal het echter kosten om een programma in termen van objecten op te zetten. En nog weer lastiger is het om een beetje overzicht te krijgen over de vele class libraries (een class is een algemene definitie van een object) die mede de grote kracht van Java uitmaken: hierdoor hoeft men niet alles vanaf de grond op te bouwen. Met de AWT (Abstract Window Toolkit) class library kan men bijvoorbeeld grafische gebruikersinterfaces maken. Opgemerkt moet worden dat class libraries ook vaak API's (Application Programming Interface's) worden genoemd.

Het zal duidelijk zijn dat het maken van een volwassen toepassing van Java in het begin veel tijd kost (vooral het maken van een echte gebruikersinterface is eigenlijk 'gekkenwerk'). Gelukkig zijn er kant-en-klare software componenten en ontwikkelomgevingen te krijgen. Van groot belang zijn de zgn. Java beans: volgens bepaalde afspraken geconstrueerde onafhankelijke Java objecten, zoals onderdelen van gebruikersinterfaces. In een geintegreerde ontwikkelomgeving met een visuele editor (IDE) kan men beans aan elkaar kan 'knopen', net zoals bij Visual Basic. Op deze manier kan men Java applets maken zonder ook maar een regel code te hoeven schrijven. Zonder gebruik van beans generen deze ontwikkelomgevingen Java code, waarin men bijvoorbeeld nog de code voor methoden aan moet toevoegen, hetgeen ook een grote versnelling in ontwikkeltijd oplevert vergeleken met het geval dat men alles 'met de hand' zou moeten programmeren. Er komen steeds meer verzamelingen beans op de markt, mede hierdoor zal het aantal nuttige Java-toepassingen waarschijnlijk snel toenemen

Laatst gewijzigd:15 juni 2016 11:58