Oracle engineer Lois Foltan has confirmed that JEP 401 for Value Classes and Objects will be integrated into the OpenJDK mainline early next month targeting JDK 28, a change so large that other committers have been asked to pause major work during integration

Project Valhalla’s value classes are heading to JDK 28, a 197,000-line change that rewrites how Java handles object identity.

Oracle software engineer Lois Foltan has confirmed that Java Enhancement Proposal 401, which introduces value classes and objects to the language, will be integrated into the OpenJDK mainline early next month targeting JDK 28. The change is part of Project Valhalla, a long-running effort to address one of Java’s oldest performance limitations. The pull request adds more than 197,000 lines of code across 1,816 changed files, according to The Register.

Foltan described it as an “ extremely large change ” in a post to the OpenJDK mailing list and asked other committers to avoid large commits during the integration window. The current Java Development Kit is version 26, with JDK 27 expected in September 2026 and JDK 28 in March 2027. JEP 401 will arrive as a preview feature, meaning developers can opt in but it will not be enabled by default.

The problem JEP 401 addresses is fundamental to how Java works. Outside a small set of primitives like int, char, and double, every type in Java is a reference type. That means every object gets its own unique identity in memory, even when two objects hold identical data.

The latest rumblings from the EU tech scene, a story from our wise ol' founder Boris, and some questionable AI art. It's free, every week, in your inbox. Sign up now!

Java’s LocalDate class, for example, stores date values, but two instances representing the same date will return false when compared with the == operator because they are different objects in memory.

The Integer wrapper class makes this even more confusing. Java internally caches Integer instances for values below 128, so two Integer objects with the same small value can compare equal with ==. For larger values, == always returns false even when the underlying numbers match.

JEP 401 describes this behaviour as “ unwanted complexity, ” and Java editors generally warn against using == with Integer as a result.

Value classes eliminate this problem by creating objects that lack identity entirely. A value object is distinguished solely by the values of its fields, not by where it sits in memory. This gives the JVM freedom to store value objects in ways that reduce memory overhead and improve cache locality.

Iterating over value types is more efficient because the runtime does not need to dereference pointers to reach the actual data.

JEP 401 will migrate some existing JDK classes, including Integer, to value classes. The number of migrated classes is expected to grow gradually over subsequent releases. Developers will also be able to declare their own value classes for domain types that represent pure data, things like coordinates, currency amounts, or timestamps.

Project Valhalla has been in development since 2014, making it one of the longest-running efforts in Java’s history. The complexity of changing how object identity works at the JVM level, while maintaining backward compatibility with billions of lines of existing Java code, explains the timeline. Some onlookers have joked about reaching Valhalla itself, the afterlife realm in Norse mythology, before the project ships.

Oracle’s Java Language Architect Brian Goetz cautioned on Reddit that JEP 401 is “ just the first part of Valhalla. ” He said removing identity is the first barrier, which exposes new optimizations especially for smaller objects. But fully treating objects with value semantics requires giving up more, including nullability and what Goetz called “ atomicity-safety-under-race. ”

He compared the trajectory to C# structs, noting that other languages are working on similar capabilities.

Goetz also warned that Valhalla will introduce deliberate breaking changes. Code that synchronizes on Integer objects, for example, will fail with an exception once Integer becomes a value class. He said JEP 401 will likely still be in preview in the next long-term support release of the JDK, which is expected to be JDK 29 in September 2027.

“ Hoping for it to exit preview for 29 seems … optimistic, ” he wrote.

The timing arrives as Oracle restructures aggressively , cutting up to 30,000 employees to fund its AI infrastructure pivot. But the Java platform team appears largely insulated from those cuts, and Project Valhalla represents the kind of deep language work that cannot be accelerated by throwing more engineers at it. Java gained more than eight million new developers between 2021 and 2023, and its relevance to cloud computing and enterprise systems means any fundamental performance improvement ripples across a vast ecosystem.

For the millions of Java developers who have waited twelve years for value types, the preview in JDK 28 is a milestone. For the rest of Valhalla, Goetz’s message is clear: do not hold your breath.

Cristian Dina is the CRO at The Next Web. He has interviewed 300+ industry leaders and authored the book King of Networking, establishing hi (show all) Cristian Dina is the CRO at The Next Web. He has interviewed 300+ industry leaders and authored the book King of Networking, establishing himself as one of the most connected and respected voices in the ecosystem. At just 23 years old, Cristian was included in the Forbes 30 Under 30 2025 list, representing a new generation of tech builders, bold thinkers who move fast, build with purpose, and create real impact.