Recent top five:
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
| Enterprise AJAX - Transcend the Hype |
| Memory Analysis in Eclipse |
| Oracle Compatibility Developer's Guide |
| Memory Analysis in Eclipse |
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 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:
| 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) |
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.
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:
| 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.