JetBrains has been on the Java Community Process (JCP) Executive Committee (EC) for nearly two years, having been re-elected in November 2018. We want to take a minute to summarize a little of what we’ve seen so far; to look forward into the future; and to answer some common questions.
JetBrains wants to represent the interests of Java developers. We’re in a good position to do this because: a) as IntelliJ IDEA is the most used Java IDE we have a lot of customers who are Java developers and are not shy in letting us know their opinions; and b) we have a lot of Java and JVM developers in our company!
We joined the Executive Committee at quite an exciting time, as it was just as Java 9 was being debated. The key feature for Java 9 was the Java Module System (JSR 376), and this was a relatively controversial JSR, having been rejected during the public review ballot. This was also a great example of what the JCP is for – we have to consider the impact of a new standard on the whole Java community to make sure it helps move Java forward in a way which benefits everyone.
Since joining the JCP the Java landscape has changed quite rapidly and it’s a very interesting time to be involved:
- Oracle is releasing a new JDK every 6 months. This is a big change from having releases every three years or so.
- Licensing, updates, and support have all changed for Oracle’s JDK(s), which has opened up some healthy competition.
- Java EE has moved into its own working group and is independent of the JCP.
Point 1 has necessitated changes to the way the JCP works since a lengthy, heavyweight standards process cannot cope with such rapid releases. Point 3 has reduced the number of JSRs the committee has to oversee, since many standards were traditionally in the enterprise Java space.
JetBrains is very interested to see how the updated process will work with the faster release cadence (spoiler: so far it seems to be going well).
We also want to continue making sure that the specifications being approved make sense for the Java Community. With an explosion of interest in new applications of technology, such as machine learning, one of the challenges of creating a “standard” is to time it right – too early, and it’s hard to anticipate all the ways this technology might be used; too late, and the space is fragmented and difficult to create a single standard. For some upcoming JSRs we want to be clear whether it’s the right time for these specifications.
Finally, we want to make sure that the JCP itself is fit for purpose. In our fast-moving technology world, it’s tempting to think a standards body is old fashioned and will only slow down progress. The key is to evolve the standards process itself along with the technology it represents. We’ve seen that so far the JCP is not only able to evolve to keep up with the community, but has made huge strides in recent years to become more relevant than ever. For example, the JCP has successfully moved its focus away from large corporate memberships by introducing new memberships for user groups and individuals, doing away with a lot of the intimidating legal paperwork.
The JCP is an increasingly relevant part of the Java community. It’s a central place for JDK vendors, large organizations, and user groups to come together and discuss what the right direction for the language is, given all these interested parties and their different requirements and usages. We are honored to be a part of it.
What is the Java Community Process?
It’s the formal process by which standards are decided in Java. These standards are represented via a Java Specification Request (JSR).
What is a JSR?
A Java Specification Request (JSR) is a proposal of a standard. Example specifications include things like Java Persistence (JPA), the Date and Time API which came into Java 8, and versions of Java like Java 12. These JSRs pass through various stages before they are finally approved as a standard. These standards are important to provide consistency between different implementations of Java or Java libraries or frameworks.
What is the role of the Executive Committee?
The members of the Executive Committee vote on these JSRs as they pass through various stages. We can vote “no” if we think that a JSR is not ready to progress to the next stage.
Who else is on the Executive Committee?
Here’s the full list. It’s a wide range of organizations, from JDK vendors like Oracle, Azul, Red Hat, and IBM, open source foundations like the Eclipse Foundation, companies who use Java heavily like Goldman Sachs and Twitter, user groups like the London Java Community, and a number of individuals too.
Who represents JetBrains on the EC?
We’re represented by Anna Kozlova and Trisha Gee, and we have a loose committee of people internally to JetBrains with a range of interests and experience who are on expert groups or involved in keeping up with different specifications.
What’s the difference between the JCP and OpenJDK?
Brian Goetz summarised this quite nicely in the most recent JCP EC public meeting:
“[The] new model has more clear division of responsibilities”
- OpenJDK “JDK” Project – Looking to the future
- Technical direction, development
- JCP – Safeguarding the present
- Integrity, completeness, and accuracy of specification, TCK
- Independent implementability
- Commercial support entities – Preserving the past
- Support lifetimes and policies, update trains, backports, etc