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

---
title: Java 25 
description:  JDK 25 GC /
category: Java
tag:
  - Java
head:
  - - meta
    - name: keywords
      content: Java 25,JDK25,LTS,,, Shenandoah,,
---

JDK 25  2025  9  16  

JDK 25  Oracle  JDK  LTSOracle  LTS  JDK 8JDK 11JDK 17JDK 21  JDK 25

JDK 25  18 

- [JEP 506: Scoped Values ()](https://openjdk.org/jeps/506)
- [JEP 512: Compact Source Files and Instance Main Methods ()](https://openjdk.org/jeps/512)
- [JEP 519: Compact Object Headers ()](https://openjdk.org/jeps/519)
- [JEP 521: Generational Shenandoah ( Shenandoah GC)](https://openjdk.org/jeps/521)
- [JEP 507: Primitive Types in Patterns, instanceof, and switch (, )](https://openjdk.org/jeps/507)
- [JEP 505: Structured Concurrency (, )](https://openjdk.org/jeps/505)
- [JEP 511: Module Import Declarations ()](https://openjdk.org/jeps/511)
- [JEP 513: Flexible Constructor Bodies ()](https://openjdk.org/jeps/513)
- [JEP 508: Vector API ( API, )](https://openjdk.org/jeps/508)

 JDK 8  JDK 25 

![](https://oss.javaguide.cn/github/javaguide/java/new-features/jdk8~jdk24.png)

## JDK 25

### JEP 506: 

Scoped Values `ThreadLocal`

```java
final static ScopedValue V = ScopedValue.newInstance();

// In some method
ScopedValue.where(V, )
           .run(() -> { ... V.get() ... call methods ... });

// In a method called directly or indirectly from the lambda expression
... V.get() ...
```



### JEP 512: 

 [JEP 445](https://openjdk.org/jeps/445 "JEP 445")JDK 21 JDK 22JDK 23  JDK 24  JDK 25 

 Java  `public class`  `main` 

```java
class HelloWorld {
    void main() {
        System.out.println("Hello, World!");
    }
}
```



```java
void main() {
    System.out.println("Hello, World!");
}
```

 Java  `public static void main(String[] args)`  Java 

### JEP 519: 

 [JEP 450](https://openjdk.org/jeps/450 "JEP 450")JDK 24JDK 25 

 64  HotSpot  96-128 12-16  64 8 

 JVM 

- JDK 24 
  `$ java -XX:+UnlockExperimentalVMOptions -XX:+UseCompactObjectHeaders ...`
- JDK 25  `-XX:+UseCompactObjectHeaders` 

### JEP 521:  Shenandoah GC

Shenandoah GC  JDK 12  JDK 15  `-XX:+UseShenandoahGC` 

Shenandoah  Red Hat 

 Shenandoah  GCShenandoah  CPU 

Shenandoah GC 

- JDK 24 `-XX:+UseShenandoahGC -XX:+UnlockExperimentalVMOptions -XX:ShenandoahGCMode=generational`
- JDK 25  `-XX:+UseShenandoahGC -XX:ShenandoahGCMode=generational` 

### JEP 507: 

 [JEP 455](https://openjdk.org/jeps/455 "JEP 455")JDK 23

 `switch`  `instanceof` `int`, `double`, `boolean` 

```java
static void test(Object obj) {
    if (obj instanceof int i) {
        System.out.println("int: " + i);
    }
}
```

 Java 

### JEP 505: 

JDK 19  API JDK 25  API  `java.util.concurrent`



 API  `StructuredTaskScope`

`StructuredTaskScope` 

```java
    try (var scope = StructuredTaskScope.open()) {
        // fork
        Subtask subtask1 = scope.fork(task1);
        Subtask subtask2 = scope.fork(task2);
        // 
        scope.join();
        // 
        ... process results/exceptions ...
    } // close
```

 JDK 

### JEP 511: 

 [JEP 476](https://openjdk.org/jeps/476 "JEP 476")JDK 23 [JEP 494](https://openjdk.org/jeps/494 "JEP 494")JDK 24JDK 25 

 Java  Java 



```java
//  java.base  ListMapStream 
import module java.base;

public class Example {
    public static void main(String[] args) {
        String[] fruits = { "apple", "berry", "citrus" };
        Map fruitMap = Stream.of(fruits)
            .collect(Collectors.toMap(
                s -> s.toUpperCase().substring(0, 1),
                Function.identity()));

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

### JEP 513: 

 [JEP 447](https://openjdk.org/jeps/447 "JEP 447")JDK 22 [JEP 482 ](https://openjdk.org/jeps/482 "JEP 482 ")JDK 23 [JEP 492](https://openjdk.org/jeps/492 "JEP 492")JDK 24JDK 25 

Java `super(...)`  `this(...)` 

 `super(..)`  `this(..)` 

 Java 

```java
class Person {
    private final String name;
    private int age;

    public Person(String name, int age) {
        if (age < 0) {
            throw new IllegalArgumentException("Age cannot be negative.");
        }
        this.name = name; // 
        this.age = age;
        // ... 
    }
}

class Employee extends Person {
    private final int employeeId;

    public Employee(String name, int age, int employeeId) {
        this.employeeId = employeeId; // 
        super(name, age); // 
        // ... 
    }
}
```

### JEP 508:  API

 API  CPU 

 API 



```java
void scalarComputation(float[] a, float[] b, float[] c) {
   for (int i = 0; i < a.length; i++) {
        c[i] = (a[i] * a[i] + b[i] * b[i]) * -1.0f;
   }
}
```

 Vector API 

```java
static final VectorSpecies SPECIES = FloatVector.SPECIES_PREFERRED;

void vectorComputation(float[] a, float[] b, float[] c) {
    int i = 0;
    int upperBound = SPECIES.loopBound(a.length);
    for (; i < upperBound; i += SPECIES.length()) {
        // FloatVector va, vb, vc;
        var va = FloatVector.fromArray(SPECIES, a, i);
        var vb = FloatVector.fromArray(SPECIES, b, i);
        var vc = va.mul(va)
                   .add(vb.mul(vb))
                   .neg();
        vc.intoArray(c, i);
    }
    for (; i < a.length; i++) {
        c[i] = (a[i] * a[i] + b[i] * b[i]) * -1.0f;
    }
}
```

 Java  C++ Java 

Web Proxy Viewer  |  New URL  |  Original Page