JLE 04 - Eerste zicht op de Javawereld
We hebben zowel in Notepad als in Eclipse ons eerste Java-applicatie geschreven. De applicatie heeft niet veel om het lijf en schrijft enkel een boodschap naar het scherm. Maar het geeft ons al een gelegenheid om kennis te maken met enkele basisprincipes van Java.
package : een package of pakket is een manier om samenhorende klassen te groeperen. Als je Java installeert, krijg je ook een hele reeks klassen erbij geleverd. Deze klassen of classes zijn gegroepeerd in packages. Men spreekt ook wel van de Java class library of Java klassenbibliotheek.Als ontwikkelaar kan je je eigen klassen schrijven. Zoals we reeds eerder gezien hebben, krijg je een waarschuwing als je een nieuwe class maakt zonder de naam van een package op te geven.
Als je een webapplicatie ontwikkelt, is het de gewoonte dat je je classes indeelt in packages die verwijzen naar de URL van de webstek waar de applicatie draait. Zo zal je bijvoorbeeld een klasse Debiteur hebben die in het pakket org.mijnwebstek.facturatie zit. Op deze manier voorkom je problemen als er verschillende classes Factuur of Invoice zijn : via de package weet je waar de klasse thuishoort. In dit geval hebben we de package de naam “Inleiding” gegeven. Vervolgens geeft de puntkomma ; weer dat de instructie hier is afgesloten.
Public : dit sleutelwoord geeft aan dat de klasse publiek toegankelijk is. Andere klassen kunnen hier dus zonder enige beperking van gebruik maken. Andere sleutelwoorden die de toegang beheren zijn private en protected. We komen hier later nog op terug.
Class : een class of klasse is de basis van een Java-applicatie. Het is een verzameling van methodes en attributen die logisch gezien bij elkaar horen. In een Java-applicatie zal minstens één van de classes de methode main() bevatten. Dit is het startpunt van de applicatie. Vandaaruit worden dan andere classes opgeroepen. Of beter : de methodes van die classes worden opgeroepen. Classes onderling communiceren met elkaar door mekaars methodes te gebruiken.
In dit voorbeeld wordt Class gevolgd door de naam van de klasse, HelloWorld. Het is een afspraak om de naam van de klasse altijd met een hoofdletter te laten beginnen. Verder wordt ieder nieuw woord in de naam met een hoofdletter geschreven : vandaar de naam HelloWorld.
/** @Param args */ : deze lijn is commentaar en wordt door de compiler genegeerd. Het gaat hier enkel om tekst die de lezer van deze code informatie wil geven over de code.
Public : zoals reeds gezegd, geeft dit sleutelwoord aan dat hetgeen dat volgt publiek toegankelijk is. Alleen gaat het dit keer niet om een klasse, maar om een methode, met name main().
Static : een methode die als static wordt omschreven, is een methode die je kan aanroepen vooraleer er een object van gemaakt is. Een object staat ten opzicht van een klasse zoals een voorwerp tegenover de blauwdruk van het voorwerp. Denk hierbij aan het plan van een appartement : het plan is de klasse, het appartement is dan het object. En met één plan, kan je meerdere appartementen zetten. Hetzelfde geldt voor een klasse : één klasse kan dienen om meerdere objecten aan te maken. Met static geef je aan dat de methode van deze klasse rechtstreeks gebruikt kan worden zonder dat er eerst een object van gemaakt moet worden. Op de relatie tussen klassen en objecten komen we later uitgebreid terug.
Void : iedere methode in Java wordt verondersteld een resultaat weer te geven. Als een methode geen resultaat teruggeeft, dan wordt dit aangeduid met “void”.
Main() : main kan je vertalen met “hoofd” : denk maar aan main street, main page. Dit is het startpunt van de applicatie. Als we in de Windows DOS box (het “zwarte scherm”) het commando java HelloWorld intikten, wist de Java Virtual Machine dat het oproepen van de class HelloWorld gelijkstond met het starten van de methode main().
Main() wordt gevolgd door de parameters die tussen haakjes staan. String args[] is een array of reeks van strings of karakterreeksen. Je kan dus parameters opgeven aan de klasse als je dat wil. Dit doe je door achter het commando Java HelloWorld een aantal parameters op te geven, zoals bijvoorbeeld Java Helloworld 20. In de code van HelloWorld.java kan je dan de inhoud opvragen van de parameters. We zullen daar later nog een voorbeeld van zien.
Vervolgens staat er een accolade {: deze linkeraccolade hoort steeds bij een rechteraccolade } en geeft aan waar de methode main() begint en waar ze eindigt. Het gebruik van de accolades zullen we later nog wel tegenkomen als een middel om aan te geven waar een reeks samenhorende instructies beginnen en waar ze eindigen.
System.out.println() : dit is het commando dat ervoor zorgt dat er een karakterreeks of String wordt getoond op het scherm. De methode println staat voor printline, dus druk af en ga naar de volgende lijn. Voor de methode staat er System.out : iedere methode hangt immers van een klasse af.
System is de naam van de klasse, out is een veld van deze klasse en println() is een methode die bij het veld of attribuut out hoort. We maken hier dus gebruik van de Java classes die zijn meegeleverd bij de installatie van de Java Software Development Kit.
| Naast het venster van de editor staat de outline of het schematisch zicht op de klasse HelloWorld. De package inleiding wordt voorgesteld met het ikoon van een pakket : . De class HelloWorld wordt voorgesteld door een C in een groene cirkel. Verder geeft de driehoek aan dat deze classe een main() methode bevat : De methode main() wordt voorgesteld door een groene bol. De rode S geeft aan dat de methode static is : | ![]() |
| De installatie van Java levert een hele reeks Java classes op die geïnstalleerd worden. Eclipse laat die overigens ook zien. In de package explorer zie je een verwijzing naar deze geïnstalleerde klassen. Het project JLE omvat niet alleen de package “inleiding”, maar tevens de JRE System Library. Hieronder zitten de jar’s of Java archive. Deze bestanden worden voorgesteld door een kruik; jar is immers ook de Engelse term voor “kruik”. Een jarfile is te vergelijken met een zipfile : ze bevat andere bestanden in een gecomprimeerde vorm. Je kan een jar overigens ook openen met het programma Winzip. |
|
| Voor rt.jar staat een plusteken : dit betekent dat dit een knooppunt is in de boomstructuur met onderliggende informatie. Klik op het plusteken : de plus verandert nu in een minteken, en je krijgt de onderliggende informatie te zien. |
|
| Onder rt.jar zie je een aantal packages te herkennen aan het pictogram van het pakketje. Gezien het aantal packages, kan je nu naar beneden scrollen tot je aan java.lang komt. Java.lang is één van de centrale packages of pakketten van de Java programmeertaal. Klik op het plusteken voor java.lang om de inhoud van dit pakket te zien. |
/td>
|
| Je kan nu alle classes van java.lang bekijken. Rol naar beneden tot je aan System.class komt. Ook hier kan je klikken op het plusteken voor System om de inhoud van deze class te bekijken. Je herkent alvast het statische veld “out” dat we gebruikt hebben voor de println() methode. |
|
Is het nu de bedoeling om in deze jar files te bladeren om de gewenste methode te zoeken ? Dit is veel te omslachtig, en dus biedt Java een betere methode aan om in de Java bibliotheek te snuisteren : Javadoc. Op java.sun.com/j2se/javadoc/ krijg je een overzicht van Javadoc, de tool om Java documentatie aan te maken en in deze documentatie op te zoeken.
De documentatie gegenereerd door Javadoc vind je onder “go to J2SE 1.5.0”.
Als je op deze linkt klikt, kom je op het volgende scherm terecht.
Het scherm bestaat uit 3 gedeeltes :
| Om informatie terug te vinden over de klasse System, scrollen we links bovenaan naar beneden tot we java.lang zien staan. Vervolgens klikken we op java.lang. Dit zorgt ervoor dat we links onderaan enkel de classes zien staan die in het pakket java.lang zitten. |
|
| Links onderaan verschijnt dan Java.lang met alle interfaces en classes die hierbij horen. |
|
Hier kan je dan scrollen tot je System ziet. Als je op System klikt, krijg je aan de rechterkant de documentatie te zien die hierover geschreven is.
Klik op “out” onder Field Summary, en je ziet alle informatie die met dit velkd te maken heeft.
Het goede nieuws is dat je met Javadoc een informatiebron hebt waar je meer in detail kan bekijken welke classes en methodes er beschikbaar zijn. Het slechte nieuws is dat je niet alleen met Javadoc van start kan gaan. Je hebt nog altijd handleidingen nodig die je informatie geven over de classes die je kan nodig hebt voor het ontwikkelen van Java applicaties. Javadoc is eerder een hulpbron die je helpt als je foutmeldingen krijg bij bepaalde klassen of methoden. Je mag immers niet vergeten dat klassen en methodes aangepast worden als we van de ene versie van Java naar de andere overgaan. En een boek baseert zich altijd op een bepaalde versie terwijl je zelf met een meer recente versie kan werken. Dat levert soms wel eens problemen op en Javadoc is dan het werkmiddel bij uitstek om te zoeken naar de oorzaak van deze foutmeldingen.
| Je kan er ook voor kiezen om Javadoc op je harde schijf te installeren. Op de webpagina java.sun.com selecteer je downloads en vervolgens Java SE. |
|
Op de volgende webpagina selecteer je J2SE 5.0 documentation. Klik op de download knop.
Vervolgens krijg je de kans te kiezen tussen de Engelse en de Japanse versie.
Daarna wordt een zipbestand op je harde schijf afgeladen. Dubbelklik op het ikoon van dit zipbestand om het te openen.
Je ziet een overzicht en via de Extract-knop kan je vragen om de inhoud uit het zipbestand uit te pakken en op je harde schijf te plaatsen in de folder die je daarvoor hebt aangeduid. In het scherm hieronder hebben we gekozen voor de folder Javadoc 5.0 op de C-schijf.
In Javadoc zit een folder “docs” genaamd. Open deze folder en dubbelklik op het bestand “index.htm” om de Javadoc documentatie te openen.
Onder de titel JDK 5.0 Documentation zie je API&Language als link. Klik hierop; je gaat naar een andere plaats in de webpagina. Klik vervolgens op Java 2 Platform API Specification. Je krijgt nu hetzelfde scherm te zien als op op java.sun.com/j2se/1.5.0/docs/api/.