A comprehensive walkthrough of the breaking changes, gotchas, and migration challenges when upgrading from Java 8 to Java 25. Covers static analysis tools (jdeps, jdepsscan, jnativescan, javap, japicomp), runtime flags, and categories of failures: things that won't start (obsolete GC flags, removed security manager), things that crash (reflection on JDK internals, removed packages like CORBA/Nashorn, unsafe memory access), silent behavioral changes (locale defaults, UTF-8 charset change, GC model changes, finalization removal), and recompilation issues (serialization UID mismatches, annotation processors like Lombok, string concatenation bytecode changes). Emphasizes that 90% of migration pain comes from third-party dependencies, many of which are unmaintained. Recommends OpenRewrite for mechanical code fixes and advocates for moving to Java 25 for virtual threads, GC improvements, and staying on the modern release cadence.

49m watch time

Sort: