Part of the success of Java can be attributed to how the language is evolved and how the developer community is collaboratively involved in the evolution. The Java Community Process (JCP) Program is the process by which the international Java community standardizes and ratifies the specifications for Java technologies. In December 2023, we celebrate 25 years of community collaboration in the JCP program, since it was first introduced at the Java for Business conference in New York City, December 1998. The announcement of the JCP was made by Alan Baratz, who was the president of JavaSoft at Sun Microsystems at the time. Jim Mitchell, Sun Labs Fellow at the time, was appointed as the first Director of the JCP program.
The JCP was formed to ensure that high-quality specifications are developed using an inclusive, consensus-based approach. Specifications ratified by the JCP program must be accompanied by a Reference Implementation (to prove the Specification can be implemented), and a Technology Compatibility Kit (a suite of tests, tools, and documentation that is used to test implementations for compliance with the Specification).
While the JCP has evolved over time from that first announcement of JCP to the current update of the JCP, there are has been consistency in the values and continued community collaboration.
The JCP ensures that the promises and values of Java technology deliver to the ecosystem performance. stability, security, as well as ensuring the compatibility and maintainability of Java code. As we look to address the challenges of modern application development, we want to ensure Java continues to deliver increased performance with each new release. Working together with the community, we balance conservatism with innovation through a thoughtful evolution of Java technology.
In commemoration of the 25 Year Anniversary of the JCP program, we created a timeline graphic. We also created a photographic video montage highlighting some of our community members and activities…. because we form a community around a shared interest in Java technology but community is about the people and our shared experiences.
1998 – JCP 1.0 – Created JCP, in which Sun approved requests and members contributed to specifications.
2000 – JCP 2.0 – Established Executive Committees to review and approve JSRs.
2002 – JCP 2.5 – Equal standing to individual developers participating n the JCP.
2004 – JCP 2.6 – Embraced open source, streamlined processes, opened up early drafts, license, and TCK terms to the public.
2009 – JCP 2.7 – Required transparency for public comments and issues.
2011 – JCP 2.8 – Introduced EC Standing Rules, required transparency in JSR communication, 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.
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.
The JCP Executive Committee (EC)
The JCP EC plays a key role in the evolution of Java technology. oversees the development and evolution of the Java technologies within the JCP. The EC.was formed in 2000, and is elected every year by the JCP program membership. The JCP EC is overseen by the JCP Chairperson. We have had several JCP Chairs over time including George Paolini from: 2000-2002; Rob: Gingell from 2002- 2004l Onno Kluyt from : 2004 – 2007; Patrick Curran from 2007 – 2017; and Heather VanCura 2017 – present. The JCP EC meets six times a year, and two times in person, after resuming face to face meetings in 2023.
As of Java SE 10, we moved to a 6-month release cadence, with a release of the Java platform coming every 6 months, rather than every few years. Over the past 5 years, we have consistently delivered a new Java SE Platform release, starting with Java 10 through the latest Java SE 21 release in September 2023. With many changes in the Java community, the continuation of the JCP program remains constant. The values and focus on performance, stability, security, compatibility, and maintainability of code remains. Work on the platform is completed with the contributions and collaboration of the Java community working together, and as the work of the Java Enhancement Proposals (JEPs) is completed in OpenJDK, they are targeted for inclusion in a platform release and as part of a JSR in the JCP program, for ratification and approval for the JCP Executive Committee. This release process allows for thoughtful evolution, trust and predictability for developers and users of the technology, but also a rich pipeline of innovations being delivered continuously, driving adoption of the latest releases.
JCP Program Membership
Anyone can apply to join and participate in the JCP program — either as a Corporation or Non-Profit (Full Member), Java User Group (Partner Member) or Individual (Associate Member). The stability of the JCP program and participation from community members ensures continued success of the Java Platform and its’ future.
Corporate and Individual Membership in the JCP program has been established for quite some time, but participation and membership of Java User Groups is one of the increasing areas of engagement in the JCP Program. Nearly 100 JUGs participating are participating in the JCP program from all around the world. As mentioned above, JUGs can join the JCP program as Partner Members: https://jcp.org/en/participation/jug
As we celebrate the 25-year anniversary of the JCP Program, we will be partnering with JUGs around the world to host their own celebrations in their local communities. We started with a special event hosted by the New York Java Special Interest Group (NYJavaSIG) and Garden State Java User Group (GSJUG) in September, hosted by the Bank of New York (BNY) Mellon in New York City. Industry experts from the EC participated in a panel discussion sharing some of their JCP memories and their favorite features from the latest release of Java. In January, we will host another event with the San Francisco and Silicon Valley Java User Groups at the Computer History Museum in Mountain View, California. We will also present the annual JCP Program Awards – 2023 nominees.
Java in Education – Inspiring the next generation of Java developers
In 2020, the JCP started an initiative around Java in Education – inspiring the next generation of Java developers. We began encouraging Java community leaders to participate in inspiring the next generation of developers to code using Java by engaging with their local educational communities.
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. Java is the top in demand skill from employers for technical talent and the most highly paid technical skill. Once students are working on projects in industry, it is difficult to find a project that does not include or touch some Java code.
This effort is designed to be global, JUG led, and supported by the JCP program. There are materials for the community and w wiki to share experiences. One of the recent presentations available is based on the work of the recently completed JSR 381, Visual Recognition Specification, showcasing how you can use Java for ML and AI with images. When the JCP EC met in Singapore earlier this year, hosted by Alibaba, we met with the Singapore JUG for an extended Java Heroes event and also met with students at local universities to discuss this technology.
The JCP is more open than it has ever been
How will you participate? As in individual is okay. It is even better as a team. You can help each other and work together in your Java User group or your team at your employer to make Java better. Working together we achieve more.
- Acquire knowledge. Learn from experts, early access. Enable an easier transition between releases. Be faster to market. Put your Requirements into process.
- Build your resume. Add experience and skill development. Grow as developers. Communication, collaboration, negotiation, teamwork.
- Increase professional visibility: curriculum, articles, workshops, presentations.
- Become famous! Grow your reputation and network, as well as the reputation of your JUG.
- Make Java better: Specifications based on real world experience are more successful. Gain new customers based on your expertise. Create the future Java technology.
Steps to Participation & Collaboration
- Pick a project. There are many options. You can pick a JSR out of the active JSRs list on JCP.org: https://jcp.org/en/jsr/stage?listBy=active
For example, the Java SE Platform JSR: https://jcp.org/en/jsr/detail?id=397
You can participate in OpenJDK by downloading the Early Access Builds and joining the Adoption Group of OpenJDK. Join the mailing list and then indicate your interest and feedback.
As part of the Adoption Group, there is also the Quality Outreach group. You can support FOSS Java projects keep up to date with the latest release of Java. There are over 100 projects currently participating and listing of each project communication forum. Two examples of projects participating that have found new contributors via this program are Apache Maven and Eclipse Collections.
You can participate in OpenJDK by downloading the Early Access Builds. You can also download early access builds of some OpenJDK projects to learn about upcoming enhancements, such as Project Loom, Leyden, Panama and Valhalla: https://jdk.java.net/
You can also become a Contributor of OpenJDK A contributor is a Participant who has signed the Oracle Contributor Agreement (OCA), or who works for an organization that has signed that agreement or its equivalent and makes contributions within the scope of that work and subject to that agreement. A Contributor may submit changes larger than a simple patch, may propose new Projects, and may take on various roles within Groups and Projects.
For more information on how to get involved with OpenJDK https://openjdk.java.net/contribute/
- Communicate. Once you pick a project, either collectively or on your own, remember to communicate within your JUG. You also need to communicate with the Project Lead or Spec Lead and EG on public discussion and issue trackers. Communication is a two-way street.
3) Decide on actions. Once you have communicated your interest, decide and agree on the actions you will take. See below for some suggestions. These are some things that have been successful – you should not be limited by this list.
- Share ideas and feedback, comment on list and public issue trackers.
- Read early versions and share feedback on specifications and Javadocs.
- Download and provide feedback on early access reference implementation.
- Try writing sample applications using early builds of reference implementation.
- Write or speak about the technology and encourage others to participate. Translate into your native language.
- Evangelize – use social media, blogging or lightning talks to share your knowledge.
- Help with documentation.
4) Follow through. It is crucial that you follow through on your agreed actions. This can include contributing to public discussions/issue trackers and providing your feedback and comments. It is important to keep in mind that the Specification Lead and the Expert Group or Project Lead has the final decision on incorporating the feedback. For specifications in Public Draft, new feature requests may not be considered for the current release. Multiple groups or JUGs can and should collaborate on projects. There is always plenty of work and going through the material multiple times can improve the quality of feedback provided.
5) Participate and organize hack days. A hack day can be virtual or in person and can be a small (3-5 developers) or large group (100s).
When you organize or participate in a hack day, you may follow suggestions to past successful hack days:
Test your applications against the early RI builds; use them to find pain points, report bugs, suggest feature enhancements.
Help triage issues; reproduce issues, erase/merge duplicates, set priorities/categories etc.
Give feedback on design; discuss issues and deliver feedback, think about how you would use as a developer.
Most of all, when you engage, have FUN – being part of the Java community is FUN! For companies, it will help you to develop new Markets, adapt and inform your technology strategies, and enable you to retain developers and grow as a developer. As an individual, being part of the Java community should be enjoyable. For companies, it will help you to develop new markets, adapt and inform your technology strategies, and enable you to retain and grow your team of developers.
Looking Forward to the Future – EASier migration to New Versions
Following on the success of the faster release cadence for the Java platform, and how the community has evolved and adapted to the model over time, the JCP EC has discussed how we can collectively work with the ecosystem to influence and help them to embrace the modern delivery cadence of the Java platform making it easier for developer to migrate their applicaitons to newer versions of Java. The JCP EC completed work to update the JCP processes and allow the Java platform to release a new version every six months. Now there is potential to enable the ecosystems of tools and libraries to also adapt to transition to new versions of Java more quickly. We are looking to build on existing programs such as the Quality Outreach initiative to help the smaller projects that are more difficult to keep up to date. Java has a wide range of libraries and not all of them are up to date. We are looking at how we can influence them to support just the latest versions of Java. If libraries adopt the same or similar model (moving from an express model to a tip model), the Java platform would be even more stable, secure, and predictable. We recognize that this is a cultural change, but it is also an opportunity for maintainers. We need to ask what is necessary to make this happen. Some suggestions we discussed at the last JCP EC Meeting are not back porting as aggressively or back porting as little as possible, because customers want stability. We know that the main issues for maintainers are funding and time. In 2020, the JCP EC will be forming a working group to discuss how we can enable this and influence efforts in the community, building on existing programs, so that with each new version Java, we have the ecosystem ready. For example, on the first day after a release of Java SE, like the IntelliJ IDE, supporting the latest released. The world is ready for the ecosystem of Java libraries, frameworks, and tools to embrace a delivery model like that of the JD – tip development, with LTS offerings. By making this shift, library vendors can realize the same kind of benefits that has been achieved for the Java platform itself. This will further strength and extend the viability of Java overall now and in the decades to come.
Author: Heather VanCura
Heather is Director and Chairperson of the Java Community Process (JCP) program. She is a leader of the global community driven Java adoption and user group programs. In this role she drives the efforts to transform the JCP program and broaden participation and diversity in the community. She is passionate about Java, women in technology and developer communities, serving as an International speaker and community organizer of developer hack days around the world. Heather enjoys speaking at conferences, such as OSCON, FOSDEM, Devoxx, Wonder Women Tech, and the JavaOne Conferences. She resides in the San Francisco Bay Area, California USA and enjoys trying new sports and fitness activities in her free time.