Thursday 16 April 2009

The JCP doesn't exist!

The Java Community Process doesn't exist. At least not in the way you probably think it does. This surprised even me (although it shouldn't have), and I'll explain here just exactly what I mean.

JCP overview

The Java Community Process (JCP) is the standards process for Java. The FAQ gives the best summary:

Q: What is the JCP?
A: Since its introduction in 1998 as the open, participative process to develop and revise the Java™ technology specifications, reference implementations, and test suites, the Java Community Process (JCP) program has fostered the evolution of the Java platform in cooperation with the international Java developer community.


So, the JCP is a process to define standards around Java.

Each standard, known as a Java Specification Request(JSR), follows a clearly defined process. Each JSR is developed by an Expert Group (EG) who are hand selected by the Spec Lead. Most newer JSRs are now run in a more open and transparent manner.

JCP members

The JCP has many members, all of whom are listed online. Many of these members are individuals, who pay no annual fee. Not-for-profits pay $2000 per year, while companies pay $5000 per year. There are currently over 1200 members.

JCP executive committee

While the JCP has many members, only a select few have real power. These are the members of the Executive Committees (EC). There is one EC for Java ME and one for Java SE/EE - each has 16 members.

Each EC member serves a three year term. Ten of the seats are 'ratified', which means that Sun picks who they are (based on a balanced community and regional representation) and the membership votes to approve or disapprove the selection. Five seats are available for a free vote of the JCP membership. One seat on each EC is the 'permanent' seat held by Sun. The current Java SE/EE members are:

  • Apache Software Foundation
  • Eclipse Foundation Inc.
  • Ericsson
  • Fujitsu Limited
  • Google
  • Hewlett-Packard
  • IBM
  • Intel
  • Werner Keil (individual)
  • Doug Lea (individual)
  • Nortel Networks
  • Oracle
  • Red Hat middleware LLC
  • SAP
  • Springsource
  • Sun Microsystems

JCP structure

This is the basic structure as it relates to JCP members:

JCP structure

The JCP is fundamentally a series of legal agreements (black lines) between Sun and each member of the JCP (orange sqaure). This has been described as a hub and spoke layout, and that is the obvious way to draw it.

The JCP is supported by a small Program Management Office which, amongst other tasks, assists JSR spec leads, handles the website and arranges Executive Committee meetings. The PMO is a department of Sun and funded by Sun (apart from the fees listed above):

Q: What is the Program Management Office (PMO)?
A: The Program Management Office is the group within Sun designated to oversee the Java Community Process and manage the daily running of the program. The actual development of the specification occurs within the Expert Groups.


Does the JCP really exist?

This sounds like a daft question!

But if you've been reading carefully you will have noticed that it really isn't.

Firstly, the PMO is named very carefully - its a "program" management office. Thats because the PMO is managing a program, not an organisation. The program is the JCP program of Sun.

Secondly, consider the name 'Java Community Process'. The clue is in the word "process". The JCP is just a process for defining standards. The JCP is not an organisation in its own right - it's a group within Sun.

Thirdly, consider the legal situation. All legal agreements (the JSPA) are signed between the member and Sun. There are no legal agreements between the member and the JCP, because the JCP is not a real organisation.

Not convinced? Look at the legal definitions for the JCP and its membership:

Java Community Process (JCP): The formal process described in this document for developing or revising Java technology specifications.
Java Community Process Member (Member): A company, organization, or individual that has signed the JSPA and is abiding by its terms.

JSPA legal document defining the JCP

It can't really be clearer - the JCP is a "formal process", not an organisation.

And note how clever the definition of "membership" is. You are a member simply because you signed a legal agreement (the JSPA). And remember that the legal agreement is actually with Sun, not the JCP (which you might naturally think).

Now, I don't know about you, but that isn't the kind of membership I normally think of, such as a sports club membership. Put simply, as a JCP "member" I'm not really a member of the JCP, because there is actually no such organisation.

By comparison, here is the definition of Eclipse:

The Eclipse Foundation was created in January 2004 as an independent not-for-profit corporation to act as the steward of the Eclipse community.
About Eclipse

As can be seen, "The Eclipse Foundation" is a real organisation - something entirely different to the JCP. Being a "member" of The Eclipse Foundation is something that would be very meaningful.


There is no JCP organisation. The JCP is simply a "process" to produce standards, not an actual standards organisation itself. (Even the Executive Committees are simply members that guide Java technology)

As it isn't an independent organisation with power, the "JCP" has been unable to effectively take action in the ASF vs Sun Apache Harmony dispute. The picture clearly shows how all legal agreements feed back to Sun, so no other party can influence the issue directly.

I have to admit that I've been a bit dense in not really grasping the lack of any JCP organisation until today. But I do wonder how many other developers have grasped it either?

Put simply, the JCP is NOT a standards organisation - because it isn't an organisation at all. In fact, there is only one organisation here - Sun - and they still control all the cards.

Stephen Colebourne
Apache Software Foundation member, speaking personally
Sun Java Champion, speaking personally
Not a committer on Harmony or OpenJDK

PS. I'd just like to note that the individuals that staff the JCP PMO have always been very helpful, in exactly the same way as the engineers developing JDK 7. This debate is all about Sun's management and how we really don't have an open standards process organisation.


  1. Good post, thanks for clarifying :).

  2. i wish there is a JCP like but independent, will Eclipse Foundation do this movement?

  3. interesting post.
    It is named Java Community Process = JCP, it is not named JCO.

  4. > This debate is all about Sun's management and how we really don't have an open standards process.

    Perhaps this last line should have said we "open standards organization" instead? It seems that we do have an open standards process (albeit a somewhat flawed one).

  5. Well this is not a surprise at all.
    The JCP's purpose is to allow 3rd parties to offer their opinions about the Java language specifications.

    But just to offer their opinions, Sun doesn't have to accept them.

    Kinda make sense if you think about it, Sun does own Java. not the community.

    We are the community. if we're not happy with the current situation we can vote with our feet and move on to a different implementations of the JDK/JRE.

  6. Yep. Assumptions do that.

    I've always known it's not an organization but a process. It's in the name. It's much like a builder asking the buyers feedback on how the subdivision should be built. It's called listening to your customers.

    Move on.

  7. Stephen Colebourne17 April 2009 at 23:18

    @Jess, Yes, that was rather confusing and I've updated.

    @Gilad, @Florin, I think the reality is I'd never deeply thought about what the JCP was until yesterday. As I was a "member" I assumed I was a member of something real and tangible, but it turns out I'm not.

    To be fair, Sun only has the power of veto on the JSRs for Java SE, EE and ME. On all other JSRs, Sun can be outvoted by the EC, although there are few contentious JSRs.

    I would disagree that we can all "just move to another implementation of the JDK/JRE" though. That is exactly what this blog series is demonstrating we can't do.

  8. I always thought of the JCP as being very open and allowing everyone to participate. But looking at the recent Apache vs Sun situation I was thinking if it was really open and why not. You post really helps relating that.

  9. It really bothers me when people excuse Sun's behavior by saying, "Sun owns Java," because I (and many others) have contributed countless hours through the JCP, in part because Sun led me to believe that I was contributing to open standards. If I knew that Sun was going to prevent others from creating independent implementations of these standards, I probably would have made different decisions.

  10. Oracle buys Sun:

    so will be interesting to see if/how that alters things

  11. I was going to post the same as Niall. I'd like to know your opinion about what'll happen now that Oracle owns Sun, given that Oracle seems to be pro-ASF in the matter (from what I remember reading in previous posts?)...

  12. How cares anyway?

    The JCP became obsolete when OpenJDK was launched.
    Nobody else can afford so much overhead. php, ruby, ... nobody has something like JCP.

    All in all, JCP will just vanish.

  13. It is impossible to predict what will happen to the JCP in the light of the Oracle deal.

    It will probably take Oracle years to dig through all the assets they are now going to get. So it will take them years to fully realize what they got for their money, and how it works. For some things they might never figure out what they got and how a particular thing ticks. Oracle might turn their attention to Java early, late or never in that process. And when they turn their attention to Java they might or might not care about the JCP.

    Regarding the JCP as such, I thought it was obvious that it is a process, and nothing more. I am not upset about the P in the acronym, but, speaking in a private capacity, the C. Sun's definition and my definition of "community" just don't match. In the JCP the "community" is defined as "those who pay".

    In reality there isn't A Java community, but hundreds. Java communities are not defined the way Sun defines them (people hanging out at JavaOne and drinking the Sun kool-aid, only reading Sun fora and web sites, working for nothing in Sun-owned open-source projects, or paying Sun for JSRs).

    Sun early on failed to align and integrate emerging communities. Those old enough remember Sun's unhealthy fixation on "user groups". And those younger know Sun's attempt - the most boring Java-related web site I can think off. So the community is fragmented, with not enough power to wrestle the C from JCP out of Sorcale's hands.

  14. I suppose this means that jsr 310, the new date and time API for java being developed through the JCP, doesn't exist either.


Please be aware that by commenting you provide consent to associate your selected profile with your comment. Long comments or those with excessive links may be deleted by Blogger (not me!). All spam will be deleted.