Java 15
https://www.oracle.com/java/technologies/javase/15-relnote-issues.html
Records Preview (JEP 384)
// old way using Lombok @Data public final class Car14 { @NotNull private final String name; private final int hp; public Car14(String name, int hp) { this.name = name; this.hp = hp; if (this.hp < 100) { throw new IllegalArgumentException("HP has to be bigger than 100."); } } } // new Java 15 record preview @SuppressWarnings("preview") public record Car15(@NotNull String name, int hp) { public Car15 { if (hp < 100) { throw new IllegalArgumentException("HP has to be bigger than 100."); } } }
Text Blocks (JEP 378)
final String textBlockString = """ Hello cool text block <b>including</b> also HTML "tags". Json: {"name":"F1","hp":100 """;
Pattern Matching Type Checks (JEP 375)
// pre Java 15 final Object type = Long.valueOf(4L); if (type instanceof Long && ((Long)type).longValue() > 3) { Long longValue = (Long)type; System.out.println(longValue); } // new Java 15 final Object type = Long.valueOf(4L); if (type instanceof Long longValue && longValue.longValue() > 3) { System.out.println(longValue); }
Other Java 15 language changes
- Nashorn JavaScript Engine removed
Java 14
https://www.oracle.com/java/technologies/javase/14-relnote-issues.html
Switch Expressions (JEP 361)
// old Strategy preJava14; switch (movement) { case "up": case "w": preJava14 = Strategy.UP; break; case "down": case "s": preJava14 = Strategy.DOWN; break; case "d": preJava14 = Strategy.RIGHT; break; case "left": case "a": { System.out.println("going left ..."); preJava14 = Strategy.LEFT; } break; default: throw new IllegalArgumentException("Unexpected movement: " + movement); } System.out.println("Java 14: " + preJava14); // new Java 14 final Strategy movementStrategy = switch (movement) { case "up", "w" -> Strategy.UP; case "down", "s" -> Strategy.DOWN; case "d" -> Strategy.RIGHT; case "left", "a" -> { System.out.println("going left ..."); yield Strategy.LEFT; } default -> throw new IllegalArgumentException("Unexpected movement: " + movement); };
Java 13
https://www.oracle.com/java/technologies/javase/13-relnote-issues.html
Java 12
https://www.oracle.com/java/technologies/javase/12-relnote-issues.html