---
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 {
}
```

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/