Have you ever wondered how the Java platform and core class libraries evolve? Who is responsible for the objects, classes, interfaces and system features of Java? How does one set of features make it into the Java package namespace (java.*, javax.*) while another doesn’t cut it? Who proposes a new feature, who approves it, who implements it and finally who makes the decision to ship it?
As part of the Java developer community, you are responsible for the evolution of the Java platform. You are responsible for proposing new features and implementing them. The process by which your ideas go from inception to implementation to shipping is known as the Java Community Process, the JCP for short.
Welcome to the JCP Watch. This column hopes to inspire all Java developers to participate in defining the future of the Java platform by taking an active part in the JCP. This column will cover individual Java Specification Requests (JSR’s) submitted to the JCP and explain each in simple, lucid terms. The intent is to equip developers with adequate background information and knowledge to analyze the JSR, provide feedback and collaborate with other members of the community to shape the direction of the Java platform.
What is the JCP?
The JCP is a collective representing a comprehensive cross section of the Java community including industry, academics, government and individuals. JCP members guide and govern the development and approval of Java technical specifications. A specification details a technology proposal by providing specifics of the concept, use, dependencies and impact of the proposed technology. Once a specification has been approved, it is up to vendors and implementers to provide usable code, libraries and products built upon the approved specification.
How does the JCP work?
In order to take a technology idea from concept to a community-accepted standard, a strict process is adhered to. This process starts by a JCP member submitting a Java Specification Request (JSR) to the JCP. At first, the JSR is just a concept on paper but as it progresses through various key points in the JCP it matures into a high-quality specification, 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). The members of the JCP cast ballots to approve the passage of specifications through milestones in a JSR’s lifecycle. In true democratic fashion JSR’s get rejected via voting too.
This process that defines participation and milestones in a JSR’s lifecycle is described and formalized in a JSR itself (namely JSR 99 and JSR 171)! Please refer those JSR’s for an in-depth explanation of how the JCP works and get a head start on all the buzzword acronyms associated with the JCP process. It will also give you a complete picture of the milestones of the JSR’s lifecycle and the important elections that the JSR competes in.
How can I participate?
Anyone, including you, can participate and contribute to the JCP. For starters, you can go the JCP website to view and provide feedback on posted JSR’s. If you would like to submit new JSR’s or collaborate in the development of existing JSR’s, you can become a member of the JCP (free for individuals, nominal fee for commercial organizations and academic institutions). If you would like to gain voting rights and actively mentor the development of JSR’s you can nominate yourself as an expert member. There is much flexibility in participation and I urge you to become an integral part of this collaborative effort.
I will end with a quote, inspired from a popular series of ads on T.V. “There are two types of developers, those who use technology (passengers) and those that define it (drivers). Drivers wanted.”
- The JCP website: http://www.jcp.org
- An excellent explanation of the JCP timeline: http://www.jcp.org/en/introduction/timeline
- Detailed information on how to participate: http://www.jcp.org/en/participation/overview
- FAQ that answers common questions on the JCP: http://www.jcp.org/en/introduction/faq
- JSR 99: http://www.jcp.org/en/jsr/detail?id=99
- JSR 171: http://www.jcp.org/en/jsr/detail?id=171
Do you have any questions about the JCP? Do you have any suggestions for the JCP? Do you have any criticism about the JCP? Feel free to email me firstname.lastname@example.org.