Outside your usual reading: engineers building the Java language itself just merged the first preview of a change called Value Objects into the master branch (the main, official version of the code) of OpenJDK, the open source project behind the Java language. The pull request (a proposed code change submitted for review), numbered 31120, formally implements JEP 401: Value Objects (Preview), tracked as issue JDK-8389219. It also carries a second, related change, JEP 539: Strict Field Initialization in the JVM (Preview), tracked as JDK-8389220. The two ride together in one pull request because JEP 401 depends on strict field initialization to work correctly. It is a reminder that serious engineering keeps moving even when the headlines are all about AI.
Here is the plain version of what a value object is. Today, when Java code creates a small object, say a pair of coordinates or a price paired with a currency, the language stores it as a pointer to a separate spot in memory, the same way it stores a large, complex object. That costs an extra memory lookup every time the object gets used, plus the memory to store the pointer itself. Value objects let the JVM (the program that runs compiled Java code) store small, simple objects directly, the way it already stores plain numbers, skipping the pointer and the extra lookup. The strict field initialization change that rides alongside it tightens the rules for when an object's fields must be set, which the value objects change depends on to work correctly.
The scale of the review shows how big a change this is to the core of the language. Several people are listed formally as reviewers, among them Coleen Phillimore, Ioi Lam, Maurizio Cimadamore, Jan Lahoda, Dean Long, Jaikiran Pai, Viktor Klang, Serguei Spitsyn, and Chris Plummer. OpenJDK's own merge checklist spells out the bar for a change like this: the change must not contain extraneous whitespace, its commit message must refer to a tracked issue, and it needs at least two formal reviews, with at least one from someone holding the project's official "Reviewer" role. A change this size does not get waved through. It gets checked by the people who own the parts of Java it touches.
Because a change like this cannot be reviewed sensibly in one pull request, the team split the discussion into three separate "sub-review" pull requests: one for the Java language implementation (JDK-8317277), one for the JVM implementation (JDK-8317278), and one for the standard library implementation (JDK-8317279). Each sub-review carries the same full set of code changes, not just its own slice, so reviewers do not lose context, but comments on each are meant to stay focused on that one area, since "comments and review for a change this large will not scale well in a single pull request." Once the whole change is signed off, that sign-off is recorded only on this main pull request, number 31120, and the three sub-review pull requests are closed without ever being merged themselves. They exist purely to organize the conversation.
The actual code is developed in a separate branch called valhalla/lworld, and gets synced into this main pull request as work progresses there. The team notes it "frequently conflicts with jdk/master," the main line of Java development, so anyone reviewing has to check both repositories to see the real, current state of the code. The people signing off work on the JVM, the compiler, and the standard library at once, since a change like this touches all three.
This is still a preview, not a finished feature. Java releases early versions of new language features behind a flag (a setting you turn on to test it) so developers can try them and report problems before they become permanent and hard to change. Changes at this level of the language typically go through more than one preview round before they graduate to a normal part of Java. One small sign of how Java's own process has changed: the pull request carries a checkbox confirming the contribution follows "the OpenJDK Interim AI Policy." Nothing changes yet for code you write today, but this is the point where the change stopped being an experiment and started being reviewed for real inclusion.
The discussion travelled well outside the Java world too. It reached the front page of Hacker News with 138 points and 63 comments, a solid showing for a deep, technical language change rather than a product launch.