Have you suffered ThreadLocals?
Scoped Values are a significant enhancement to Java because they provide a more efficient and safer mechanism for sharing data across threads, especially with virtual threads. Unlike thread-local variables, Scoped Values offer controlled mutability, bounded lifetimes, and reduced overhead, addressing critical issues like memory leaks and complexity, ultimately leading to more reliable and performant applications.
https://openjdk.org/jeps/487
Scoped Values are a significant enhancement to Java because they provide a more efficient and safer mechanism for sharing data across threads, especially with virtual threads. Unlike thread-local variables, Scoped Values offer controlled mutability, bounded lifetimes, and reduced overhead, addressing critical issues like memory leaks and complexity, ultimately leading to more reliable and performant applications.
https://openjdk.org/jeps/487
Not strictly related to Java or JVM but I liked the article and I hope you find it interesting
https://codesai.com/posts/2025/03/mockist-tdd-unit-not-the-class
https://codesai.com/posts/2025/03/mockist-tdd-unit-not-the-class
Codesai
The class is not the unit in the London school style of TDD
Somos un equipo versado en Extreme Programming, ofrecemos desarrollo de software, formaciΓ³n, asesoramiento y apoyo en proyectos.
β€1
JDK 24 is out!! The final release before the new LTS coming in September.
https://blogs.oracle.com/java/post/the-arrival-of-java-24
https://blogs.oracle.com/java/post/the-arrival-of-java-24
π1
JDK 24 introduces the concept of an ahead-of-time cache which incrementally improves upon the CDS technology that has been a part of the JDK since 2004.
JEP 483 is a first deliverable of the Project Leyden whose goal it is to improve startup, warmup and footprint of Java programs while staying true to the dynamic nature of the Java language
https://inside.java/2025/03/19/performance-improvements-in-jdk24/
inside.java
Performance Improvements in JDK 24
Java is constantly evolving with ever increasing performance. JDK 24 comes with significant performance improvements compared to previous versions including improved virtual thread handling, reduced startup time, optimized FFM memory bulk operationsβ¦
π1
The kotlin-metadata-jvm library extracts structured information from compiled Kotlin .class files, such as class names, visibility, and signatures. You can use it in projects that need to analyze compiled Kotlin declarations.
https://kotlinlang.org/docs/metadata-jvm.html#modify-metadata
https://kotlinlang.org/docs/metadata-jvm.html#modify-metadata
Kotlin Help
Kotlin Metadata JVM library | Kotlin
Context parameters will replace context receivers, an evolution of the feature which addressed all provided feedback
More information on the migration from context receivers to context parameters and a reference to the new KEEP in the following post:
https://blog.jetbrains.com/kotlin/2025/04/update-on-context-parameters/
Context parameters are an upcoming feature in Kotlin, with a variety of use cases including more powerful extension methods and better tools for DSL development. Kotlin 2.2.0 will feature context parameters in Beta, and dedicated IntelliJ IDEA support will be available from 2025.1
More information on the migration from context receivers to context parameters and a reference to the new KEEP in the following post:
https://blog.jetbrains.com/kotlin/2025/04/update-on-context-parameters/
The JetBrains Blog
Update on Context Parameters - The JetBrains Blog
Context parameters will be replacing context receivers in Kotlin, with version 2.2.0 featuring them as Beta. We are committed to providing an easy migration between both features, including dedicated compiler and IntelliJ IDEA support.
Gradle 9 is approaching π
https://docs.gradle.org/9.0.0-rc-3/userguide/upgrading_major_version_9.html
https://docs.gradle.org/9.0.0-rc-3/userguide/upgrading_major_version_9.html
π1
JVector, the library that powers DataStax Astra vector search, now supports indexing larger-than-memory datasets by performing construction-related searches with compressed vectors. This means that the edge lists need to fit in memory, but the uncompressed vectors do not, which gives us enough headroom to index Wikipedia-en on a laptop
https://foojay.io/today/indexing-all-of-wikipedia-on-a-laptop/
foojay
Indexing all of Wikipedia, on a laptop
foojay is the place for all OpenJDK Update Release Information. Learn More.
I will publish more detailed posts about most relevant features for me π€π€
https://blogs.oracle.com/java/post/the-arrival-of-java-25
https://blogs.oracle.com/java/post/the-arrival-of-java-25
π Java 25 introduces Compact Object Headers, a feature designed to shrink object sizes!
π¦π This feature reduces the size of object headers from 96-128 bits down to just 64 bits on 64-bit systems.
π€ What does this mean for your apps?
β Smaller heap sizes πΎ
β Improved deployment density
β Increased data locality
This feature was included a experimental in Java 24 (JEP 450 - https://openjdk.org/jeps/450) π§ͺ and is now a stable feature in Java 25 (JEP 519 - https://openjdk.org/jeps/519)! π
β οΈ Important: It's not enabled by default. You need to activate it with a JVM flag.
π» To enable it, simply use this command:
π Want to learn more? Check out the detailed article from InfoQ for performance benchmarks:
https://www.infoq.com/news/2025/06/java-25-compact-object-headers/
π¦π This feature reduces the size of object headers from 96-128 bits down to just 64 bits on 64-bit systems.
π€ What does this mean for your apps?
β Smaller heap sizes πΎ
β Improved deployment density
β Increased data locality
This feature was included a experimental in Java 24 (JEP 450 - https://openjdk.org/jeps/450) π§ͺ and is now a stable feature in Java 25 (JEP 519 - https://openjdk.org/jeps/519)! π
β οΈ Important: It's not enabled by default. You need to activate it with a JVM flag.
π» To enable it, simply use this command:
java -XX:+UseCompactObjectHeaders MyApp
π Want to learn more? Check out the detailed article from InfoQ for performance benchmarks:
https://www.infoq.com/news/2025/06/java-25-compact-object-headers/
InfoQ
Java 25 Integrates Compact Object Headers with JEP 519
Java 25 introduces Compact Object Headers (JEP 519), delivering up to 30% CPU savings and reduced memory usage for applications with small objects. This user-friendly feature compresses object headers from 12 bytes to 8, requiring only a JVM flag to activate.β¦
Ever call Java 21 an "LTS release"?
OpenJDK's own site already says it's "superseded." π
π https://jdk.java.net/21/
Friendly reminder:
LTS comes from vendors (Oracle, Azul, etc.), not OpenJDK.
OpenJDK just builds the JDK for ~6 months and dips. π
It's not an "LTS version," it's a version that gets LTS. Pass it on!
P.S. Yeah, this is a semantic debate, but it's relevant for understanding the difference between OpenJDK (the project), Java (the language), and the vendor distributions we all use. π
OpenJDK's own site already says it's "superseded." π
π https://jdk.java.net/21/
Friendly reminder:
LTS comes from vendors (Oracle, Azul, etc.), not OpenJDK.
OpenJDK just builds the JDK for ~6 months and dips. π
It's not an "LTS version," it's a version that gets LTS. Pass it on!
P.S. Yeah, this is a semantic debate, but it's relevant for understanding the difference between OpenJDK (the project), Java (the language), and the vendor distributions we all use. π