Java is a constantly evolving programming language, with its internal systems and syntax undergoing regular changes. These changes are driven by the Java Community Process (JCP) and Java Enhancement Proposals (JEPs), which play a central role in shaping the future of the Java platform. The JCP oversees the overall evolution of Java, while the JEPs provide a structured path for proposing, designing, and eventually implementing new features into the Java Virtual Machine (JVM). This collaborative process ensures that Java remains a dynamic language that continues to meet the needs of developers, keeping the community actively involved in its growth. With JDK 24 nearing its release, now is the perfect time to explore some of the JEPs that will be making their way through the process.
The JEP process can be quite complex, with a large number of proposals in various stages of development. The JEP Index on the OpenJDK homepage provides a comprehensive catalog of all proposals submitted to the Java platform, both past and present. However, this index can be overwhelming, as there is no clear distinction between major and minor changes. For example, groundbreaking projects like virtual threads are listed alongside proposals of smaller scope, making it difficult to immediately assess the significance of each JEP. Instead of grouping them by scope, the JEPs are organized by their stage of development, providing a clearer view of where each proposal stands in its journey to becoming part of Java.
The first category of JEPs is “In-flight JEPs,” which are proposals actively being worked on for inclusion in a future version of Java. These JEPs could be in various stages themselves, ranging from preview features available for experimentation to those that have been accepted and are in full development. These proposals have already passed several vetting stages and are likely to appear in future Java releases. “Submitted JEPs” represent proposals that have officially been submitted but not yet accepted. Once these proposals are greenlit, they transition into the in-flight category. Meanwhile, “Draft JEPs” are still in the early stages of development and are being worked on to refine them before they are officially submitted for consideration.
In addition to these categories, the JEP Index also includes “Delivered” JEPs, which represent past proposals that have been successfully implemented into the JVM. Some of these features have even been further modified through subsequent JEPs, demonstrating the iterative nature of Java’s evolution. “Withdrawn JEPs” are those proposals that didn’t gain traction or failed to work out and were eventually pulled from consideration. Finally, the index also includes “Process JEPs,” which focus on defining and improving the JEP process itself, ensuring that the procedure for submitting and reviewing proposals remains clear and effective. For some larger JEPs, like JEP 462: Structured Concurrency (Second Preview), the proposal may be broken down into smaller stages, with each part contributing to the final implementation. This structured approach helps manage the complexity of the changes being proposed and ensures that each aspect of the feature is thoroughly vetted.