1
Gelijktijdig programmeren
- De concepten van multithreaded programmeren: Java's activiteitenmodel (Runnable en Thread).
- Aanmaken/vernietigen van threads. Planning van draden.
- Thread-synchronisatie. Vergrendelingsmethoden en instructies (gesynchroniseerd). Monitors.
- Enkele multithreaded problemen: interblocking (karakteriseren, vermijden, voorkomen, detecteren), starvation.
- Modeluitbreidingen geïntroduceerd in Java.5 (Callable<T>, Future<T>, ExecutorService. Nieuwe verzamelingen.
- Het Java 7 Fork/Join-model. Java 8-uitbreidingen (CompletableFuture).
- Diverse hulpmiddelen voor concurrentiebeheer: gedeelde/exclusieve sloten, semaforen, cyclische barrières.
Praktisch werk
Het bouwen van een applicatie met meerdere threads en beperkingen voor gelijktijdigheid.
2
Socketcommunicatie
- Herinnering aan de belangrijkste netwerkconcepten.
- Communicatie in verbonden modus.
- Het client/server-model. Sequentiële server versus concurrent server. Gebruik van serialisatie.
- Programmeren in offline modus. Het peer-to-peer model.
Praktisch werk
Programmeren van de casestudy in client-server modus (sequentieel en gelijktijdig).
3
Communicatie door methode op afstand aan te roepen : RMI
- De algemene principes van ORB's (Object Request Brokers).
- Het RMI-model (concepten, basisklasse-interfaces).
- De naamgevingsservice.
- Het client- en serverontwikkelingsproces.
- Beperkingen voor beveiliging en het laden van klassen.
Praktisch werk
De casestudy programmeren met RMI.
4
Berichtencommunicatie: JMS
- De algemene principes van berichtencommunicatie.
- Het basismodel (JMS-concepten, interfaces en klassen).
- De verschillende soorten berichten.
- Punt-naar-punt communicatie.
- Communicatie in publish/subscribe-modus.
Praktisch werk
De casestudy programmeren met JMS.
5
Applicatiebeheer : JMX
- Het JMX-model (Java Management eXtension): concepten, interfaces en bijbehorende klassen.
- MBeans en MBeanServers.
- Een administratielaag opzetten.
- De beheerconsole (JConsole).
- Communicatie via adapters en connectoren.
Praktisch werk
Implementatie van een administratie-supervisielaag voor de casestudy.
6
Reflectief programmeren
- Doelstellingen en principes.
- Dynamische ontdekking van informatie met betrekking tot een klasse of object.
- Dynamische instantiëring en aanroeping.
- Reflexiviteit en annotaties in Java 5.
Praktisch werk
Programmeren van de casestudy in client-server modus (sequentieel en gelijktijdig).
7
Een overzicht van uitbreidingen van Java 5 naar...
- Typen: generieken, opsommingen, autoboxing/autounboxing, records.
- Lambda-expressies en functionele interfaces.
- Java 8 streams.
- Java 9-modules.