How is Java made? Let’s take a look at the process for introducing new features to the platform, and at some of the big JDK enhancement projects on the horizon.
Java is widely used and heavily relied on, to put it mildly. It is a major part of our software infrastructure. Despite having a weighty obligation to stability, the Java platform has managed to remain responsive to changing circumstances. The creativity of the people who use Java is part of the reason. Java features an official process for incorporating changes into the platform while achieving a high degree of stability.
Let’s get an overview of how the Java platform is enhanced. We’ll also look at some of the most prominent new features on the horizon.
JCP: Java Community Process
Even a longtime Java developer may not have a good understanding of how the platform is developed and maintained. Before we jump into the upcoming big projects, let’s get a sense of how the Java process works. The main takeaway here is that it really is an open process. If you have a desire to contribute, it’s doable: Talk to a contributor, join a group, submit a proposal, fix a bug.
At the root of Java development is the Java Community Process (JCP). This is a kind of self-aware foundational document that defines how to shepherd modifications into the platform, and also allows for modifying the process itself. The latest version of the JCP is 2.11, which was adopted in 2019.
The JCP formalizes how new features and changes to Java (i.e., technical specifications) are proposed, reviewed, and approved, including defining various roles that people can inhabit. These roles help to offer a place for the Java user community to participate in the governance of the platform.
JEP: JDK Enhancement Proposal
The process of generating a promising JSR is non-trivial. There are a few avenues through which ideas are channeled into becoming JSRs. The most prominent of these is the JEP. Many of the most ambitious changes to Java (like lambdas) originate as JEPs. Here is the list of the non-defunct JEPs. It’s an interesting document to browse through during an idle moment.
The process of delivering a new JDK into the world is itself a JEP. It’s also a major community event; coverage starts here.
JDK Projects
When an effort is broad enough, it is considered a JDK Project. This is an umbrella for a broad range of artifacts from docs to code, often including one or more JEPs. Projects involve one or more working groups. Groups are dedicated to various areas of the Java platform. A project usually has several active people in the author role.
Major JDK Projects in progress
The OpenJDK mainpage notes that the key active projects are Amber, Loom, Panama, and Valhalla. Let’s get a sense of what each one is about.
Amber Project Amber is a collection of smaller projects. It’s intended to help usher these projects through the process of becoming actual features. So it’s a kind of incubator. Amber includes two active projects, nine delivered, three on hold, and one that has been withdrawn.