The JDK is evolving with every new release, adding more and improving existing features. Beneath the surface are hidden gems that make our lives much easier.
Not many components live on their own, without any dependencies on others. Instead of tightly coupling them, we can improve the separation of concerns with dependency injection (DI).
Many languages contain a REPL, a Read-Evaluate-Print Loop. It evaluates declarations, statements, and expressions as they are entered and immediately shows the results. With Java 9, we finally got one too.
Git is packed with features and some can be very intimidating. So we resort to just using the same few commands we can memorize, over and over again.
Immutability is one of the core concepts of functional programming. “Fully” functional programming languages support it by design, at a language-level. But in Java, we need to design and implement it ourselves, at code-level.
By designing and writing code, we naturally start to develop our own personal style and habits, good and bad. The more code we write with the intent to improve, the better we’ll get eventually.