Programming fundamentals
Advanced Java: concurrency, JVM, tests and performance
Master advanced Java: modern concurrency, JVM memory, streams, tests and optimization.
- Duration
- 28 h · 4 days
- Level
- Advanced
- Format
- On site · Remote · Blended
- Max. group size
- 12 participants
Overview
This program is for Java developers who want to go beyond the basics: modern concurrent programming (executors, asynchronous tasks, virtual threads), class loading, memory and garbage collection, recent language features, streams, testing with JUnit and an optimization approach with profiling tools. The goal is to write more reliable and faster applications.
Who this program is for
- Experienced Java developers
- Architects and tech leads
- Performance and operations teams
Prerequisites
- Practice of Java (objects, collections, exceptions)
Learning objectives
- Write safe concurrent code
- Use Fork/Join, CompletableFuture and virtual threads
- Understand class loading, bytecode and memory
- Choose and tune a garbage collector
- Use the language's recent features
- Test with JUnit 5 and TDD
- Profile and optimize
Detailed curriculum
8 modules · 28 h · 4 days
Day 1
Concurrent programming
30% theory · 70% practice
- Threads and synchronization
- Deadlocks and race conditions
- Executors, Callable and Future
- Scoped values
- Concurrency best practices
🛠 Hands-on workshops
Hunting concurrency problems1.5 h
Diagnose and fix concurrency errors.
✅ Deliverable : Fixed, commented code
Advanced concurrency
50% theory · 50% practice
- Fork/Join and structured concurrency
- CompletableFuture
- Locks, semaphores and barriers
- Reflection
- Virtual threads
Day 2
The JVM under the hood
50% theory · 50% practice
- Class loaders
- Bytecode
- Memory organization
- Modern garbage collectors
- JVM tuning
Modern language
30% theory · 70% practice
- Switch expressions
- Pattern matching
- Records
- Sealed classes
- Migrating to recent versions
🛠 Hands-on workshops
Modernize code1.5 h
Refactor old code with recent features.
✅ Deliverable : Modernized code
Day 3
JDK tools and recent APIs
50% theory · 50% practice
- JShell
- ProcessHandle
- HTTP client
- Modules
- Command-line tools
Tests and TDD
30% theory · 70% practice
- Test-driven development approach
- JUnit 5 in depth
- Test doubles and mocks
- Parameterized tests
- Coverage
🛠 Hands-on workshops
TDD kata2 h
Develop a feature using TDD.
✅ Deliverable : A test suite
Day 4
Lambdas, streams and modularity
50% theory · 50% practice
- Lambda expressions
- Streams and parallel streams
- Collectors
- Java modules
- Performance pitfalls
Optimization approach
30% theory · 70% practice
- Method: measure before optimizing
- Profiling with JFR, VisualVM, MAT
- Load testing
- Memory leaks and garbage collector tuning
- Improvement plan
🛠 Hands-on workshops
Optimize an application2.5 h
Profile an application and apply three optimizations.
✅ Deliverable : A quantified report
Tools and technologies
IntelliJ IDEAJUnitJavaMaven
Teaching methods
- Alternating short lectures and hands-on work
- Live demonstrations by the trainer
- Capstone project built throughout the modules
- Group corrections and discussion of best practices
Assessment
- Hands-on exercises corrected in each module
- Mini-project completed at the end of the course
- Knowledge-check quiz
Required equipment
- A computer with an internet connection
- A recent JDK, a Java IDE and profiling tools
Resources provided
- Course materials and repository of corrected exercises
Career outcomes
- A faster, more stable application
- A tooled optimization method
- Reliable automated tests
Related video courses
My video courses that go with this program, to get ready for the training or to review afterwards. Free with an account.

