# Programmeren in Java/Printversie

Programmeren in Java
Er bestaat nog geen infobox voor dit boek. Klik hier om die aan te maken.
Wat is Java? Java is een objectgeoriënteerde (OO) taal. Dit wil zeggen dat je alles beschrijft zoals in het dagelijkse leven. Je hebt objecten, en deze objecten bezitten eigenschappen (variabelen) en kunnen handelingen verrichten (methoden). Meestal schermt men in Java de variabelen en de implementatie van elk object af van de buitenwereld (data hiding en encapsulatie).
Java is tegenwoordig een van de populairste programmeertalen voor zowel opleiding als praktische uitvoering. Dankzij de uitgebreide API en de platformonafhankelijkheid is Java zeer toegankelijk als basis om de concepten van objectgeoriënteerd programmeren verder uit te diepen.
Java is een gecompileerde, maar platformonafhankelijke taal. Programmacode wordt naar een speciale binaire bytecode omgezet die door een Java Virtual Machine (JVM) wordt uitgevoerd. Elk programma hoeft maar één keer gecompileerd te worden om op verschillende met JVM uitgeruste systemen te draaien. Dit is meteen de sterkte en de zwakte van Java. De JVM leest de bytecode in en zet deze om naar platformafhankelijke acties, dit vraagt tijd, Java is dus niet de snelste taal. Maar programma's in Java werken wel op elk besturingssysteem zonder dat je de code moet aanpassen of gewoon volledig moet hercoderen (in tegenstelling tot talen als C++ of Objective-C).

## Inhoud

* Inleiding
* Installatie
* Hulpmiddelen

### Basis

* Basis
* Variabelen
* Booleaanse logica
* Conditionele blokken
* Lussen
* Arrays
* Methoden
* Strings
* Commandoregelargumenten
* Invoer van een toetstenbord
* Exceptions
* GUI
* In- & uitvoer

### Klassen

* Introductie in klassen
* Klassen
* Package
* Private en Public
* Getters en Setters
* Static
* Overerving
* Protected
* Abstract
* Interfaces
* Enums
* Generics
* Boxing en Unboxing
* Optional
* Functionele interfaces

### Collections

* Collections
* List
* Set
* Queue
* Map

### Design Patterns

* Strategy Pattern
* Factory Pattern
* State Pattern

### Appendices

* Appendix B: Javadoc
** Javadoc
** Testcode
Welkom in de cursus Programmeren in Java! In deze cursus kunt u leren hoe u eenvoudige programmaatjes schrijft in de programmeertaal Java. Deze basis is voldoende om verder te gaan naar de geavanceerdere delen van Java.
Voordat u met de cursus kan beginnen, moet u eerst de Java Development Kit installeren, ook wel kortweg JDK genoemd. Deze stelt u in staat uw programma's te bouwen. Zie ook het hoofdstuk Installatie voor meer informatie over het installeren van de JDK.
Deze inleiding geeft u wat meer informatie over het concept van objectgeoriënteerd programmeren, ook wel OO (Object Oriented) Programming genoemd, over de speciale kenmerken van de taal Java, en over het maken en uitvoeren van zelfgemaakte programma's in het algemeen.

## Object-georiënteerd programmeren

Om een computer te programmeren, d.w.z. verschillende instructies achter elkaar zetten in een programma, moest men vroeger veel werk verrichten. Een computer werkt namelijk binair, d.w.z. met enen en nullen. Om een programma te schrijven moest men dus een heel lange serie van enen en nullen achter elkaar zetten. Dit is echter een zeer tijdrovende bezigheid, en het gevolg was dat er niet veel programma's waren en dat het schrijven van een nieuw programma zeer veel tijd in beslag nam. Daarom heeft men de programmeertaal uitgevonden, die programmeren een stuk eenvoudiger maakt.
Men probeert programmeertalen zo eenvoudig mogelijk te maken, en tegelijk ervoor te zorgen dat ze een zo groot mogelijk rendement hebben. Dit doet men door analogieën met de werkelijkheid in een programmeertaal te steken. Een programma moet namelijk niet alleen goed draaien, maar ook eenvoudig te begrijpen zijn. Daarom heeft men het Object-geörienteerd (OO) programmeren uitgevonden.
Het centrale concept bij OO is het Object. Om een voorbeeld te geven van een Object: kijk even rond u heen. Wat ziet u? Een pen, een bureau, een stuk papier, ... Dit zijn allemaal objecten. Op eenzelfde manier worden objecten in een OO-taal gebruikt.
Bovendien kunnen Objecten eigenschappen overerven. Om het principe van overerving te demonstreren, kijkt u even naar een fruitschaal. Wat ziet u? Appelen, peren, sinaasappelen, ... Al deze "objecten" kunnen onder de noemer "Fruit" vallen. Fruit zelf valt dan weer onder de noemer "Voedsel". Voedsel heeft één groot kenmerk: het kan gegeten worden. Fruit erft deze eigenschap over. Een Appel erft dan ook deze eigenschap over, en het gevolg is dat u de Appel kan eten. Een soortgelijk principe wordt toegepast in OO. Het moederobject, waarvan alle objecten overerven, heet dan toevallig of niet ook Object.
Objecten in OO kunnen vrij realistisch zijn, zoals in het voorbeeld met het fruit, maar ze kunnen ook abstracter worden, zoals bijvoorbeeld een lijstje, een stukje tekst, een bestand, een open netwerkverbinding, ... Wanneer u objecten maakt, probeer dan altijd de analogie met de werkelijkheid in het achterhoofd te houden.
Het is onmogelijk om objecten uit het niets te grijpen. Zo is dat ook in een OO-taal. Om objecten te maken, moet u eerst een soort blauwdruk schrijven voor dat object, een klasse. Dit is wat u doet in de programmeertaal, in dit geval Java. In deze klasse definieert u wat een bepaald object kan en doet, en dan kunnen er eindeloos veel objecten aangemaakt worden. Om terug te komen op het voorbeeld met het fruit: als u eenmaal weet hoe u een appel moet "maken", kan u er eindeloos veel "maken", met verschillende groottes, kleuren en zelfs andere smaken! Dit is de kracht van object-georiënteerd programmeren.

## Compileren en de kracht van Java

Zoals eerder gezegd, een computer verstaat alleen enen en nullen. Dus hoe kan een computer ooit een programma uitvoeren in een programmeertaal met complexe dingen zoals objecten? Het antwoord is vrij simpel: voordat je iets met een programma kan doen, moet de code eerst worden omgezet naar enen en nullen. Dit proces heet compileren.
Bij een "klassieke" programmeertaal, bijvoorbeeld C++, wordt de programmacode omgezet naar code die direct door een computer te begrijpen is. Dat is uiteraard gemakkelijk, want er is geen extra programma nodig om de code uit te voeren. Maar dit betekent wel dat code die voor een systeem is geschreven (bv. Microsoft Windows) niet werkt op andere systemen (bv. Apple macOS of Linux). Er moeten dus aparte versies voor die systemen gecompileerd worden, en vaak dient de programmacode eerst worden aangepast omdat deze systemen anders werken.
Met Java is het de bedoeling om platformonafhankelijke programma's te maken. Dat wil zeggen dat een programma dat je thuis maakt in Java zal draaien op jouw besturingssysteem, maar ook op andere besturingssystemen, zonder aanpassing.
Java lost dit probleem op door gebruik te maken van een compiler die weliswaar een binair bestand aanmaakt, maar waarin de opdrachten nog steeds platformonafhankelijk zijn. In plaats van de broncode rechtstreeks om te zetten naar machinetaal, zoals bij C of C++ e.d. het geval is. Dit heeft tot gevolg dat de Java-compiler geen stand-alone uitvoerbaar bestand (een .exe onder Microsoft Windows) maakt. In de plaats daarvan compileert de Java-compiler een bestand in bytecode. Dit bestand wordt dan ingelezen door een interpreter (Java Virtual Machine, JVM) dat op elk platform waar java programma's op moeten draaien geïnstalleerd moet worden. De JVM leest de bytecode, interpreteert de opdrachten en voert dan het programma uit.
${\mbox{Java-programma}}\rightarrow {\mbox{bytecode}}\rightarrow {\mbox{machinetaal}}$
De JVM is wel degelijk afhankelijk van het platform, maar is beschikbaar voor veel verschillende systemen, is gratis en hoeft slechts eenmalig te worden geïnstalleerd.
Het uitvoeren van bytecode gaat weliswaar iets trager dan het doorsnee 'native' programma, oftewel een programma dat specifiek voor één systeem is geschreven (onder Microsoft Windows een .exe), maar dit is in het dagelijks gebruik nauwelijks merkbaar.
De Java Development Kit, oftewel JDK, die o.a. de Java-compiler bevat, moet geïnstalleerd zijn voordat je Java-programma's kan gaan schrijven en compileren. Afhankelijk van het besturingssysteem dat u gebruikt, is de installatiewijze anders.

## Microsoft Windows

De JDK voor Windows is te downloaden van de website van de ontwikkelaar Oracle: Java Development Kit (klik op "» Get the JDK download"). Na deze gedownload en geïnstalleerd te hebben moet u nog een paar kleine instellingen doen om te zorgen dat het gemakkelijk te gebruiken is.
Als eerste moet u de Java compiler directory toevoegen aan uw PATH, dit zorgt ervoor dat je de java compiler kan aanroepen met een simpel 'java', zoals op de andere besturingssystemen, en doet u als volgt. Zoek op in welke directory de bestanden java.exe en javac.exe te vinden zijn en schrijf het volledige pad (C:\Program Files\Java.. etc) op. Dit is de 'bin' map in de map waar Java geinstalleerd is.
Klik op uw bureaublad (desktop) met de rechtermuisknop op 'Mijn Computer' en selecteer eigenschappen, klik op de tab 'Geavanceerd' en dan op de knop 'Gegevens Variabelen' zoek in de lijst de variable PATH.
Bij windows vista: Configuratiescherm (klassieke weergave) -> Systeem -> Geavanceerde systeeminstellingen -> tabblad Geavanceerd -> Omgevingsvariabele.
Selecteer deze en klik dan op bijwerken, u ziet nu een hele lijst van mappen gescheiden door punt komma's. Aan het einde van deze lijst voeg je eerst een puntkomma en daarna het volledige pad dat u eerder hebt opgeschreven toe.
U kan het ook vanaf de commando lijn in een dos-scherm doen met het volgende commando: PATH=C:\MapWaarJavaInStaat;%PATH%

## macOs

Apple gebruikt zijn eigen versie van Java die gebaseerd is op de Java-versie van Sun. Deze zorgt voor verhoogde integratie met Mac OS X. Bijgevolg is er geen download op de Sun-website. U kan Java installeren door de Development Kit van Apple te installeren (U vindt deze op de installatie-cd van Mac OS X), of in sommige versies van Mac OS X komt deze ook voorgeïnstalleerd. U kan dit controleren door het programma Terminal te open (in /Programma's/Hulpprogramma's) met het commando:
De installer van de Apple Development Kit maakt een zeer grote map aan genaamd "Developer", maar u kan deze achteraf verwijderen, voormits die niet nodig is voor Java-ontwikkeling. Als een alternatief kan u kijken op de Developers-website van Apple.

## Linux

Afhankelijk van de Linux-distributie verschilt de installatie. Mogelijk heeft uw distributie een versie van de JDK in haar pakketbronnen staan. Indien dit het geval is, kan u Java van daaruit installeren. Let op dat u Oracle Java en niet OpenJDK of GNU Classpath/GJC installeert, want de latergenoemden zijn nog niet compatibel met alle programma's of kunnen afwijkingen vertonen. Indien er geen versie van de JDK in de pakketbronnen zit, of deze is erg verouderd, kan u kijken op de downloadspagina van Oracle: Java Development Kit (klik op "» Get the JDK download").

## Externe links

* De website van Sun (Nu Oracle), de ontwikkelaars van Java. - Hierop vind je meer uitleg over Java evenals de JDK.
* De website van NetBeans - Informatie, plugins en downloads voor NetBeans (IDE).
* Eclipse - Informatie, plugins en downloads voor Eclipse (IDE).