Tutorial 1 deel 1: Eclipse en de eerste kleine stap
Welkom bij de eerste tutorial over de wondere wereld van Java en het programmeren. In deze eerste les zal ik uitleggen wat de opbouw van de serie tutorials zal zijn en uitleggen hoe we Java een Java programma kunnen schrijven met behulp van Eclipse. Het zal een heel simpel programma zijn, dus wees maar niet bang!
De opbouw van de serie tutorials
De huidige opbouw van de serie tutorials is nog ruw, maar kan ik hier alvast wel vermelden. Zoals ik al eerder zei gaan we vandaag aan de slag met het installeren van Java en een eerste programma schrijven. De volgende keer staan datatypen op het programma. Daarna volgt een tutorial over operators en hun gebruik. De vierde tutorial zal het idee van flow control en de toepassing uitleggen. Hierna komen we nog wat terug op de datatypen door te kijken naar wat complexere “datatypen”. Hierop volgt misschien wel het leukste deel van de taal: Classes en Objecten. In deze tutorial leren we hoe we de typische OOP (Object-Oriented Programming) structuur van java kunnen gebruiken. Als laatste wil ik dan nog een stuk uitleggen over een aantal complexere en belangrijke OOP begrippen en een klein stukje over Swing, Java's manier om vensters en schermen te maken.
Momenteel is dit de opbouw van de serie tutorials. Zoals jullie zien gaat het niet extreem diep in op de vele moeilijke aspecten van het programmeren, maar is het voldoende voor een goede basis waarmee al veel leuke en interessante programmaatjes gemaakt kunnen worden.
Ik ben momenteel nog op zoek naar een gratis ebook dat mijn opbouw van Java volgt ter ondersteuning van het leerproces. Zodra ik er een heb gevonden die voldoet aan de eisen laat ik het weten door middel van een mooie post. Maar genoeg gepraat, laten we aan de slag gaan!
Maar eerst nog even iets over Java en programmeren in het algemeen...
Jullie dachten zeker al dat we aan de slag gingen, he? Niet helemaal goed. Eerst wil ik nog even wat over Java en programmeren vertellen dat het zwoegen door deze lessen een stuk makkelijker maakt.
Programmeertalen deelt men over het algemeen in van low-level tot high-level. Wat betekent dit nu eigenlijk? Laten we daarvoor een stukje geschiedenis bekijken:
Als men vroeger, toen de computers veel groter maar minder krachtig waren, de machine iets wilde laten doen moest men dit in de machinetaal van de computer overbrengen. Dit houdt in dat de toenmalige programmeurs in series van enen en nullen de computer iets konden laten doen. Tegenwoordig werkt de ultieme basis van de computer nog steeds zo, maar nu hoeven wij de computer niet meer met de hand deze enen en nullen door te geven. Dit komt omdat men later de programmeertalen in het leven hebben geroepen om het de gebruikers, die toen nog allemaal technici waren, makkelijker te maken de computers opdrachten te geven. Een van de eerste was assembly. Assembly is een low-level programmeertaal die nauwelijks meer dan een symbolische weergave van machinetaal is. Bij deze taal is het zo dat iedere regel van een assembly-instructie naar een enkele machinecode-instructie wordt vertaald, waarbij de vertalende assembler (het programma dat assembly naar machinetaal vertaalt) nog wel wat ondersteuning biedt in de vorm van symbolische namen voor geheugenlocaties die gebruikt worden voor de opslag van variabelen en labels voor sprongopdrachten in plaats van absolute of relatieve adressen. Je zal er nu waarschijnlijk wel achter zijn wat een low-level programmeertaal nu eigenlijk inhoudt: Een taal die dicht bij de oorspronkelijke machinetaal opereert. Dit heeft zowel voor als nadelen. Zo zijn de programma's die in deze talen geschreven zijn heel snel, aangezien ze al heel dicht bij de oorspronkelijke vorm liggen die de computer begrijpt en dus bijna niet vertaald hoeven te worden door een zogenaamde compiler. Een nadeel is dat het moeilijk te begrijpen is, omdat de instructies ver van de normale menselijke taal af liggen.
Nu zijn er in de tussentijd veel verschillende talen verschenen (zoals op de figuur te zien is): De een low-level, de ander high-level en weer een ander een combinatie van de twee. Een voorbeeld van de laatste is de taal C, waar veel dingen als geheugen zelf nog beheerd moeten worden. Daarnaast zijn er veel verschillende soorten talen verschenen in de vorm van onder andere procedurele en object-geörienteerde talen. De laatste is waar wij ons mee gaan bezig houden in de vorm van Java en daarom zal ik me verder ook niet uitweiden over de ideeën achter de andere soorten programmeertalen. Voor wie toch geïnteresseerd is in de achtergrond hiervan zijn google en wikipedia goede vrienden.
Bijna alle talen maken gebruik van een compiler. Een compiler is een programma dat de door de mens geschreven code omzet naar de machinetaal die de computer begrijpt.
Zoals bekend gaan wij ons bezig houden met Java. Java is een typische high-level object-georiënteerde taal. Het is high-level omdat het concepten gebruikt die dicht bij de menselijke gedachtegang staan. Maar wat houdt dan het object-geörienteerde deel van Java in? Dit is een belangrijk concept dat ik hier alvast een klein stukje zal uitweiden, zodat de eerste stappen in Java soepel zullen verlopen.
Het idee achter object-geörienteerde talen is simpel. Zoals de naam al zegt beschikken we over een aantal, al dan niet zelf gemaakte, objecten die met elkaar kunnen communiceren. Op deze manier kunnen we een programma veel makkelijker modelleren naar de werkelijkheid. Een voorbeeld dat we ook later zullen gaan implementeren is een bankrekening. Er bestaat een object Bankrekening, de gebruiker of een ander object kan met dit object communiceren om bepaalde interacties te veroorzaken. Zo kan je bijvoorbeeld, net als bij een echte rekening, de opdracht geven geld op te nemen of geld te storten. Dit klinkt allemaal erg vaag, maar in de loop van de serie zal het allemaal duidelijk worden.
Maar waarom nou dit verhaal? Java is als een van de weinige talen volledig object-georiënteerd. Zelfs bij de simpelste programma's maak je al gebruik van objecten, in tegenstelling tot verschillende andere talen, zoals C++. Het hoe en wat van dit zal ik kort uitleggen bij de maak van ons eerste kleine programmaatje.
Waarom Java?
Er zijn verschillende redenen te noemen waarom men Java zou moeten gebruiken. De voornaamste is eigenlijk wel dat de taal platform independent is. Dit houdt in dat je code op ieder OS, van Windows tot MacOS, kan draaien mits Java hiervoor geïnstalleerd staat. Hoe kan dit, vraag je je af?
Java werkt met een programma dat de Java Virtual Machine wordt genoemd. Het idee hierachter is dat in tegenstelling tot de meeste programmeertalen, die direct worden gecompileerd in de machinetaal voor de desbetreffende OS en processor, een tussenstap maakt. De Java compiler zet de code namelijk om in een speciale file genaamd 'class-file'. Deze file bevat iets soortgelijks als machinetaal dat door de Virtual Machine gelezen kan worden. Deze Virtual Machine gedraagt zich al een soort virtuele processor die Java 'class-files' kan lezen. In werkelijkheid zet deze virtual machine deze code dan in real-time om naar machinecode voor het OS en de processor die jij hebt. Het plaatje hierboven verduidelijkt dit concept. Wat dit uiteindelijk oplevert is dat een java 'class-file' op elk systeem met elk OS met de Virtual Machine kan draaien zonder aanpassingen in de code te maken. Dit kan met een directe compilatie niet. Daar zijn aanpassingen in de code en hercompilatie nodig om het draaiende te krijgen op andere systemen |