What is the Java Community Process (JCP)?

java jcp

The Java Community Process (JCP) is a collaborative effort between the Java community and Oracle Corporation to develop and evolve the Java Platform, Standard Edition (Java SE), Java Platform, Enterprise Edition (Jakarta EE), and related technologies.

The JCP was created in 1998 and is governed by the Java Specification Participation Agreement (JSPA), which defines the legal terms for participation in the JCP. The JCP Executive Committee (EC) oversees the JCP and is responsible for approving Java Specification Requests (JSRs), which are proposals for new features to the Java platform or even creating new JSRs. I am honored to be one of the JCP Executive Committee and to be able to help Java stay strong as a programming language representing SouJava.

Since Java is vastly used by companies, introducing a new Java feature requires approvals and many discussions will happen with experts involved. You can check in the following link all the JSRs from Java so that all makes sense to you.

The JCP operates through an open and transparent process that allows members of the Java community to participate and contribute to the evolution of the Java platform. Anyone can join the JCP as an individual, organization, or corporation by signing the JSPA and agreeing to the terms of participation.

Why is the JCP Important?

Java is the strongest language for community and open-source projects. There are more than 500 Java user groups around the world and there is a lot of valuable knowledge being shared by passionate developers. You can check the registered Java User Groups here.

Standardization: The JCP provides a standardized process for developing and evolving the Java platform, which helps to ensure that Java technologies are consistent and interoperable across different implementations and platforms.

Community involvement: The JCP provides a way for the Java community to participate in the development of the Java platform. Anyone can join the JCP and contribute to the development of new features and technologies, making the Java platform more inclusive and representative of the needs and interests of its users.

Innovation: The JCP fosters innovation by providing a framework for proposing and developing new features and technologies for the Java platform. This helps to keep Java relevant and up-to-date with the latest trends and technologies in the industry.

Compatibility: The JCP’s rigorous process for developing and testing Java technologies helps to ensure compatibility and stability across different Java implementations and platforms. This makes it easier for developers to write Java applications that will work reliably across different environments.

Overall, the JCP plays a critical role in the development and evolution of the Java platform and helps to ensure that Java remains a relevant and useful technology for developers and users worldwide.

Java Releases

Java follows a six-month release cadence, which means that a new version of Java is released every six months. Each release includes new features, enhancements, and bug fixes, as well as updates to the Java Development Kit (JDK) and the Java Runtime Environment (JRE).

Java uses a version numbering scheme that includes a major version number, a minor version number, and a security patch level. For example, the latest major version of Java was Java 17, which was released in September 2021. Java 17 is a long-term support (LTS) release, which means that it will receive security updates and bug fixes for several years. The previous LTS release was Java 11, which was released in September 2018 and is also still supported.

Java also includes preview features, which are new features that are still under development and may change or be removed in future releases. Preview features can be enabled with a command-line flag and are intended for testing and evaluation purposes.

Also, keep in mind that non-LTS versions can also be used in production, but remember that there won’t be security patches or bugs to be fixed. Unless a Java vendor provides you with specific support, you will have to change to the next Java version once it’s released.

The Java release cycle and versioning scheme are designed to provide a predictable and consistent schedule for new features and updates while maintaining backward compatibility and stability for existing applications. The 6 months release cycle also helps Java to evolve and have feedback from developers more quickly.

Java Projects for Features Development

Developing new features for Java is not a trivial process. Actually, there are projects to work on each modality of Java features. Therefore, let’s see what are those projects:

Project Amber: Project Amber is an OpenJDK project that focuses on productivity-oriented Java language features, such as local variable type inference, records, pattern matching, and switch expressions.

Project Valhalla: Project Valhalla is an OpenJDK project that aims to improve the performance and memory efficiency of Java by introducing new features such as value types and generic specialization.

Generic specialization allows the JVM to generate specialized versions of generic code for a specific type, which can also lead to significant performance improvements. For example, if a generic method is called with an argument of type Integer, the JVM can generate a specialized version of that method that is optimized for Integer arguments.

In addition to value types and generic specialization, Project Valhalla also includes work on other related features such as “inline classes” (a form of value type that is even more lightweight), “erased generics” (a way to simplify the implementation of generic types), and “virtual values” (a way to combine multiple value types into a single entity).

Project Panama: Project Panama is an OpenJDK project that aims to improve the way Java interacts with non-Java code, such as C++ libraries and operating system APIs.

Project Loom: Project Loom is an OpenJDK project that aims to improve the way Java handles concurrency and scalability by introducing lightweight threads and continuations.

One of the key features of Project Loom is the introduction of “virtual threads,” also known as “fibers.” Virtual threads are lightweight, user-space threads that are managed by the JVM rather than the operating system. They can be created and destroyed much more quickly and efficiently than traditional threads, which can lead to significant improvements in performance and resource usage.

Another important aspect of Project Loom is the simplification of concurrency APIs in Java. Project Loom will introduce a new set of APIs for creating and managing virtual threads, which are simpler and more intuitive than the existing APIs. This can make it easier for developers to write correct and efficient concurrent code, without requiring them to have a deep understanding of low-level concurrency primitives.

OpenJDK Website and Code

OpenJDK is a free and open-source implementation of the Java Platform, Standard Edition (Java SE). Java is a popular programming language used to develop a wide range of applications such as web applications, mobile applications, and enterprise software.

OpenJDK provides the Java Runtime Environment (JRE) and the Java Development Kit (JDK) for various operating systems such as Linux, Windows, and macOS. The JRE is required to run Java applications, while the JDK is used to develop and compile Java applications.

OpenJDK is developed and maintained by the OpenJDK community, which is composed of individuals and organizations that are committed to improving and advancing the Java platform. The OpenJDK community works closely with Oracle, the company that owns the Java trademark and oversees the official Java SE specification.

One of the key benefits of using OpenJDK is its open-source nature, which allows developers to access the source code and contribute to its development. This also means that OpenJDK can be customized and optimized for specific use cases, making it a popular choice among enterprise organizations.

In addition, OpenJDK is widely used by the Java development community and is supported by many third-party tools and frameworks. This makes it easy to develop, test, and deploy Java applications using OpenJDK.

To access the code from the OpenJDK and possibly contribute to it, access the following link:
https://github.com/openjdk

Java Vendors

There are many companies that provide a JDK, check out what are they.

Oracle: Oracle is the primary contributor to the OpenJDK project and offers the Oracle JDK, which is a commercially licensed version of OpenJDK that includes additional features and support.

Amazon: Amazon provides the Amazon Corretto JDK, which is a no-cost, multiplatform, production-ready distribution of OpenJDK that includes long-term support.

Azul Systems: Azul Systems offers the Zulu JDK, which is a certified, multiplatform, open-source distribution of OpenJDK that includes long-term support.

IBM: IBM provides the IBM SDK for Java, which is a no-cost, multilingual JDK that includes support for the latest Java SE releases.

Red Hat: Red Hat offers the Red Hat build of OpenJDK, which is a certified, production-ready distribution of OpenJDK that includes long-term support.

AdoptOpenJDK: AdoptOpenJDK is a community-driven initiative that provides free, open-source distributions of OpenJDK for a variety of platforms.

Important Java acronyms Vastly used by JCP

JDK: stands for Java Development Kit. It is a software development kit used to develop Java applications. The JDK includes tools and resources that are necessary for developing, testing, and deploying Java applications, such as a compiler, debugger, and other utilities. In addition, the JDK includes the Java Runtime Environment (JRE), which is required to run Java applications on a computer.

TCK: stands for Technology Compatibility Kit. In the context of Java, the TCK is a suite of tests that are used to verify that an implementation of the Java platform conforms to the Java specifications. The TCK is an important part of the Java Community Process (JCP), which is responsible for developing and maintaining the Java specifications.

Vendors who wish to certify their implementation of the Java platform as compatible with the Java specifications must pass the TCK. This helps ensure that Java applications can run consistently across different implementations of the Java platform.

JEP: JDK Enhancement Proposal, is a process used to propose and track new features and enhancements for the Java Development Kit (JDK). This process helps ensure that new features and enhancements are thoroughly reviewed and tested before they are included in a release, which helps maintain the stability and compatibility of the Java platform.

Each JEP proposes a specific change to the JDK, such as a new feature or improvement to an existing feature. The proposal must provide a detailed specification of the proposed change, including its motivation, design, and expected impact. The proposal is reviewed by the JEP sponsor and the Java community before it is approved for implementation in a future release of the JDK. The JEP process is an important part of the Java Community Process (JCP), which is responsible for developing and maintaining the Java specifications.

To help you clearly understand what is a JEP, check it out the following link with all JEPs listed here.

JSR: Java Specification Request, is a formal proposal submitted to the Java Community Process (JCP) to develop and revise a Java technology specification. The JSR defines the scope, requirements, and goals for the proposed specification, as well as the process for developing and maintaining it. Once a JSR is approved by the JCP Executive Committee, an expert group is formed to develop the specification, which is then reviewed and approved by the JCP before being finalized.

The JSR process is an important part of the Java Community Process, which is responsible for developing and maintaining the Java specifications. The JSR process provides a structured framework for developing Java technology specifications in a collaborative and open manner, with input from a wide range of stakeholders, including developers, vendors, and users. This helps ensure that the Java platform remains open, flexible, and responsive to the needs of the Java community.

How to become a JCP member?

To become a “Java citizen” it’s a great idea to join the JCP and stay tuned with what is going on in the Java community. You can start by being an associate member to understand better what is the JCP.

Then if you work for a company that believes it’s important to help Java stay strong become a full member where you are able to help more directly with the evolution of Java.

Associate Members are individuals who can contribute to JSRs and vote for the Executive Committee. Access the following link to become an associate member of the JCP.
Partner Members are Java User Groups and other non-profit organizations that can serve on and vote for the Executive Committee. (Not available at the moment)
Full Members can serve on Expert Groups, lead JSRs, and serve on and vote for the Executive Committee. Access the following link to become a full member of the JCP

The JCP Executive Committee

I feel very honored to be part of the executive committee of the JCP and it’s good for you to follow at least some members so you are closer to what is happening in the JCP and with Java.

You can follow some of them on Twitter:

Heather Vancura – Chair of the JCP
Bruno Souza – SouJava
Otavio Santana – SouJava
Ivar Grimstad – Eclipse Foundation
Simon Ritter – Azul Systems
Ken Fogel
Bruno Borges – Microsoft
Mala Gupta – Jet Brains
Chandra Guntur – BNY Mellon
Rodrigo Graciano – BNY Mellon
Miroslav Wengner

I also took a picture with the group, check it out:

jcp picture

Additionally, you can check the full list of the JCP executive members at the following link:
JCP Executive Comitee FULL List

How the JCP Helps Java Be Stronger?

The JCP plays a crucial role in the ongoing development and evolution of the Java programming language. With the support of numerous industry leaders, including IBM, Eclipse Foundation, Azul, Alibaba, Amazon, Arm, JetBrains, Microsoft, SAP, Oracle, and prominent Java User Groups such as SouJava, the JCP ensures that Java remains a vibrant and innovative language that continues to meet the needs of developers and businesses alike.

Some of these companies work directly on the JDK (Java Development Kit), while others participate in the JCP to help shape important decisions that impact the future of Java. By providing a platform for collaboration and feedback, the JCP enables developers, companies, and other stakeholders to contribute to the ongoing development and success of Java.

Conclusion

As an action to start getting involved with Java features development, become an associate member of the JCP, and become a Java citizen! It doesn’t take much time and you will learn a lot about the Java language by doing so! Access the following link:
Become an associate member of the JCP

Also, remember the important points. Let’s see them:

  • The Java Community Process (JCP) is a collaboration between the Java community and Oracle Corporation to develop and evolve the Java Platform, Standard Edition (Java SE), Java Platform, Enterprise Edition (Java EE), and related technologies.
  • The JCP was created in 1998 and is governed by the Java Specification Participation Agreement (JSPA), which defines the legal terms for participation in the JCP. The JCP Executive Committee (EC) oversees the JCP and is responsible for approving Java Specification Requests (JSRs).
  • The JCP provides a standardized process for developing and evolving the Java platform, which helps to ensure that Java technologies are consistent and interoperable across different implementations and platforms.
  • Anyone can join the JCP as an individual, organization, or corporation by signing the JSPA and agreeing to the terms of participation.
  • Java follows a six-month release cadence, and each release includes new features, enhancements, and bug fixes, as well as updates to the Java Development Kit (JDK) and the Java Runtime Environment (JRE).
  • Java uses a version numbering scheme that includes a major version number, a minor version number, and a security patch level. The latest major version of Java is Java 17, which was released in September 2021.
  • Java Projects for Features Development include Project Amber, Project Valhalla, Project Panama, and Project Loom.
Written by
Rafael del Nero
Join the discussion