Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Gth99spB1CzQmBFofXmU4Z
migration-17-25
Companion module for the ankurm.com post Java 17 to Java 25 Migration Guide: The Direct Jump.
The probes in src/probes/ are compiled once with JDK 17 (--release 17) and run unchanged on JDK 17.0.20.1 and JDK 25.0.4.1, which is what a team skipping 21 actually does. src/removed/ holds four tiny sources that use APIs removed or newly deprecated between 17 and 25; they are compiled with both JDKs.
export JDK17=/path/to/jdk-17 JDK25=/path/to/jdk-25
./scripts/run-all.sh # regenerates output/
| Output | Shows |
|---|---|
01-runtime-behaviour.txt |
Security Manager, Thread.stop, default charset, finalize, Unsafe on both runtimes |
02-startup-flags.txt |
Which 17-era JVM options still start on 25 |
03-compile-removed-apis.txt |
What javac says about four APIs on each JDK |
04-jdeps-jdeprscan.txt |
The scanners run with JDK 25 tools against the JDK 17-built jar |
05-gc-defaults.txt |
Default collector and heap ergonomics with no flags |
06-legacy-stack-on-25.txt |
mvn test on JDK 25 for four generations of one Spring app (from spring-boot-demo/openrewrite) |
07-framework-minimums.txt |
Vendor documentation quotes (not produced by running code) |