This course teaches everything a Java developer needs to know about the Java module system that was introduced in Java 9. It starts with good old JAR hell and the chaos of the class path to motivate the module system's introduction. After that, the basics are explained before more advanced uses are introduced. Last but not least, the course covers migration challenges when upgrading from Java 8 (most of them caused by the module system) and how to modularize existing projects.
Every aspect is taught with theoretical introductions, practical exercises, and usage recommendations.
Optionally, we can also discuss the six-month release cadence and licensing/support of JVM distributions.
- Audience:
- Java developers who've either never used Java 8 or just didn't dive particularly deep yet
- Prerequisite:
- Solid Java skills; a good understanding of generics helps a lot
- Length:
- 2-3 days
▚Objectives
After completing this course, participants will be able to:
- confidently use lambda expressions to handle code as data
- write more readable and maintainable code with
Stream
s - understand the intrinsics and trade-offs of stream pipelines (e.g. regarding parallelization)
- lift
null
handling fromif
-checks and NPEs into the type system withOptional
- write clearer and more performant multi-threaded code with
CompletableFuture
- use the DateTime API for safer handling of dates, times, and timezones
- understand functional programming cornerstones like function composition and immutability
▚Program
- generics recap (because we use them a lot)
- functional interfaces
- lambda expressions, closures, method references
Stream
sources, operations, collectors, specializations, optimizations, and pitfalls- handling
Optional
the imperative and the functional way - function composition, immutability, side-effect free code, pure functions, Monads
- creating and composing asynchronous operations, extracting results, handling errors, timing out, forking and joining computations with
CompletableFuture
- DateTime API as replacement for
Date
andCalendar
- syntax and semantics of default methods and how they're used in Java 8
▚Upcoming Public Sessions
While I mostly provide these courses in-house, there's the occasional public session that everybody can attend. None are planned now, but if you get in touch, I'll let you know when that changes.