Keywords
Just some links to resources on evolution of the Java language and features and capabilities by version, and some remarks on some notable improvements.
Java21
String templates
If you are used to the convenience of string interpolation such as f-strings in Python, you might like to look at the new Java21 string templatesapproach, which attempts to avoid some of the injection security concerns of string interpolation in some other languages. It also offers a new FMT template processor for formatting.
Pattern matching for switch
The new Pattern matching for switch makes for more concise switch case handling and also now handles null
(so need to for a pre-check for null before the switch). It also has more convenient enum handling.
Virtual Threads
The new Virtual Threads addresses long standing concerns with high traffic thread handling (but may require some substantial code migration).
Sequenced collections
The new Sequenced collections address concerns with operations on ordered datasets.
Record Patterns
Record Patterns were already introduced as a preview feature in Java 19. They also now help to support the new pattern matching, and afford a more declarative approach for condition testing without explicit casting. (Their introduction may, in part, also be an attempt to keep up with language like Python with strong data analytics capabilities.)