Recent articles:
Popular archives:
Java: A platform for platforms
Sun's reorg may seem promising to shareholders but it's also a scramble for position. The question now is whether Sun can,
or wants to, maintain its hold on Java technology. Especially with enterprise leaders like SpringSource and RedHat investing
heavily in Java's future as a platform for platforms
Also see:
Discuss: Tim Bray on 'What Sun Should Do'
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.