Samenvatting Informatica Course 5
Deze course en volgende course leren we Java.
We hebben geen papierenboek meer voor informatica, maar de lessen zijn wel gebaseerd
op twee webpagina’s: Pluralsight.com (de Java fundamentals course). Je kunt dat zelf
aanschaffen via de HAN (https://ica-xtend.nl/winkel/pluralsight/), het is dan ongeveer 75 euro
per jaar in plaats van 400. Het zijn video tutorials (in de powerpoints staan links naar de
video’s die bij de theorie horen). Daarnaast wordt er gebruik gemaakt van een digitaal boek:
“Introduction to Programming Using Java” op http://math.hws.edu/javanotes/.
De toets wordt een 4 uur durende toets, het kan dat die thuis wordt afgenomen. Voorbeeld
toetsen op onderwijsonline. Er is ook een kennistoets van Java, waarbij je een stuk code
moet analyseren.
Ubuntu wordt zoals altijd aangeraden, maar Windows kan ook prima.
Android is gebaseerd op Linux. Op Android runt een virtual machine van Java. Alle Android
apps zijn dus ook geprogrammeerd in Java.
Java lijkt op C++ omdat Java op C++ gebaseerd is. Wanneer we dus Java leren, dan leer je
ook al een groot gedeelte van C++.
JavaScript is iets totaal anders dan Java.
Java basis:
Java is een programmeertaal die ontzettend veel gebruikt wordt. Het komt voor in telefoons,
video games, big data technologieën en nog veel meer. Java wordt veel gebruikt omdat:
- Java is platform onafhankelijk
- Ideaal voor visualisatie
- Er zijn veel Bio-informatica frameworks
- Java kent veel standaarden
- Goede professionele IDE’s (omgeving om programmeren eenvoudiger te maken,
bijvoorbeeld PyCharm)
Java werkt op een andere manier dan bijvoorbeeld Python. Een Java file eindigt op .java. Dit
bestand kun je alleen nog niet runnen, want het moet eerst nog compiled worden. Dit
compilen gebeurt met Javac. Javac is een compiler die het .java file omzet naar een .class
file. Dit .class file kan gerunt worden. Java scripts runnen altijd in een Virtual Machine.
Daardoor runnen Java scripts soms wat trager.
,Java werkt anders dan bijvoorbeeld Python, maar dat betekent niet dat de een beter is dan
de ander. De programmeer taal die je kiest, is afhankelijk van je doel. In de bio-informatica
zijn op het moment Java, Python, R en SQL interessant.
Wat verschillen tussen Java en Python:
Java Python
- Object georiënteerd - Kan object georiënteerd
- Programmeertaal - Vooral Scripting
- Heeft een JVM (zie verderop) - Interpretatie op runtime
- Strong typing - Weak typing
Om makkelijk met Java te kunnen werken, gebruiken wij de IntelliJ IDE van JetBrains (kun je
gewoon van hun website downloaden, en inloggen met de licentie van school). Andere
goede IDE’s zijn NetBeans en eClipse.
Je moet nog een Software Development Kit (SDK) downloaden in IntelliJ (ergens bovenin
het scherm een keer als het voor het eerst opent). De openjdk van Oracle is goed (JDK is
Java Development Kit).
Nu kun je net als bij Flask in PyCharm, een nieuw Java project aanmaken. Geef het een
naam, een geef aan waar het opgeslagen moet worden. Aan de linkerkant zie je nu dit
(wanneer je het project openvouwt):
,Om nu een nieuw Java bestand aan te maken, right klik je op de “src” folder New Java
Class:
Geeft de class een naam, en dan heb je een nieuw Java Class. Dat ziet er dan zo uit:
Let op! De file naam (test.java in dit geval) en de class naam (test in dit geval) moeten
precies hetzelfde zijn (case sensitive)!
De code om Hello World te printen ziet er als volgt uit:
- Alles in Java is object georiënteerd. De eerste line (public class test) is dus het
aanmaken van de class. Je opent/sluit de class met {}
- De tweede line is het aanmaken van je “main”. Hierin betekent:
o Public dat het van buitenaf aangeroepen kan worden
, o Static dat het bij die class hoort
o Void dat het niks retourneert. Je moet dus van te voren bepalen of de class
iets moet returnen of niet
o Main(String[] args) gaat over argumenten die je kunt meegeven in de
command line
o Ook open/sluit je dit met {}
o Er is een shortcut voor het typen van deze line: wanneer je psvm intypt en dan
op enter of tab, dan wordt het werk voor je gedaan.
- Vervolgens komt in je derde line de daadwerkelijke code om te printen:
System.out.println(“Hello World!”).
o Ook voor deze line is een shortcut: sout + enter/tab.
- Als je alles goed hebt gedaan, dan kun je de class nu ook daadwerkelijk runnen (klik
op de run knop of shift + f10). Let er op dat het een paar seconden kan duren voordat
je resultaat hebt, dat komt dus doordat Java in een Virtual Machine runt. Het resultaat
als het goed is:
In Java is het maken van GUI’s wat eenvoudiger dan in Python. Je kunt Hello World ook in
een messagebox laten weergeven. Dat doe je met de volgende code:
- In line 5 staat de code die daar voor nodig is. Wanneer je die line typt, wordt de
import in line 1 automatisch al voor je gedaan.
- Resultaat:
,Dit is dus hoe je met Java werkt in de IntelliJ IDE.
Soms kan het ook zijn dat je in de command line een nieuw Java bestand wilt maken om
snel iets uit te testen (op Ubuntu in dit geval). Je maakt dan een bestand aan, door
bijvoorbeeld “vi Hello.java” te typen. Wanneer je de code hebt getypt en het bestand hebt
opgeslagen en gesloten, dan moet je deze comprimeren om te runnen. Hiervoor gebruik je
javac. Javac is een compiler, maar die moet je zelf nog wel instaleren (staat volgens mij
ergens op onderwijsonline). Wanneer je javac hebt geïnstalleerd, dan doe je “javac
Hello.java”. Hierdoor wordt het bestand compiled, en wordt er een nieuw bestand
aangemaakt: Hello.class (het bestand bestaat uit byte code). Dit kun je runnen, door java
[file_name] in de command line in te voeren (zonder extensie). In IntelliJ gebeurt dit allemaal
automatisch (javac bevindt zich in de gedownloade Java Development Kit (JDK)) .
- Het process: Java(source) .class (byte code) draait op Java Virtual Machine
(JVM)
Samenvattend:
- Java is een van de meest gebruikte programmeertalen in de bio-informatica.
- Java is stabiel, veilig en kent veel ondersteunende software bibliotheken.
- Java is krachtig in het bouwen van GUI’s
- Java is portable (dat houd in dat je bijvoorbeeld makkelijk tussen Ubuntu en Windows
kunt switchen). Maar Java vereist wel een Java Virtual Machine (JVM), waardoor
Java wat trager is dan bijvoorbeeld C(++). Maar doordat het een Virtual Machine is, is
het wel veiliger.
Alles in Java is een object, behalve de 8 primitives:
- byte
- short
- int Geheel getal
- long
- float
Gebroken getal
- double
- char: karakter
- boolean: waar/onwaar
Bij een long moet je nog een L achter het getal zetten en bij een float een F:
,Een float en een double slaan beide gebroken getallen op. Een double is preciezer dan een
float: een double gaat tot 16 decimalen, een float tot 7 decimalen.
In Java moet je van te voren aangegeven wat voor een datatype je variabele is:
- Als eerst declareer je de variabele: je geeft aan wat voor een datatype dat is. Let op:
die variabele kan dan ook alleen maar dingen opslaan die ook daadwerkelijk van dat
datatype zijn.
- Daarna initialiseer je de variabele: je gaat de variabele daadwerkelijk definen
- Vervolgens kun je de variabele gebruiken (bijvoorbeeld de inhoud printen)
Je kunt ook de declaratie en initialisatie in een keer doen, bijvoorbeeld “int i = 7”. Dit is een
goede keuze, als je de variabele meteen gaat gebruiken. Ben je van plan een variabele pas
later te initialiseren, dan moet je wel alvast de variabele declareren, zodat daar ruimte voor
wordt gemaakt.
Wanneer je een char gebruikt, dan moet je single quotation marks gebruiken. Gebruik je een
string, dan gebruik je double quotation marks:
- Een String is in Java een object (een String variabele heeft dus ook zijn eigen
methodes). In werkelijkheid wordt de String opgeslagen als een array (een lijst)
waarin elk karakter een primitive char is. Een char kan maar één karkater opslaan.
- Een aantal methodes van een String object:
,Rekenkundige operatoren in Java (zijn hetzelfde als in Python):
GUI:
Programma’s kunnen data of event driven zijn. Een voorbeeld van een event driven
programma:
Java kent event listeners. Dit houd in dat Java “luistert” naar wanneer er bijvoorbeeld op een
button wordt geklikt, om vervolgens een actie uit te voeren. Je hebt bijvoorbeeld een button.
Een button is een object, waaraan een listener object gekoppeld is. Deze listener staat
continu te “luisteren”. Wanneer het specifieke event waarvoor de object listener luistert
plaatsvindt, zal het listener object een actie doorgeven.
,Het maken van een basic GUI in Java (zie het project “java_project in documenten
GUI.java):
- Deze code is al genoeg om een GUI te maken. Er gebeurt het volgende:
- In line 3 zie je: “.. extends JFrame”. Dit houd in dat je public class de
methoden/functies van JFrame inherit.
- Vervolgens wordt er in line 5 een nieuwe GUI frame aangemaakt, en in line 6 wordt
de size meegegeven. Om het frame zichtbaar te krijgen wordt er in line 7
setVisible(true) gedaan.
- Het resultaat dat je nu zal zien is een lage window. Nu wil je daar dingen gaan
inzetten
Met de code hierboven voeg je een TextField toe aan je GUI. Het volgende gebeurt er:
, - Als eerst maak je in line 5 declareer je een JTextField variabele (met de naam
textField). Je zet hem buiten de main, en ook globaal. Je maakt hem globaal, zodat je
heb binnen meerder functies kunt aanroepen.
- Vervolgen maak je in line 15 een nieuwe functie aan (createGUI) die de GUI gaat
vullen:
o Line 16: code die ervoor zorgt dat de code stopt met runnen wanneer je de
window sluit.
o Line 17: je maakt een Container aan (met de naam window)
o Line 18: je zet de layout van de window als Flowlayout. Dit houd in dat de
contents van de Container van links naar rechts aligned worden.
o Line 20: in deze line wordt textField initieert.
o Line 21: de textField wordt toegevoegd aan de container
- Wat je nu nog moet doen is in de “public static void main” de createGUI functie
aanroepen. De volgorde van de code maakt uit! Roep eerst de functie aan, en dan
pas frame.setVisible(true).
- Wanneer je nu de code runt, dan krijg je een GUI met in het midden een textfield. Op
deze manier kun je ook een label en een button toevoegen:
Het volgende is toegevoegd:
- Line 8 en 9: als eerst zijn de JLabel en JButton declareert.
- Line 24 en 25: label wordt initialiseert en in container gezet.
- Line 30 en 32: button wordt initialiseert en in container gezet
, - Line 31: om ervoor te zorgen dat de button iets doet wanneer je er op drukt, voeg je
een ActionListener toe. Je moet “this” tussen haakjes zetten.
- In line 35 wordt vervolgens de listener aangemaakt. Let op: de code in line 35 moet
er exact zo uitzien, alleen “event” mag je zelf aanpassen.
- Line 6: om een ActionListener te kunnen gebruiken, moet je ook nog “.. implements
ActionListener” toevoegen aan je public class.
- Line 36: hierin staat wat er moet gebeuren wanneer er op de button gedrukt wordt.
Dit kan van alles zijn.
- Het resultaat is nu een GUI met daarin een label, textfield en werkende button.
- Het toevoegen van een panel:
Het volgende is toegevoegd:
- Line 10: panel declareert
- Line 25 t/m 28: initialisatie van panel en het setten van size en backgroundcolor.
Daarna toevoegen aan conatainer.
- In je GUI zul je nu een panel zijn verschijnen. Je kunt ook op dit panel tekenen met
de volgende code (onder de actionPerformed functie):