1 Java Language Changes
This section summarizes the updated language features in Java SE 9 and subsequent releases.
Java Language Changes for Java SE 14
Java SE 14 introduces pattern matching for the instanceof operator;
                        if the result of the instanceof operator is
                                true, then the object being tested is automatically
                        assigned to a variable that you previously declared. See Pattern Matching for the instanceof Operator. This release also introduces records, which are a new
                        kind of type declaration that's ideal for "plain data carriers," classes
                        that contain data not meant to be altered and only the most fundamental
                        methods such as constructors and accessors. See Records.
                  
Text blocks accept two more escape sequences (see Programmer's Guide to Text Blocks), and Switch Expressions is now a permanent language feature.
Java Language Changes for Java SE 13
Java SE 13 introduces text blocks, which are multiline string
                        literals that don't require common escape sequences; see Programmer's Guide to
                                Text Blocks. It also introduces one change to
                                switch expressions: To specify their value, use the
                        new yield statement instead of the break
                        statement; see Switch Expressions
                        in Java Platform, Standard Edition Java Language Updates,
                                Release 13.
                  
Java Language Changes for Java SE 12
Java SE 12 introduces switch
      expressions, plus a new kind of case label that prevents fall through. This
      is available as a preview feature. See Switch Expressions in Java Platform, Standard Edition Java Language Updates, Release 12.
                  
Java Language Changes for Java SE 11
Java SE 11 lets you declare formal parameters of implicitly typed lambda expressions with the var identifier; see Local Variable Type Inference.
                  
Java Language Changes for Java SE 10
Java SE 10 introduces support for inferring the type of local variables from the context, which makes code more readable and reduces the amount of required boilerplate code.
Java Language Changes for Java SE 9
The major change to Java Platform, Standard Edition (Java SE) 9 is the introduction of the Java Platform module system.
The Java Platform module system introduces a new kind of Java programing component, the module, which is a named, self-describing collection of code and data. Its code is organized as a set of packages containing types, i.e., Java classes and interfaces; its data includes resources and other kinds of static information. Modules can either export or encapsulate packages, and they express dependencies on other modules explicitly.
To learn more about the Java Platform module system, see Project Jigsaw on OpenJDK.
Apart from the new module system, a few changes have been made to the Java language; see More Concise try-with-resources Statements and Small Language Changes in Java SE 9.