Java 25 officially released
Upgrading and LTS adoption
- Many expect 8→11/17 as the painful jumps; once past modules and removed internal APIs, 17→21→25 is described as “smooth sailing.”
- Some are already moving to 25 immediately; others joke their employers will still be on 17 “in ten years,” citing massive regression-testing burdens and risk-averse enterprise culture.
- There’s debate whether upgrade pain is a Java problem or pure organizational mismanagement and library rot (e.g., ancient third‑party jars that never made it past 1.7).
New language/JDK features
- Disappointment that structured concurrency is still not fully released, though some prefer the deliberate preview process to “standardize first, implement later” approaches in other languages.
- Scoped values are welcomed for framework-style code without relying on global singletons or god objects.
- Constructor changes (validation/transformation before
super) are seen as fixing a long-standing misfeature. - Vector API and Valhalla are viewed as key for numeric/matrix work and ML; Valhalla’s long timeline is criticized but also praised as evidence of careful engineering.
- Compact source files and instance
mainmethods are seen as making Java more approachable for beginners.
Stability vs. migration pain
- Several report very old Java code (even 1.4-era or Java 8) still running fine on modern LTS releases, reinforcing Java’s reputation for stability.
- Others counter with horror stories where large, legacy systems could not realistically be moved off very old JVMs due to dead dependencies and massive rework.
Tooling, IDEs, and UI
- Strong consensus that tooling (IDEs, refactoring like safe “extract method,” sophisticated profilers, GC tools) is a major part of Java’s value proposition.
- Debate over Swing: outdated but stable and still works; JavaFX is generally preferred for new desktop apps, though some still like Swing’s maturity and cross-platform behavior.
Licensing and Oracle
- Repeated clarification: OpenJDK (and downstream builds like Temurin, Corretto, Microsoft’s build) are GPLv2+Classpath and free to use; Oracle’s proprietary JDK has more complex licensing.
- Some remain uneasy, arguing that needing to care about vendor distributions at all is friction compared to other ecosystems; others say this concern is overblown and comparable to commercial Python or Linux distributions.
Comparisons, culture, and verbosity
- Many argue the JVM remains an excellent foundation versus Go, Python, TypeScript, etc., especially for large backends, threading, and observability.
- Others think culture is Java’s biggest liability: “enterprise” patterns, over-abstraction, and verbose streams/Optional APIs, even though the language now supports more concise, functional styles.
- Kotlin, Scala, Clojure, and C# are mentioned as alternatives that preserve JVM or Java-like strengths with more modern language features.