All New Java Language Features Since Java 21

Format and Content of the Article

  • Several commenters dislike that the piece is a video “big list” and immediately extract the JEP list into text.
  • One person adds a very short “TL;DR” list of the truly new post‑21 features they care about (unnamed variables, stream gatherers, module imports, flexible constructors).

Perceptions of Modern Java (21+)

  • A long‑time functional programmer reports being surprised that Java 21+ is now “fun”: records, sealed types as ADTs, pattern matching, and especially virtual threads are seen as big quality‑of‑life improvements.
  • Others echo that modern Java is much nicer, citing switch expressions, text blocks, records, sealed classes, and better concurrency.
  • Some still feel that, aside from virtual threads, nothing since Java 8 is compelling.

Adoption and Developer Culture

  • A recurring theme: many Java developers and enterprises stick to a Java 8 mindset even when running newer JDKs.
  • Strong criticism that Java “selection-biases” for conservative or “intellectually unambitious” engineers who avoid learning new features or even basic concurrency primitives.
  • Counter‑argument: stability, simplicity, and uniform style matter more than adopting every new feature; teams don’t want code only one person understands.

Debate over var, Lambdas, and FP Features

  • var:
    • Pro: reduces boilerplate and duplication, especially with long generic types; only applies to locals, IDEs show types, can ease refactors.
    • Con: harms readability, hides types in maintenance and code review, can encourage tying code to concrete implementations; several say they often rewrite var back to explicit types.
  • Lambdas/streams:
    • Some teams “universally hate” them as harder to debug and read than loops.
    • Others insist lambdas and streams are widely useful and that hating them often signals lack of understanding, not objective problems.

Tooling, Ecosystem, and Standard Library

  • Tooling around Java (especially IntelliJ, plus Gradle/Maven, debuggers, profilers, static analysis) is widely praised; some say it’s top-tier among languages.
  • Others complain about Maven Central’s publishing friction and lack of a clean, editor‑agnostic LSP compared to Rust/Node/Python ecosystems.
  • Several wish effort would shift from language features to a faster, richer standard library and “batteries included” experience.

Concurrency and Virtual Threads

  • Virtual threads are viewed as a major upcoming reason to upgrade, especially for high‑concurrency workloads and blocking I/O (e.g., MMOs).
  • Some are cautious about adopting them without fully understanding implications; others see them as long‑awaited relief from complex NIO/executor patterns.

Java vs Other Languages

  • Comparisons appear with Scala (Java seen as “becoming Scala,” or Scala as dead/too complex), C# (richer but more complex/kitchen‑sink), Go (simpler but less expressive), TypeScript/Rust (alternatives for servers), and Kotlin (seen by some as a nicer “modern Java”).
  • Despite criticism, multiple commenters say that, for pragmatic, large‑scale backend work, modern Java remains their favorite or most missed language, largely due to performance, tooling, and ecosystem—while acknowledging that many enterprise Java codebases are over‑engineered and painful to work with.