From The Well-Grounded Java Developer by Benjamin Evans, Jason Clark, and Martijn Verburg
The JDK ships with a compiler to turn Java source code into class files. Despite that fact, few projects of any size rely just on javac. Build tools are the norm for a number of reasons:
Automating tedious operations
Ensuring consistency between developers
Although many options exist, two choices dominate the landscape today: Maven and Gradle. Understanding what these tools aim to solve, digging below the surface of how they get their job done, and understanding the differences between them – and how to extend them – will pay off for the well-grounded developer.
From The Well-Grounded Java Developer, Second Edition by Benjamin Evans, Jason Clark, and Martijn Verburg
This article discusses classloaders and reflection in Java.