Java 2 1.5: basisbegrippen

  1. Inleiding
  2. Java verkrijgen en installeren
  3. Inleidend voorbeeld
  4. Code voorzien van commentaar
  5. Java-pakketten en klassen integreren
  6. Applets
  7. Venstergebaseerde toepassingen

Inleiding

Er bestaan heel wat verschillende programmeertalen en technieken. Java is een objectgeoriënteerde programmeertaal.

Het is de bedoeling om met deze cursus een goed inzicht te krijgen in de werking van Java, wij gebruiken hiervoor Java 2 versie 1.5.0 soms ook gewoon afgekort tot Java 2 5.0 (men laat de eerste een vaak wegvallen). We spreken voluit over Java 2 Standard Edition 5.0 (J2SE 5.0)

Java werd ontwikkeld in 1991 door Sun Microsystems. In die tijd werd voor de taal nog de naam Oak gebruikt. Het opzet was een platformonafhankelijke, objectgeoriënteerde taal te ontwikkelen. Doordat Java platformonafhankelijk is, is deze taal met de opgang van het internet heel snel bijzonder populair geworden. Oak werd tot Java omgedoopt in 1995.

Jouw computer kan Java programma's draaien wanneer deze beschikt over een Java Virtual Machine (JVM), de toepassing die het Java-programma feitelijk uitvoert.
Wanneer je later een Java-programma schrijft zal je het bestand dat je code bevat (.java) moeten compileren vooraleer het kan worden uitgevoerd. Java-programma's worden niet gecompileerd tot direct uitvoebare bestanden, maar tot zogenaamde bytecode (.class). Het zijn deze bytecodes die de JVM leest en interpreteert om jouw programma uit te voeren.
Omdat het programma eerst in machine-onafhankelijke bytecode wordt omgezet kan het later door om het even welk systeem dat over een JVM beschikt worden uitgevoerd.
Sinds Java 2 wordt de bytecode niet meer regel per regel geïnterpreteerd, dit was echter een struikelblok voor veel programmeurs daar interpretatie een 'traag' proces is. De bytecode wordt nu Just-In-Time (JIT) gecompileerd. De JIT-compiler is in de JVM ingebouwd en compileert in feite secties van het bytecode-bestand in machinetaal, zodat het programma sneller kan worden uitgevoerd.

Het gebruik van deze tussenliggende bytecode geeft als gevolg dat deze bestanden heel compact zijn, en derhalve uiterst geschikt voor het internet. De JVM kan ook strikt toezicht houden over wat er precies gebeurt tijdens de uitvoering van een Java-programma, wat ten goede komt aan de beveiliging tegen kwaadaardig gebruik van code.

Java is niet enkel op het internet gericht: in feite zijn er twee types programma's in Java -een voor gebruik op het internet en een voor lokaal gebruik.

Ook moet worden vermeld dat browsers niet altijd up-to-date zijn voor het gebruik van de meest recente versies van Java. Daarom zal het in deze cursus soms nodig zijn bepaalde bestanden te downloaden en lokaal te laten uitvoeren in bijvoorbeeld de appletviewer van Sun. Meer hierover in het volgende onderwerp: Java verkrijgen en installeren.

Java verkrijgen en installeren

Alles wat je nodig hebt om thuis Java-programma's en applets uit te voeren en te ontwerpen kan je downloaden van het internet.

Je kan de Java2 Standard Edition Software Development Kit (J2SE SDK) downloaden van de website van Sun De gebruikte versie is 1.5 of later. Je er ook meteen de Netbeans IDE bijnemen, dan beschik je straks meteen over een editor: een programma om op een gebruiksvriendelijke manier Java-toepassingen te maken.

Deze cursus spits zich toe op het programmeren in Java, en behandelt enkel de code. De keuze van een editor laat ik aan jou over.

Een handleiding tot Netbeans IDE 4 beta 2 vind je op het internet.

Voor het gebruik van deze IDE is het misschien handig eerst NetBeans 3.6 te gebruiken. In versie 4 beta 2 moet je voor elke toepassing een project maken, deze IDE genereert dan tal van andere bestanden, voor kleine toepassingetjes zoals deze in de cursus werkt dit nogal vervelend.

Een andere goede editor is BlueJ, deze editor is specifiek ontworpen voor het Java-onderwijs.
Een handleiding tot het gebruik van BlueJ is ook te vinden op het internet.

Nadat je Java2 1.5 SDK hebt gedownload volg je verder de installatiestappen na het openen van het bestand.

Je moet er wel voor zorgen dat het besturingssysteem van je computer de bestanden die werden meegeleverd in de SDK kan vinden. Daarvoor voeg je de naam van de map die deze bestanden bevat toe aan de PATH-variabele van je systeem, bij een standaard-installatie van bovengenoemde SDK is dit:
C:\jdk1.5.0\bin

Instellen PATH-variabele:

Door deze instelling aan te brengen kan je de hulpprogramma's die zich in deze map bevinden gebruiken zonder telkens het volledige pad op te geven in de opdrachtregel.

Anciens op Java-gebied zullen zich misschien af vragen of ook de CLASSPATH-variabele moet worden ingesteld. Deze variabele geeft waar waar de veelgebruikte klassebestanden zich bevinden. De interne Java-bibliotheekbestanden zullen standaard gevonden worden, daar de CLASSPATH-variabele tijdens installatie van de JAVA2 SDK deze instellingen regelt. Heb je echter nog andere mappen met zelfgemaakte klassen die je hier wenst op te nemen, dan zal je de CLASSPATH-variabele moeten instellen bij het compileren van je bestanden. Je kan de instellingen voor de CLASSPATH-variabele analoog instellen als de PATH-variabele, je zal de variabele eventueel wel nog zelf moeten toevoegen.

Inleidend voorbeeld

Schrijven van Java-code

Gebruik een editor naar keuze en geef volgende code in (je kan zelfs kladblok gebruiken als je dat wenst):
public class app
{
	public static void main(String[] args)
	{
		System.out.println("Groeten van Java");
	}
}

Uitvoeren van Java-code

Gebruik je een editor met ingebouwde compiler en console, dan kan je deze code hierin uitvoeren.
De zin "Groeten van Java" verschijnt op het scherm.

Gebruik je geen speciale editor, maar heb je de code met bvb kladblok ingegeven, onderneem dan volgende stappen:

  1. Sla het bestand op als app.java in een map naar keuze.
  2. Open de opdrachtprompt:
    start - uitvoeren - cmd of command
  3. Lokaliseer de map waarin app.java is opgeslagen.
    DOS-opdracht : cd mapnaam (Change Directory)
  4. Geef volgende opdracht:
    javac app.java
  5. Geef de opdracht:
    java app
In de console verschijnt nu de zin "Groeten van Java"

De opdracht javac app.java zorgt ervoor dat de Java-compiler, die javac (.exe voor Windows) wordt genoemd, de Java-code omzet in bytecode. De Java-compiler neemt het bestand app.java aan en vertaald de Java-instructies in bytecode. Hierbij wordt een nieuw bestand gecreëerd met de naam app.class. Als er zich fouten voordoen gaat de Java-compiler je daar attent op maken. Wanneer de Java-compiler javac met succes heeft gecompileerd naar bytecode bevat het .class-bestand app.class alles wat de Java Virtual Machine van de computer nodig heeft om objecten van de app-klasse te maken.

Voor het compileren vanaf de opdrachtprompt met de opdracht javac kan je tal van opties instellen. Meer hierover op de website van Sun.

De opdracht java app zorgt ervoor dat het Java-hulpprogramma java (.exe) de JVM feitelijk laat draaien. Het programma wordt uitgevoerd!

Meer over de opdracht java op de site van Sun.

Het programma app ontleed

Nu gaan we stap voor stap de code van het programma dat we hebben gemaakt ontleden.
public class app
{
	public static void main(String[] args)
	{
		System.out.println("Groeten van Java");
	}
}

De eerste regel geeft aan dat we een nieuwe Java-klasse met de naam app maken:

public class app
{
	...
}
Nadat we deze klasse in bytecode hebben vertaald zal de JVM objecten van deze klasse kunnen maken en uitvoeren. Het sleutelwoord public geeft aan dat de klasse toegankelijk is vanuit elk punt van de toepassing. Wanneer je een klasse publiek maakt, dan staat Java erop dat je het bestand naar die klasse noemt. Dit wil zeggen dat je slecht één publieke klasse in een .java bestand kan hebben.

De feitelijke implementatie van de klasse staat tussen twee accolades.

Met de volgende regel maken we een methode in de app-klasse:

public class app
{
	public static void main(String[] args)
	{
		System.out.println("Groeten van Java");
	}
}

Een methode kan je vergelijken met functies en subroutines uit het gewoon programmeren: het een blok code waaraan je de controle kan doorgeven en die een waarde kan terugleveren.

Methoden bieden een handige manier waarop code in één functionele eenheid kan worden verpakt. Wanneer een methode wordt aangeroepen wordt de code die in de methode opgegeven is uitgevoerd door de JVM.

Hier heeft de methode de naam main, dit is de eerste methode die de JVM zoekt wanneer de toepassing wordt gestart. Wannneer de JVM deze methode vindt geeft de JVM de controle eraan door. De methode main heeft een aantal vereisten:

public class app
{
	public static void main(String[] args)
	{
		System.out.println("Groeten van Java");
	}
}

Dit is de regel code die al het werk doet. Hier gebruiken we code die de makers van Java reeds hebben voorgeprogrammeerd om de zin "Groeten van Java" op het scherm te zetten.

Hier wordt meer bepaald de klasse System van het pakket java.lang gebruikt. De klasse System bevat een veld (gegevenslid) met de naam out, en dit veld heeft een methode println. De methode println zorgt voor de eigenlijke weergave van de zin. De zin "Groeten van Java" wordt als argument aan deze methode doorgegeven.

Merk op dat een Java-instructie beëindigd wordt met een punt-komma!

Andere methoden om tekenreeksen naar de console te sturen zijn print en nieuw vanaf versie 1.5 printf.

Code voorzien van commentaar

Code kan soms cryptisch en moeilijk te lezen zijn. Vandaar dat het belangrijk is dat je de code die je schrijft voorziet van het nodige commentaar.

In Java plaats je 1 regel commentaar na //
Een commentaarblok omgeef je met /* en */
Commentaar voor javadoc-informatie plaats je tussen /** en */.
Javadoc stelt de programmeur in staat automatisch een beschrijving van de code te gegerenen in HTML-formaat.

/* ******************************************
 * Klasse app
 * breng tekst op het scherm
 * ******************************************/
public class app
{
	public static void main(String[] args)
	{
		//hier plaatsen we de tekst op het scherm
		System.out.println("Groeten van Java");
	}
}

Java-pakketten en klassen integreren

De klassen die de programmeurs van Sun hebben geschreven, en die jij kan gebruiken in je eigen toepassingen worden opgeslagen in pakketten of bibliotheken. Om een klasse in een pakket voor jouw code beschikbaar te maken, moet je dat pakket importeren, wat betekent dat de compiler in dat pakket naar klassen gaat zoeken. Je kan ook afzonderlijke klassen importeren. Standaard zijn alleen de elementaire Java-instructies voor jou beschikbaar: deze uit het kernpakket java.lang. Dit pakket wordt door de compiler automatisch voor jou geïmporteerd. Om ander klassen te importeren maak je gebruik van de import-instructie.
import java.util.Date;
public class datum {

    public static void main(String[] args) {
        System.out.println("Vandaag:" +new Date());
    }
}
Wens je alle klassen uit een pakket te importeren, dan kan je de naam van het pakket laten volgen door .*
import java.util.*;
public class datum {

    public static void main(String[] args) {
        System.out.println("Vandaag:" +new Date());
    }
}

Applets

Applets maken

import java.applet.Applet;
import java.awt.*;
public class tekstapplet extends java.applet.Applet {
    public void paint(Graphics g) {
        g.drawString("Groeten van Java",50,100);
    }
}

Standaardapplets zijn gebaseerd op de Applet-klasse die deel uitmaakt van het pakket java.applet. De klasse Applet heeft in principe haar eigen paint-methode, maar we kunnen die methode vervangen door onze eigen paint-methode te definiëren.

De methode paint die we gebruiken in dit voorbeeld is in feite onderdeel van de Java Abstract Windowing Toolkit (AWT), die je in deze cursus vaak zal tegenkomen. De klassen uit het awt-pakket hebben we in deze toepassing geïmporteerd.

Aan de paint-methode wordt een Java-object van de klasse Graphics doorgegeven, dit object wordt in de code g genoemd. Je kan de drawString-methode van dit object gebruiken om de tekst te tekenen. De laatste twee argumenten in de drawString-methode zijn de afstanden in pixels ten opzichte van de linkerbovenhoek van de applet. De waarde 50 is de afstand ten opzichte van de linkerkant, 100 is de afstand ten opzicht van de bovenkant.

Applets weergeven

Om een applet weer te geven kan je gebruik maken van een HTML-pagina. Je kan de applet inbedden met behulp van de APPLET-tag (of de OBJECT-tag).
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
   <TITLE>Applet HTML Pagina</TITLE>
</HEAD>
<BODY>
<APPLET code="tekstapplet.class" 
		width="350"
		height="200">
</APPLET>
</BODY>
</HTML>

Je kan nu gebruik maken van de appletviewer van Sun, die met Java wordt meegeleverd, om tekstapplet.html te openen geef je dan de volgende opdracht aan de prompt:

appletviewer tekstapplet.html

Je kan de pagina natuurlijk ook openen in een browser die Java ondersteund.

Applets met NetBeans

De editor Netbeans IDE zorgt automatisch voor het aanmaken van een HTML-pagina bij het compileren van het .java-bestand.

Zorg ervoor dat je de map met de html-pagina eerst localiseert.

De editor NetBeans bevat templates voor het maken van Java-toepassingen.
Wanneer je een applet maakt met NetBeans hoef je bepaalde codefragmenten dus niet meer in te tikken.

Hier heb ik enkel de aangeduide code ingegeven:

import java.awt.*;

/*
 * tekstapplet2.java
 *
 * Created on 18 oktober 2004, 10:32
 */

/**
 *
 * @author  Administrator
 */
public class tekstapplet2 extends java.applet.Applet {
    
    /** Initialization method that will be called after the applet is loaded
     *  into the browser.
     */
    
    public void paint(Graphics g) {
        g.drawString("Groeten van Java",50,100);
    }
    
    
    public void init() {
        // TODO start asynchronous download of heavy resources
    }
    
    // TODO overwrite start(), stop() and destroy() methods
}
Merk op dat de regel import java.applet.Applet; niet hoeft gebruikt te worden.

Venstergebaseerde toepassingen maken en uitvoeren

import java.awt.*;
import java.awt.event.*;

class AppFrame extends Frame
{
    public void paint(Graphics g)
    {
        g.drawString("Groeten van Java", 50, 100);
    }
}

public class tekstvenster
{
    public static void main(String[] args)
    {
        AppFrame f = new AppFrame();
        f.setSize(200,200);
        f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});
        f.show();
    }
}
Sla dit document op als tekstvenster.java
compileer met javac tekstvenster.java
voer uit met java tekstvenster of met javaw tekstvenster (nu kan je het promptvenster sluiten zonder de toepassing te verliezen).

Je ziet een venstergebaseerde toepassing.
Meer hierover volgt later in de cursus.

Opmerking !

Wanneer je met editoren werkt moet je wel opletten, je kan dikwijls niet zomaar code kopiëren en plakken en daarna onmiddellijk zonder problemen uitvoeren. Netbeans IDE houdt voor de java-projecten een .nbattrs-bestand bij om te weten of een toepassing als console/venster-applicatie of als applet moet worden geopend. De uivoering is namelijk anders (er moet al dan niet een webpagina worden gemaakt).

Meer tutorials:
leer ook: html | xhtml | css | asp | asp.net | c# | ado.net | linq | ajax | java | javascript
Valid HTML 4.01! Valid CSS! © - Cursusweb