Let's talk about exceptions ...
How do you handle exceptions? Do you think upfront about the type of exceptions that you want to catch or do you just let the outside world handle it?

-- Jeroen van Bergen in JW Blogs

Newsletter sign-up

Sign up for our technology specific newsletters.

Enterprise Java
View all newsletters

Email Address:

A look inside the Java Community Process

A detailed examination of the wins and losses of the Java Community Process

The Java Community Process (JCP) formalizes the international Java community's efforts to improve Java. Its goal is to cultivate a wider participation in the specification of new and existing Java APIs. (For a definition of API and other terms in this article, see Glossary.) </!> Ken Urquhart, the JCP project leader at Sun, believes Java is successful "because people have given the time and effort" to make it successful. The JCP attempts to expand on that success. In fact, Java creator James Gosling says that the process is all about "getting the managers out of the room and letting the technical people do their thing."

Sun and the JCP participants have been very happy with the results: 38 Java Specification Requests (JSRs) have been submitted since the program started ten months ago. Two to four new participants join the process every week. The first public reviews of the new specifications began in June, at JavaOne '99.

Not everyone in the Java community is as happy as Sun is with the JCP, however. Many small developers, and even some large companies, consider the process neither open nor vendor neutral. Organizations wishing to participate in the JCP must pay annual fees to Sun. Only then can they provide experts to the JCP and actively shape a specification.

In this article, I examine the Java Community Process in detail, looking at how the process works and at the issues being raised by some members of the Java community. I also note several ways you can get involved with the Java Community Process and suggest a few improvements Sun can make to it.

The process

The Java Community Process consists of a series of steps designed to produce high-quality, widely accepted Java specifications. The formal JCP documentation (see Resources) states that those steps are taken "in cooperation with the international Java community." As JCP project leader Urquhart puts it, "Nothing can be developed in a vacuum," adding that industry involvement makes Java better and more widely accepted. Sun says that it has been using collaborative methods to develop the Java APIs since 1995 and that the JCP -- announced in December 1998 -- attempts to structure and document that collaboration and to encourage participation in it.

Simon St. Laurent disagrees. In a posting to the XML-dev mailing list, he stated, "The JCP may feel like an 'open' process if you're a mammoth ... but to us small mammals, it's the same old s***, different day." St. Laurent is not alone. Elliotte Rusty Harold, the author of several Java books and the keeper of the Café au Lait Java FAQ (see Resources), thinks the JCP "is very much a gated community designed to keep out the riff-raff like you and me and let Sun run things the way it sees fit."

The following table outlines the JCP and the length of time associated with each step of the process:

Table 1. Overview of JCP
Step Timeframe
Participant submits a new specification, or JSR (Anytime)
Other participants review the JSR 7 to 30 days
PMO reviews comments (Accepts, rejects, or defers JSR)
Call For Experts (CAFE) At least 15 days
PMO selects specification lead (Most capable person chosen from CAFE nominations)
Specification lead forms Expert Group (From other CAFE nominations and other sources)
Expert Group writes draft However long it takes
Participants review draft At least 30 days
Specification lead revises draft Up to 30 days
Public reviews draft At least 30 days
Specification lead revises draft Up to 30 days
Public release Depends on completion of CTS and RI
Expert Group develops CTS and RI (Specification lead is responsible for completion)
Expert Group decides that specification, CTS, and RI are complete However long it takes
Final release of specification (Everything complete)
Maintenance of specification (Specification lead assumes responsibility for maintenance)


Changing the world, one API at a time

At the heart of the Java Community Process is the Java Specification Request (JSR), which describes the proposed specification for a new set of APIs or for a change to existing Java APIs. The JSR provides information about the participants submitting the request, briefly describes the proposed specification and the reason for developing it, and notes any documentation or implementations that could be used as a starting point for the development of the new specification.

A JSR is submitted via a Java Specification Request form (see Resources), which is emailed to the Process Management Office (PMO) at Sun. Submitting the JSR is the first step in the Java Community Process, but a JSR can be submitted only by a Java Specification Participant.

Participation has its advantages -- and costs

A Java Specification Participant is a company, organization, or individual that has signed the Java Specification Participation Agreement (or JSPA; see Resources). Anyone can become a JCP participant by filling out the JSPA and sending it to Sun along with an annual fee. The fee is large enough that it may prevent the involvement of many Java community members. Here is the fee structure:

Table 2. JCP fees
Commercial entity ,000/year
Education, government, nonprofit organization ,000/year
Commercial Java technology licensees of Sun No fee


Once you are a participant, you are involved in the entire Java Community Process. You can comment on Java Specification Requests, provide an expert to an Expert Group, and review and comment on the Participant Draft before the public review. If you are not a participant, you cannot submit a JSR or provide feedback on other JSRs or draft specifications until the public review.

Issues with participant fees and the agreement
For many smaller companies and academic experts, the cost of becoming a participant in the Java Community Process is prohibitively high. One academic said, "To get a bunch of academics to agree to fork over ,000 a year just so they can help Sun out seems difficult and rude." Sun says it charges the annual fee simply to cover expenses associated with managing the Java Community Process. Further, Sun says it has waived participation fees in the past and will continue to do so as the need arises. Unfortunately, there is no mention of that possibility anywhere on the Web site devoted to the process.

Resources