How the JCP Program Evolves to Meet the Needs of the Java Developer Community
Heather VanCura, Chair
The Java Community Process (JCP) Program was initially formalized in December 1998 at the Java for Business Conference at the Jacob K. Javits Convention Center in New York City. The need for a formalized Java specification process was based on the informal process used since the introduction of Java technology in 1995. Much of the success of the Java Programming language can be attributed to how the language evolves and how the worldwide community of Java developers collaborates in that evolution.
The JCP has evolved over time from that first version of the process, with each iteration of the JCP revised as a JSR of its own. Subsequent versions of the JCP have introduced new milestones, requirements, or streamlining of requirements, but every update to the JCP Program has focused on maintaining the value of Java technology and community collaboration.
The JCP Program is the process by which the international Java community standardizes and ratifies the specifications for Java technologies. The JCP ensures high-quality specifications are developed using an inclusive, consensus-based approach. Specifications ratified by the JCP must be accompanied by a Reference Implementation (RI), to prove the specification can be implemented, and a Technology Compatibility Kit (TCK), the suite of tests, tools, and documentation that is used to test implementations for compliance with the specification.
Our experience has demonstrated that the best way to develop a specification is to start with a handful of industry experts who have a deep understanding of the technology in question and then have a strong technical lead work with them to create a first draft. Consensus is then built using an iterative review process that allows an ever-widening audience to participate and to see their comments and suggestions incorporated into successive draft versions of the specification prior to its final release.
An Executive Committee (EC) representing a cross-section of both major stakeholders and other members of the Java community is responsible for approving the passage of specifications through the JCP's various stages and for reconciling discrepancies between specifications and their associated test suites. The JCP Program membership includes corporations, non-profit organizations, Java User Groups, and individuals. JCP Members can serve on JSRs and vote in the annual JCP EC Elections.
As an example, the Java Standard Edition (Java SE) Platform is developed in OpenJDK, as a collection of Java Enhancement Proposals (JEP) that are then submitted to the JCP Program as a JSR and approved by the JCP EC before being finalized and ratified for use in production.
Governance
Stewardship of a community is easy for new and emerging technology. After 29 years, Java has become one of the most-used and trusted programming languages used by millions of developers worldwide. Leadership of a community at this scale can be complex. We strive to find a balance of stability and innovation, provide a stable and predictable platform for customers, and create new features for technical users. In addition to leadership the JCP Program, Oracle consistently provides stewardship and leadership of the Java Community by investing in engineering, community, and market adoption of the technology.
Program Office and Chair
I have been involved with the JCP Program since 2000 and served as the chairperson of the JCP EC since 2017, In my role as the chairperson, I lead and organize the JCP EC meetings, working groups, and broader governance and ecosystem conversations on an ongoing basis.
I also lead the JCP Program Management Office (PMO). The PMO is responsible for the day-to-day operations, growth and support of the community; the JCP membership; the JSR Spec Leads and Expert Groups; the maintenance of the JCP.org web site; and community events and social media communications. In addition, we have a leadership role in the broader Java developer community, in terms of engagement with the work of the JCP Program, in collaborating with Java User Groups (JUGs), sometimes speaking at their meetings and Java developer events around the world, and serving as a mentor, leader, and organizer of hack days with some of these groups.
In the JCP we evolve the process as a series of Java Specification Requests (JSRs) designed to meet the needs of the development community. The updates focus on transparency, streamlining the JCP Program, and broadening its membership. These JSRs modify the JCP's processes - through modifying the JCP Process Document. Once the changes are complete, they apply to all new JSRs and to future Maintenance Releases of existing JSRs for the Java platform.
The timeline below highlights some of the changes and evolutions over time.
Timeline
For a dynamic version of the timeline, visit the "Our work with industry leaders" page and click the "See now" button where it says "Celebrate the 25th Anniversary of the JCP Program."
1998 - JCP 1.0 - Created JCP, in which Sun approved requests and members contributed to specifications.
2000 - JCP 2.0 - Established Executive Committees (EC). The EC oversees the development and evolution of Java technologies within the JCP to review and approve JSRs.
2002 - JCP 2.5 - Equal standing to individual developers participating in the JCP. Individuals can join and participate in the JCP and JSRs.
2004 - JCP 2.6 - Embraced open source development model and licensing, streamlined processes, opened up early drafts, license, and TCK terms to the public.
2006 - OpenJDK launched, where the work of the Java Platform development takes place.
2009 - JCP 2.7 - Required transparency for public comments and issues.
2011 - JCP 2.8 - Introduced EC Standing Rules, required transparency in JSR communication, and shortened JSR deadlines.
2011 - Adopt-a-JSR - Launched to include voices from JUGs around the world on Java standards.
2012 - JCP 2.9 - Merged the two ECs into one committee that votes on all JSRs.
2016 - JCP 2.10 - Broadened membership, introduced new types of membership, removed barriers to membership, added Contributors, and established three types of EC seats for the three different membership types: Full Member, Associate Member and Partner Member.
2018-2019 - JCP 2.11 - Streamlined JCP Program's processes for agility and aligned with open-source software development.
2020 - Java in Education - Launched initiative to inspire and educate the next generation of Java developers and bridge the gap between academia and industry.
2023 - Java Ecosystem - Working group to educate and increase awareness around Java ecosystem third party tools and libraries to increase adoption of modern release processes by third partly tool and library maintainers.
|
Some of these required significant changes. JSR 387, Streamline the JCP Program, was put into effect as the current version of the JCP Program, version 2.11. This JSR streamlined the JSR lifecycle process to bring it in line with the way Java technology is developed today. We addressed the JSR lifecycle as part of JSR 387 to better align with the six-month release cadence of the Java SE Platform. JCP 2.11, the latest process document version, was released in November 2018 with a maintenance in August 2019.
This JCP revision included the following updates:
- Modification and addition of language around code first, collaborative RI development.
- Changes to the stages of a JSR lifecycle because of a more open and collaborative development process, and to be in keeping with a more agile and continuous delivery software development model.
- The ability to allow automated renewals for multiple versions of JSRs, especially for the Java Standard Edition (Java SE) Platform JSRs, which continue to be developed under the JCP Program and OpenJDK.
- Transition to a resized Executive Committee of 18 members total.
These changes enabled corporations, individuals, Java User Groups and not-for-profit organizations to all be able join the JCP Program. There is no fee to join at any level. Java community members can also review and comment on the work of the JCP Program, whether they are a member or not. JCP members can join JSRs either as Expert Group Members or Contributors, or get involved in the projects where the JSR deliverables are being developed, such as OpenJDK.
We expect even greater collaboration and contributions within the Java developer community in the future. The faster release cadence has helped Java meet the needs of developers, with new software features being incorporated into the release as they become ready every six months.
This has helped to increase innovations and contributions to the platform. The pipeline for new features is rich and deep, and this will lead to accelerated application development. This will also ensure that Java continues to attract younger developers. Java migration projects between versions will shift from major development projects, with 100 or more new features, to smaller and more incremental updates, happening more frequently. This helps to increase the amount of feedback on the early access releases as developers are evaluating their migration plans on an ongoing and continuous basis and provides businesses with the stability and predictability they require to run their teams and companies.
In addition, we frequently have initiatives within the JCP for deeper discussions and collaboration with the community. Currently there the two groups: the Java in Education Initiative and the Java Ecosystem Working Group.
Java in Education Initiative
In 2020, some of our discussions focused on the topic of Java in Education. This topic was suggested by one of our JCP EC Members, Ken Fogel. This prompted a working group to think about what we can do around Java in Education. JCP EC Members and Java community leaders are in a unique position to inspire their local communities of junior developers and students to learn and use Java technology.
The purpose and focus are to help bridge the gap between the educational environment and industry. Together we can provide opportunities for students, teachers and educational institutions in the form of networking, mentoring, knowledge and professional internships, open-source assignments and projects. We can also educate developers around the myths about the capabilities of modern Java technology. This effort is global, led with the Java Community and supported by the JCP Program.
To learn more, please visit:
https://jcp.org/java-in-education
Java Ecosystem Working Group
The goal of the Java Ecosystem JCP Working Group is to educate and increase awareness around the Java ecosystem third-party tools and libraries to increase the adoption of modern release processes by third-party tool and library maintainers. This working group was formed following the discussions in the JCP Executive Committee in 2023. When the six-month release cadence with Long Term Support Offerings was introduced in 2018 with JDK 10, that was a major shift in how Java was delivered and how developers migrate between versions of Java. The community has evolved and adapted to the model over time. We discussed how we can collectively work with the ecosystem to influence and help them to also embrace the modern delivery cadence of the Java platform. The JCP EC work to update the JCP processes and expansion of projects such as the Quality Outreach initiative in OpenJDK has helped support the migration of many larger projects. The smaller projects are more difficult to keep up to date. Java has a wide range of libraries and not all of them are up to date. Within this group, we discuss how can we influence the maintainers to support just the latest version, instead of backporting new features into many older versions.
The world is ready for the ecosystem of Java libraries, frameworks, and tools to embrace a delivery model similar to that of the JDK. The model is referred to as "Tip Development, with LTS offerings." By making this shift, library vendors can realize exactly the same kind of benefits that we have achieved for the Java platform itself and this will further strength and extend the viability of Java overall. Discussions happen in the JCP EC Meetings and in Working Group meetings.
To learn more about the Java Ecosystem Working Group, please visit:
https://github.com/jcp-org/Java-Ecosystem-JCP-Working-Group/wiki
Moving Java Forward
In the JCP Program we oversee the evolution of Java technology in addition to balancing the needs of the overall user community and our community members. Bringing the feedback of the community into the innovation process and incorporating their experience with the technology is crucial when creating a stable and secure platform that is used by millions of developers, customers and vendors all over the world. The JCP Program provides the mechanisms that enable this, providing new features and innovations for developers and stability and predictability for businesses. The governance of a technology community and ecosystem of this size is an effort that requires listening to differing audiences and voices, allowing for multiple compatible implementations and a flourishing ecosystem of third-party tools and libraries from the open-source developer community.
August 2024
|