- Leren door doen
- Trainers met praktijkervaring
- Klassikale trainingen
- Gedetailleerd cursusmateriaal
- Duidelijke inhoudsbeschrijving
- Maatwerk inhoud mogelijk
- Trainingen die doorgaan
- Kleine groepen
De cursus Advanced Java Programmeren is bestemd voor ervaren Java developers die diepgaandere kennis van Java willen opdoen.
Om aan deze cursus te kunnen deelnemen is kennis van Java en ervaring met programmeren in Java vereist.
De theorie wordt behandeld aan de hand van presentaties en wordt afgewisseld met oefeningen. Demo's dienen ter verheldering van de theorie. De cursustijden zijn van 9.30 tot 16.30.
De deelnemers krijgen na het goed doorlopen van de cursus een officieel certificaat Advanced Java Programmeren.
In de cursus Advanced Java Programmeren komen een reeks geavanceerde aspecten van Java aan de orde. De cursus behandelt de onderwerpen die gevraagd worden op het Oracle Certified Java Professional of OCP examen en vormt een goede voorbereiding om dit examen te behalen.
In de eerste plaats wordt aandacht besteed aan aspecten van Advanced Class Design zoals het implementeren van inheritance en composition, het gebruik van polymorphisme, interfaces, inner en anonymous classes en het singleton pattern. Vervolgens wordt ingegaan op multithreaded applicaties en de synchronisatie tussen threads bij het benaderen van shared data. Bij de bespreking van het concurrency package komen daarbij geavanceerde synchronisatie mechanismes zoals cylic barriers en countdown latches aan de orde.
Ook de in recente Java versies geintroduceerde functionele taal constructies komen aan bod bij de behandeling van lambda's en functional interfaces. Vervolgens worden generics besproken waarmee classes en methods kunnen worden geparametriseerd, strong typing wordt opgelegd en de kans op runtime errors wordt beperkt. Generics worden meestal gebruikt in het Collection Framework en de belangrijkste container classes daaruit worden besproken. Vervolgens is er aandacht voor de Stream API waarmee transformaties op data collections kunnen worden uitgevoerd door een combinatie van elkaar opvolgende simpelere methoden waaronder map en reduce.
Ook de diverse mogelijkheden bij de afhandeling van errors en exceptions staat op het programma en er wordt aandacht besteed aan file I/O en new I/O bij het benaderen van files an directories. Ook wordt database access met Java Database Connectivity (JDBC) behandeld waarbij queries, prepared statements en transactions aan de orde worden gesteld. Tenslotte staat optioneel, als de tijd het toelaat, reflection op het programma, waarmee gecompileerde Java classes softwarematig kunnen worden geanalyseerd, en komen optioneel diverse aspecten het verbeteren van de Java performance aan bod.
Module 1 : Advanced Class Design |
Module 2 : Multiple Threads |
Module 3 : Concurrency |
Encapsulation and Inheritance Implementing Composition Polymorphism Singleton Patterns Immutable Classes Abstract Classes Final Classes Inner Classes Static Inner Classes Anonymous Inner Classes Autonomous Classes Extending Interfaces Enumerated Types Implementing hashCode and equals |
Java Thread Model Extending Thread Class Implementing Runnable Daemon Threads Thread Alive States Thread Class Methods Sleeping and Yielding Control Using join and interrupt Concurrent Method Activation Synchronized Statement Locking and Statics Deadlock Condition Synchronization Using wait and notify |
Concurrency Package Task Scheduling Framework Executor Interface ExecutorService Callables and Futures ScheduledExecutorService Synchronizers Semaphores and Exchanger CountdownLatch and CyclicBarrier Concurrent Collections BlockingQueue Interface Lock Interface Reentrant Locks Atomic Variables |
Module 4 : Lambda's |
Module 5 : Generics |
Module 6 : Streams |
Passing Functionality Lambda Expressions Lambda Syntax Lambda Variable Access Lambda Scoping Rules Functional Interfaces Predicate Interface Consumer Interface Supplier Interface Function Interface UnaryOperator Interface BinaryOperator Interface Method References @FunctionalInterface annotation User Defined Functional Interfaces |
What are Generics? Type Erasure and Raw Types Generics and Subtyping Bounded Type Parameters Wildcards Generics in Collections ArrayList and LinkedList TreeSet and Hash Set HashMap and TreeMap ArrayDeque objects Comparable and Comparator Collections Streams and Filters Iteration using forEach Filtering using Lambda's Stream Pipeline |
What are Streams? Lazy Evaluation and Parallelization Core Stream Methods forEach, Map and Filter findFirst and findAny toArray and collect Optional Class Limiting Stream Size allMatch and anyMatch Number Specialized Streams Reduction Operations Parallel and Infinite Streams collect Method Grouping with Collectors class Using flatMap Method |
Module 7 : Exception Handling |
Module 8 : Java IO and NIO |
Module 9 : Database Access |
Errors and Exceptions Exception Handling Syntax Checked and Unchecked Exceptions Exception Hierarchy Multiple Catch Clauses finally Clause try with Resources Auto Closeable Resources Common Exceptions Throwing Exceptions User Defined Exceptions Chained Exceptions and Stack Traces Rethrowing Exceptions Assertions |
Standard I/O Streams Stream Types Reading and Writing Files Buffered Streams Data Conversion Streams Serialization Object Streams NIO and Asynchronous I/O Processing Working with Buffers IO Channels Stream API with NIO.2 Using Path Class Directory Traversing PathMatcher class |
JDBC Architecture JDBC Drivers and URL's Database Connections Executing Statements Querying Databases Update Statements Retrieving Results Handling Errors Prepared Statements Database Metadata Transactions Commit and Rollback Rowset Interfaces Using RowsetProvider |
Module 10 : Localization |
Optional Module 11 : Reflection |
Optional Module 12 : Performance |
LocalDate Class LocalTime and LocalDateTime Instant and Period Duration and TemporalUnit Defining Properties Reading Property Files Creating Resource Bundles Formatting Date and Times Locale Class Localizing Dates Localizing Numbers Localizing Currencies |
What is Reflection? Reflection Classes Class Loading The Class Class Creating Objects Reflection Methods in Class Field Class Constructor Class Method Class AccessibleObject Class Dynamic Proxies Invocation Handler |
Influences on Performance JIT Compilation and Hotspot JVM Garbage Collection String Types Buffered and New I/O Synchronization and Concurrency Primitives versus Wrappers Collections Exception Handling Serialization Native methods Lazy Loading and Object Reuse |
Al onze cursussen zijn klassikale cursussen waarbij de cursisten aan de hand van een ervaren trainer met diepgaande materie kennis door de stof worden geleid. Theorie wordt steeds afgewisseld met oefeningen.
We doen ook maatwerk en passen dan de cursusinhoud aan op uw wensen. Op verzoek gaan we ook in op uw praktijkcases.
De cursustijden zijn in pricipe van 9.30 tot 16.30. Maar we zijn hierin flexibel. Soms moeten mensen namelijk kinderen naar de opvang brengen of halen en komen andere tijden hun beter uit. In goed overleg kunnen we dan andere cursustijden afspreken.
Wij zorgen voor de computers waarop de cursus gehouden kan worden. Op deze computer is de voor de cursus benodigde software al geinstalleerd. U hoeft geen laptop mee te nemen om aan de cursus te kunnen deelnemen. Als u liever op uw eigen laptop werkt kunt u hem desgewenst meenemen. De benodigde software wordt dan aan het begin van de cursus geinstalleerd.
Onze cursussen worden over het algemeen gegeven met Open Source software zoals Eclipse, IntelliJ, Tomcat, Pycharm, Anaconda en Netbeans. Het digitale cursusmateriaal krijgt u na de cursus mee naar huis.
De cursus is inclusief lunch die we in een restaurantje op loopafstand van het cursuslokaal gebruiken.
De cursussen worden op diverse plaatsen in het land gepland. Een cursus gaat op een locatie door als er zich minimaal 3 mensen voor die locatie inschrijven. Als er inschrijvingen voor verschillende locaties zijn gaat de cursus door op onze hoofdlocatie is Houten net onder Utrecht. Een cursus op onze hoofdlocatie gaat ook door bij 2 inschrijvingen en regelmatig ook bij 1 inschrijving. Overigens doen we ook cursussen op de locatie van de klant als men daar prijs op stelt.
De intellectuele eigendomsrechten van de gepubliceerde cursus inhoud, ook wel aangeduid als infosheet, behoren toe aan SpiralTrain. Het is niet toegestaan de cursusinformatie, de infosheet, te publiceren in schiftelijke dan wel digitale vorm zonder de uitdrukkelijke toestemming van SpiralTrain. Onder de cursus inhoud dient te worden verstaan de beschrijving van de cursus inhoud in zinnen alsmede de indeling van de cursus in modules en onderwerpen in de modules.