Java
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.
With JSR-175, Java 5 gained a metadata facility, allowing us to annotate our code with decorative syntactic metadata.
Java’s new functional abilities come with a plethora of included types. Let’s take a look into the box of provided tools.
Java has different methods of comparing objects and primitives, each with its own semantics. Using the “wrong” one can lead to unexpected results and might introduce subtle, hard-to-catch bugs.