Java Community Process

Last updated

The Java Community Process (JCP), established in 1998, is a formal mechanism that enables interested parties to develop standard technical specifications for Java technology. Becoming a member of the JCP requires solid knowledge of the Java programming language, its specifications, and best practices in software development. Membership in the JCP involves a detailed review of the candidate's profile, including an assessment by current members. Typically, professionals are invited to join the JCP based on their contributions and reputation within the Java community.

Contents

Once invited, the new member undergoes an evaluation by the JCP Executive Committee, ensuring that they can effectively contribute to the Java Specification Requests (JSRs). These formal documents describe proposed specifications and technologies to be added to the Java platform. New members are encouraged to engage actively and play a crucial role in supporting the Java community and its releases. It is essential that members possess expertise and in-depth technical knowledge, combined with strong professional experience, to significantly contribute to the growth and usage of the Java language.

Membership for organizations and commercial entities requires annual fees, but it is free for individuals. JSRs undergo formal public reviews before becoming final, and the JCP Executive Committee votes on their approval. A finalized JSR provides a reference implementation, which is a free implementation of the technology in source code form, and a Technology Compatibility Kit to verify the API specification.

The JCP itself is described by a JSR. As of 2020, JSR 387 describes the current version (2.11) of the JCP.

List of JSRs

There are hundreds of JSRs. Some of the more visible JSRs include:

JSR #Specification or TechnologyReference implementationsOther implementations
1 Real-Time Specification for Java (RTSJ) 1.0
3 Java Management Extensions (JMX) 1.0, 1.1, & 1.2 [1]
5 Java API for XML Processing (JAXP) 1.0
8 OSGI Open Services Gateway Specification
9 Jiro (Federated Management Architecture Specification) 1.0
12 Java Data Objects (JDO) 1.0
13 Improved BigDecimal (Java Platform, Standard Edition#java.math)
14 Add Generic Types To The Java Programming Language (as of J2SE 5.0)
16 Java EE Connector Architecture (JCA) 1.0
19 Enterprise JavaBeans (EJB) 2.0
22 JAIN SLEE API Specification (JSLEE) 1.0
30 Connected Limited Device Configuration (CLDC) 1.0 for Java ME
31 Java Architecture for XML Binding (JAXB) 1.0
32 JAIN SIP API Specification (JSIP) 1.0, 1.1 and 1.2 for Java ME
36 Connected Device Configuration (CDC) 1.0 for Java ME
37 Mobile Information Device Profile (MIDP) 1.0 for Java ME
40 Java Metadata Interface (JMI) 1.0
41 A Simple Assertion Facility (as of J2SE 1.4)
47 Logging API Specification (as of J2SE 1.4)
48 WBEM Services Specification (as of J2SE 1.4)
51 Non-blocking I/O (NIO) (as of J2SE 1.4) Grizzly, Netty
52 JavaServer Pages Standard Tag Library (JSTL) 1.0 and 1.1 [2]
53 Java Servlet 2.3 and JavaServer Pages (JSP) 1.2 Specifications
54 Java Database Connectivity (JDBC) 3.0
56 Java Network Launching Protocol and API (JNLP) 1.0, 1.5 and 6.0 [3] (Java Web Start)
58 Java 2 Platform, Enterprise Edition (J2EE) 1.3
59 Java 2 Platform, Standard Edition (J2SE) 1.4 (Merlin)
63 Java API for XML Processing (JAXP) 1.1 and 1.2 [4]
68 Java Platform, Micro Edition (Java ME) 1.0
73 Java Data Mining API (JDM) 1.0
75 PDA Optional Packages for the J2ME Platform
77 J2EE Management
80 Java USB API
82 Java APIs for Bluetooth
88 Java EE Application Deployment
91 OSS Trouble Ticket API
93 Java API for XML Registries (JAXR) 1.0
94 Java Rules Engine API
102 Java Document Object Model (JDOM) 1.0
110 Java APIs for WSDL (WSDL4J) 1.0
112 Java EE Connector Architecture (JCA) 1.5
113 Java Speech API 2 (JSAPI2)
114 Java Database Connectivity (JDBC) Rowset Implementations
116 SIP Servlet API 1.0
118 Mobile Information Device Profile (MIDP) 2.0 for Java ME
120 Wireless Messaging API (WMA)
121 Application Isolation API
127 JavaServer Faces (JSF) 1.0 and 1.1 [5]
133 Java Memory Model and Thread Specification Revision
135 Java Mobile Media API (MMAPI) for Java ME
139 Connected Limited Device Configuration (CLDC) 1.1 for Java ME
140 Service Location Protocol (SLP) API for Java
141 Session Description Protocol (SDP) API for Java
151 Java 2 Platform, Enterprise Edition (J2EE) 1.4
152 JavaServer Pages (JSP) 2.0
153 Enterprise JavaBeans (EJB) 2.1
154 Java Servlet 2.4 and 2.5 Specifications [6]
160 Java Management Extensions (JMX) Remote API 1.0
163 Java Platform Profiling Architecture (JPPA), which includes (among other specifications) the specification of Java Virtual Machine Tools Interface
166 Concurrency Utilities (as of J2SE 5.0 java.util.concurrent , java.util.concurrent.atomic and java.util.concurrent.locks )
168 Portlet specification 1.0
170 Content repository API for Java (JCR) 1.0
172 Web Services Specification for Java ME
173 StAX (Streaming API for XML)
175 A Metadata Facility for the Java Programming Language
176 Java 2 Platform, Standard Edition (J2SE) 5.0 (Tiger)
177 Security and Trust Services API for J2ME (SATSA)
179 Location API 1.0 for Java ME
180 Session Initiation Protocol (SIP) API for Java ME
181 Web Services Metadata for the Java Platform
184 Mobile 3D Graphics API for Java ME 1.0 and 1.1
185 Java Technology for the Wireless Industry (JTWI)
187 Instant messaging (Java ME and Java SE)
198 A Standard Extension API for Integrated Development Environments
199 Java Compiler API
200 Pack200 Network Transfer Format for Java Archives
201 Extending the Java Programming Language with Enumerations, Autoboxing, Enhanced for loops and Static Import (as of J2SE 5.0)
202 Java Class File Specification Update
203 More Non-blocking I/O (Java) (NIO2)
204 Unicode Supplementary Character Support (as of J2SE 5.0 adds support for Unicode 3.1)
205 Wireless Messaging API 2.0 (WMA) 2.0
206 Java API for XML Processing (JAXP) 1.3
208 Java Business Integration (JBI) 1.0
211 Content Handler API
215 Java Community Process (JCP) 2.6
218 Connected Device Configuration (CDC) 1.1 for Java ME
219 Foundation Profile 1.1
220 Enterprise JavaBeans (EJB) 3.0
221 Java Database Connectivity (JDBC) 4.0
222 Java Architecture for XML Binding (JAXB) 2.0
223 Scripting for the Java Platform for Java SE 6
224 Java API for XML Web Services (JAX-WS), successor of JAX-RPC
225 XQuery API for Java (XQJ)
226 Scalable 2D Vector Graphics API for Java ME
229 Payment API (PAPI)
231 Java Bindings for OpenGL
234 Advanced Multimedia Supplements API for Java ME
235 Service Data Objects (SDO)
239 Java Bindings for OpenGL ES
240 JAIN SLEE API Specification (JSLEE) 1.1
241 The Groovy Programming Language
243 Java Data Objects (JDO) 2.0
244 Java Platform, Enterprise Edition (Java EE) 5
245 JavaServer Pages (JSP) 2.1
247 Java Data Mining API (JDM) 2.0
248 Mobile Service Architecture
249 Mobile Service Architecture 2
250 Common Annotations for the Java Platform (for the Metadata facility for Java)
252 JavaServer Faces (JSF) 1.2
253 Mobile Telephony API (MTA)
255 Java Management Extensions (JMX) 2.0
256 Mobile Sensor API
257 Contactless Communication API (NFC)
260 Javadoc Tag Technology Update
269 Pluggable Annotations Processing API (for the Metadata facility for Java)
270 Java Platform, Standard Edition (Java SE) 6 (Mustang)
271 Mobile Information Device Profile (MIDP) 3.0 for Java ME
274 The BeanShell Scripting Language
275 Units specification (see Units of Measurement)
276 Design-time Metadata for JavaServer Faces Components
277 Java Module System
280 XML API for Java ME
281 IMS Services API (See IMS)
282 Real-Time Specification for Java (RTSJ) 1.1
283 Content repository API for Java (JCR) 2.0
286 Portlet Specification 2.0
289 SIP Servlet API 1.1
290 Java Language & XML User Interface Markup Integration (XML-UI)
291 Dynamic Component Support for Java SE (see OSGi)
292 Supporting Dynamically Typed Languages on the JavaTM Platform
293 Location API 2.0 for Java ME
294 Improved Modularity Support in the Java Programming Language
296 Swing Application Framework (Java SE 7)
299 Contexts and Dependency Injection for the Java EE platform (CDI) Weld OpenWebBeans
301 JSF Portlet Bridge
303 Bean Validation Hibernate Validator
307 Network Mobility and Mobile Data API (not official as of July, 20th, 2007 but official release is planned for 2. Q. 2008
308 Annotations on Java Types (Java SE 8)
314 JavaServer Faces (JSF) 2.0Mojarra JavaServer Faces Apache MyFaces
316 Java Platform, Enterprise Edition (Java EE) 6
317 Java Persistence API (JPA) 2.0 EclipseLink Hibernate, openJPA
322 Java EE Connector Architecture (JCA) 1.6
325 IMS Communication Enablers (ICE) (See IMS)
330 Dependency Injection for Java
336 Java SE 7 Release Contents [OpenJDK 7]?
337 Java SE 8 Release Contents [OpenJDK 8]?
338 Java Persistence API (JPA) 2.1 EclipseLink Hibernate, openJPA
343 Java Message Service 2.0 (JMS)
352 Java Batch IBM Java Batch JBeret, Spring Batch
354 Java Money & Currency API
356 Java API for WebSocket
365 Contexts and Dependency Injection for Java 2.0 Weld
367 Java API for JSON Binding (JSON-B) Eclipse Yasson Jackson
370 Java API for RESTful Web Services (JAX-RS) 2.1 Project Jersey
374 Java API for JSON Processing 1.1 Eclipse JSON-P Jackson
376 Java Platform Module System (supersedes 277
380 Bean Validation 2.0 Hibernate Validator
901 The Java Language Specification, Third Edition (JLS) (as of J2SE 5.0 incorporates changes from JSRs 14, 41, 133, 175, 201, and 204)
907 Java Transaction API (JTA) 1.0 and 1.1
912 Java 3D API 1.3
913 Java Community Process (JCP) 2.0, 2.1 & 2.5. [7]
914 Java Message Service (JMS) API 1.0 and 1.1
924 Java Virtual Machine Specification, Second Edition (JVM) (as of J2SE 5.0). [8] OpenJDK
926 Java 3D API 1.5

Criticism

A JCP representative (far right) speaks to the trade press during a panel discussion at the JavaOne conference in 2012 Java press panel at JavaOne 2012.jpg
A JCP representative (far right) speaks to the trade press during a panel discussion at the JavaOne conference in 2012

The JCP's executive board has been characterized as a "rubber stamp organization" since Oracle acquired Sun Microsystems (the original developer of the Java language). [9]

The Apache Software Foundation resigned its seat on the board in December 2010 because Oracle was unwilling to license the Technology Compatibility Kit for Apache's version of Java. [10]

JCP Program and Industry Awards

Source: [11]

2012 — 10th Annual JCP Award Winners [12]
AwardNomineeContributionsDetailsJSR #Win?
JCP Member/Participant of the YearLondon Java Community and SouJava "Adopt a JSR!" programSupporting Java developers through the JCP.Win!
Stephen ColebourneDate and time API for Java.Comprehensive and advanced. Tireless work. 310
Markus EiseleActive work among the German Java community and in the JSR 342 Expert Group. 342
JUG Chennai Becoming the most active JCP organization in India and a competitive service organization in the commercial marketplace.
Werner KeilIncredible energy and participation in seven JSRs as well as the Executive Committee.
Antoine Sabot-Durand
Outstanding Spec LeadVictor Grazi,

Credit Suisse

Java Money & Currency API Dedicated, focused expertise in solving issues representing money and currencies. 354 Win!
Michael ErnstAnnotations on Java Types Level-headed approach; a great example of a well-run JSR. 308
Nigel Deakin,

Oracle

Java Message Service 2.0Outstanding, thorough, and intelligent work keeping the JMS 2 EG open and moving forward at a great pace. 343
Pete Muir,

Red Hat

Contexts and Dependency Injection for Java EE 1.1Voluntarily upgrading to 2.8 in late 2011 and maintaining what were already transparent methods in running his Expert Group. 346
Most Significant JSRJitendra Kotamraju API for JSON ProcessingAn important step in bringing Java into the world of the modern web. 353
Victor Grazi,

Credit Suisse

Money and Currency API New ways of handling monetary amounts and currency computations. Fixing critical Java Number Format and Representation bugs beyond monetary values. 354
Mitch Upton Java State ManagementThe potential to improve how Application Servers and Distributed Services are going to look in the near future as well as simplifying deployment in PaaS and Cloud environments. 350
Nigel Deakin Java Message Service 2Modernize JMS at a rapid pace. 343
Patrick CurranJCP.NextSetting the direction and procedures for the next-generation JCP. 348 355 358 Win!

See also

Notes

  1. JSR 3 originally specified the JMX 1.0 release. Two subsequent "final" releases have provided JMX 1.1 and JMX 1.2. JMX 2.0 is specified by JSR 255.
  2. JSR 52 originally specified the JSTL 1.0 release. A subsequent maintenance release provided JSTL 1.1.
  3. JSR 56 originally specified the JNLP 1.0 release. A subsequent "final" release provided JNLP 1.5, which was primarily a maintenance release. As of February, 2006, the JNLP 6.0 maintenance release has been completed but not finalized.
  4. JSR 63 originally specified the JAXP 1.1 release. A subsequent maintenance release of JSR 63 provided the JAXP 1.2 specification. JAXP 1.3 is specified by JSR 206.
  5. JSR 127 originally specified the JSF 1.0 release. A subsequent maintenance release provided the JSF 1.1 specification. JSF 1.2 is specified by JSR 252.
  6. JSR 154 originally specified the Java Servlet 2.4 release. As of February, 2006 a maintenance draft of the 2.5 servlet specification is under review, scheduled to close on March 20, 2006.
  7. JSR 913 originally specified JCP 2.0. It was subsequently amended by various changes to voting rules to produce version 2.1 and then further changed by licensing rules, policy, and processes to get to version 2.5. JCP 2.6 is defined by JSR 215.
  8. JSR 924 originally specified changes to the JVM to support changes in J2SE 5.0. As of 2006 a maintenance update to support changes proposed by JSR 202 is underway.
  9. Handy, Alex (12 September 2011). "Java is open, but is the process?". SD Times. Retrieved 21 September 2011.
  10. Whiting, Rick (10 December 2010). "Apache Quits Java Governing Board Over Dispute With Oracle". CRN. Retrieved 21 September 2011.
  11. The Java Community Process(SM) Program - Press & Success - News Stories. Jcp.org. Retrieved on 2013-07-17.
  12. The Java Community Process(SM) Program - Press & Success - News Stories. Jcp.org. Retrieved on 2013-07-17.

Related Research Articles

Jakarta Enterprise Beans is one of several Java APIs for modular construction of enterprise software. EJB is a server-side software component that encapsulates business logic of an application. An EJB web container provides a runtime environment for web related software components, including computer security, Java servlet lifecycle management, transaction processing, and other web services. The EJB specification is a subset of the Java EE specification.

<span class="mw-page-title-main">Jakarta EE</span> Set of specifications extending Java SE

Jakarta EE, formerly Java Platform, Enterprise Edition and Java 2 Platform, Enterprise Edition (J2EE), is a set of specifications, extending Java SE with specifications for enterprise features such as distributed computing and web services. Jakarta EE applications are run on reference runtimes, which can be microservices or application servers, which handle transactions, security, scalability, concurrency and management of the components they are deploying.

Jakarta Server Pages is a collection of technologies that helps software developers create dynamically generated web pages based on HTML, XML, SOAP, or other document types. Released in 1999 by Sun Microsystems, JSP is similar to PHP and ASP, but uses the Java programming language.

The Connected Device Configuration (CDC) is a specification of a framework for Java ME applications describing the basic set of libraries and virtual-machine features that must be present in an implementation. The CDC is combined with one or more profiles to give developers a platform for building applications on embedded devices ranging from pagers up to set-top boxes. The CDC was developed under the Java Community Process as JSR 36 and JSR 218.

Jakarta Faces, formerly Jakarta Server Faces and JavaServer Faces (JSF) is a Java specification for building component-based user interfaces for web applications. It was formalized as a standard through the Java Community Process as part of the Java Platform, Enterprise Edition. It is an MVC web framework that simplifies the construction of user interfaces (UI) for server-based applications by using reusable UI components in a page.

Java Management Extensions (JMX) is a Java technology that supplies tools for managing and monitoring applications, system objects, devices and service-oriented networks. Those resources are represented by objects called MBeans. In the API, classes can be dynamically loaded and instantiated. Managing and monitoring applications can be designed and developed using the Java Dynamic Management Kit.

Java APIs for Bluetooth Wireless Technology (JABWT) is a J2ME specification for APIs that allows Java MIDlets running on embedded devices such as mobile phones to use Bluetooth for short-range wireless communication. JABWT was developed as JSR-82 under the Java Community Process.

A Java Portlet Specification defines a contract between portlets and their containers; they provides a convenient programming model for Java portlet developers. It is defined through various Java Specification Requests (JSRs).

The Jakarta Standard Tag Library is a component of the Java EE Web application development platform. It extends the JSP specification by adding a tag library of JSP tags for common tasks, such as XML data processing, conditional execution, database access, loops and internationalization.

Java Business Integration (JBI) is a specification developed under the Java Community Process (JCP) for an approach to implementing a service-oriented architecture (SOA). The JCP reference is JSR 208 for JBI 1.0 and JSR 312 for JBI 2.0. JSR 312 was removed from the JCP balloting process on 17 Dec, 2010 by the submitters without being accepted.

A Technology Compatibility Kit (TCK) is a suite of tests that at least nominally checks a particular alleged implementation of a Java Specification Request (JSR) for compliance. It is one of the three required pieces for a ratified JSR in the Java Community Process, which are:

<span class="mw-page-title-main">GlassFish</span> Application server project

GlassFish is an open-source Jakarta EE platform application server project started by Sun Microsystems, then sponsored by Oracle Corporation, and now living at the Eclipse Foundation and supported by OmniFish, Fujitsu and Payara. The supported version under Oracle was called Oracle GlassFish Server. GlassFish is free software and was initially dual-licensed under two free software licences: the Common Development and Distribution License (CDDL) and the GNU General Public License (GPL) with the Classpath exception. After having been transferred to Eclipse, GlassFish remained dual-licensed, but the CDDL license was replaced by the Eclipse Public License (EPL).

<span class="mw-page-title-main">Java (software platform)</span> Set of computer software and specifications

Java is a set of computer software and specifications that provides a software platform for developing application software and deploying it in a cross-platform computing environment. Java is used in a wide variety of computing platforms from embedded devices and mobile phones to enterprise servers and supercomputers. Java applets, which are less common than standalone Java applications, were commonly run in secure, sandboxed environments to provide many features of native applications through being embedded in HTML pages.

<span class="mw-page-title-main">Apache MyFaces</span> Open-source implementation of JavaServer Faces

Apache MyFaces is an Apache Software Foundation project that creates and maintains an open-source JavaServer Faces implementation, along with several libraries of JSF components that can be deployed on the core implementation. The project is divided into several sub-projects:

Jakarta Persistence is a Jakarta EE application programming interface specification that describes the management of relational data in enterprise Java applications.

The Jakarta Expression Language is a special purpose programming language mostly used in Jakarta EE web applications for embedding and evaluating expressions in web pages. The specification writers and expert groups of the Java EE web-tier technologies have worked on a unified expression language which was first included in the JSP 2.1 specification (JSR-245), and later specified by itself in JSR-341, part of Java EE 7.

Jakarta RESTful Web Services, is a Jakarta EE API specification that provides support in creating web services according to the Representational State Transfer (REST) architectural pattern. JAX-RS uses annotations, introduced in Java SE 5, to simplify the development and deployment of web service clients and endpoints.

Java Database Connectivity (JDBC) is an application programming interface (API) for the Java programming language which defines how a client may access a database. It is a Java-based data access technology used for Java database connectivity. It is part of the Java Standard Edition platform, from Oracle Corporation. It provides methods to query and update data in a database, and is oriented toward relational databases. A JDBC-to-ODBC bridge enables connections to any ODBC-accessible data source in the Java virtual machine (JVM) host environment.

<span class="mw-page-title-main">JCP Executive Committee</span>

The JCP Executive Committee (EC) is the group of members guiding the evolution of Java technology in the Java Community Process (JCP). The EC represents both major stakeholders and a representative cross-section of the Java Community. It is composed of 16 JCP members plus a non-voting chair. The chair of the EC is a member of the Process Management Office (PMO). The 16 voting members are selected from JCP members.