Advanced Language and Tooling
Annotations, reflection, the module system, Maven and Gradle, JUnit 5 testing and logging done right: the tools every professional Java codebase is built on.
By now you can write correct, fast, concurrent Java. This phase is about the machinery around your code that every real project depends on. Annotations let you attach labels to code that compilers, frameworks and test runners read. Reflection lets a running program look at its own classes and call methods it only knows by name, which is how Spring, Hibernate, Jackson and JUnit work. The module system (Java 9) draws hard borders around packages so a library's internals stay internal.
Then come the tools of the trade. Topic 15.4 shows how Maven and Gradle download libraries, compile, test and package a project with one command. Topic 15.5 teaches JUnit 5, the standard way to write automated tests, and Topic 15.6 shows how to log properly with SLF4J and Logback: levels, parameterized messages and why string concatenation in log calls is a quiet performance bug.
Every runnable example uses only the JDK, so it runs in your browser. Where a topic needs a library (JUnit, SLF4J, Maven), you see the real code and the real terminal output as a read-only block, and a runnable example rebuilds the core idea by hand: Topic 15.5 ends with a tiny test runner built from the annotations of 15.1 and the reflection of 15.2. Reflection lists members in an unspecified order, so every example sorts them by name before printing.