Java
About 10 years after Java’s inception in 1996, Sun Microsystems released OpenJDK in 2007, a free and open-source implementation of Java SE. Many companies started to join as contributors.
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.
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.
Java 8 gave us the Stream API, a lazy-sequential data pipeline of functional blocks.