[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/xinrun0928/JavaGuide/main/docs/java/new-features/java14-15.md [Back]  [Original]

---
title: Java 14 ~ 15 
category: Java
tag:
  - Java
---

## Java14

### 

 JVM `-XX:+ShowCodeDetailsInExceptionMessages`

```java
a.b.c.i = 99; // 
```

Java 14 

```java
Exception in thread "main" java.lang.NullPointerException
    at NullPointerExample.main(NullPointerExample.java:5)
```

Java 14 

```java
 // 
Exception in thread "main" java.lang.NullPointerException:
        Cannot read field 'c' because 'a.b' is null.
    at Prog.main(Prog.java:5)
```

### switch ()

Java12  switch Java14  JDK14 

Java12  switch  lambda  break Java13  `yield`  block 

```java
String result = switch (day) {
            case "M", "W", "F" -> "MWF";
            case "T", "TH", "S" -> "TTS";
            default -> {
                if(day.isEmpty())
                    yield "Please insert a valid day.";
                else
                    yield "Looks like a Sunday.";
            }

        };
System.out.println(result);
```

### 

#### record 

`record`  **** Java  `record`  `class`  `toString()``hashCode()`, `equals()`

 `class`  lombok `@Getter,@ToString,@EqualsAndHashCode`

```java
/**
 * 
 * 1. final
 * 2. 
 * record
 */
final class Rectangle implements Shape {
    final double length;
    final double width;

    public Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }

    double length() { return length; }
    double width() { return width; }
}
/**
 * 1. record
 * 2. equals()hashCode()toString()
 * 3. toString
 */
record Rectangle(float length, float width) { }
```

#### 

Java14 

- `\` : 
- `\s` 

```java
String str = "";

String str2 = """
         \
        """;
System.out.println(str2);//  
String text = """
        java
        c++\sphp
        """;
System.out.println(text);
//
java
c++ php
```

#### instanceof 

**** Java 12 

### Java14 

-  Java11  ZGC  G1  GC  Linux  Java14  MacOS  Window ZGC  G1 
-  CMS(Concurrent Mark Sweep) 
-  jpackage  jar  linux `deb``rpm`window `msi``exe`

## Java15

### CharSequence

`CharSequence`  `isEmpty()`  true

```java
public interface CharSequence {
  default boolean isEmpty() {
      return this.length() == 0;
  }
}
```

### TreeMap

`TreeMap` 

- `putIfAbsent()`
- `computeIfAbsent()`
- `computeIfPresent()`
- `compute()`
- `merge()`

### ZGC()

Java11  ZGC 

ZGC  Java 

ZGC  Java 15 

 G1 ZGC

```bash
$ java -XX:+UseZGC className
```

### EdDSA()

 Edwards-Curve Digital Signature Algorithm EdDSA

 ECDSA  JDK ( ECDSA)

```java
KeyPairGenerator kpg = KeyPairGenerator.getInstance("Ed25519");
KeyPair kp = kpg.generateKeyPair();

byte[] msg = "test_string".getBytes(StandardCharsets.UTF_8);

Signature sig = Signature.getInstance("Ed25519");
sig.initSign(kp.getPrivate());
sig.update(msg);
byte[] s = sig.sign();

String encodedString = Base64.getEncoder().encodeToString(s);
System.out.println(encodedString);
```



```
0Hc0lxxASZNvS52WsvnncJOH/mlFhnA8Tc6D/k5DtAX5BSsNVjtPF4R4+yMWXVjrvB2mxVXmChIbki6goFBgAg==
```

### ()

 Java 15 

### (Hidden Classes)

frameworks

### 

#### 

Java 15  Java 14  **Sealed Classes**



 `Person`  `Employee`  `Manager` 

```java
public abstract sealed class Person
    permits Employee, Manager {

    //...
}
```

 `sealed``non-sealed`  `final`

```java
public final class Employee extends Person {
}

public non-sealed class Manager extends Person {
}
```

![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/javaguide/image-20210820153955587.png)

 permits Java 

#### instanceof 

Java 15 

 Java Java  `instanceof` 

### Java15 

- **Nashorn JavaScript ** Nashorn  Java8  JavaScript Java9  Nashorn  ES6  Java 11  Java 15 
- **DatagramSocket API **
- **Biased Locking**   JVM  `-XX:+UseBiasedLocking`   API
- ......

## 

### 

 oracle `This is a preview feature, which is a feature whose design, specification, and implementation are complete, but is not permanent, which means that the feature may exist in a different form or not at all in future JDK releases. To compile and run code that contains preview features, you must specify additional command-line options.`

 JDK  

`switch` Java12  Java13  Java14  JDK  JDK 

 JDK 

### JVM 

 Java  JVM 

****

 Java **JVM **

## 

- Oracle Java14 record 
- java14-features 
- Java 14 Features : 
- What is new in Java 15: https://mkyong.com/java/what-is-new-in-java-15/

Web Proxy Viewer  |  New URL  |  Original Page