Saturday, July 21, 2012

JSR 170, JSR 283 and JSR 333 - The beginnings of CRX


The Java Specification Requests (JSRs) are the formal documents that describe proposed specifications and technologies for adding to the Java platform. Any individual or company who wishes to submit a new technology to be added to the Java platform must  constraint to the procedure defined by the Java Community ProcessSM (JCPSM).


The Java Community ProcessSM (JCPSM)

The Java Community Process (JCP) leads the Process of developing and evolving Java technology specifications for the international Java community to follow. The JCP produces three major products: 1) the Specification, 2) a Reference Implementation and 3) a Technology Compatibility Kit. The submission, revision, approval and publication of a new JSR is held by various groups of stakeholders playing different roles in the Process. The JSR must go through four well-defined stages: 1) Initiation, 2) draft release, 3) final release and 4) maintenance.

The participants

There are four well-defined groups that participate in the Process. It all starts with the Specification Leader[1] who has to be a JCP member and is the expert responsible for leading the effort to develop or make significant revisions to a Specification and for completing the associated Reference Implementation and Technology Compatibility Kit (the other two major products from the Process).  The Expert Group is a group of Experts with a deep  understanding of the technology in question, they are responsible to hash out the technology, develop or make significant revisions to a Specification; they are gathered in two groups, one group responsible to oversee the Java technologies for the desktop/server space (Java SETM and Java EETM) and the other group to oversee the Java technologies for the consumer/embedded space (Java METM). The Executive Committee are the Members who guide the evolution of the Java technologies, they are responsible of the many approval ballots.  The public who are any individuals willing to review and comment on the draft specification.

The stages

Initiation:

A new Specification or a revision to an existing Specification is born when a member submits a JSR to the Program Management Office (PMO) for revision of completeness. Once the submission is complete the PMO assigns a JSR     number to the proposal and submits it to the Executive Committee (EC) for its JSR Approval Ballot (a two-week Executive Committee ballot to determine if the initial JSR submission should be approved). Upon approval the Specification Lead defined in the proposal should Recruit Experts/Observers who will become his/her Expert Group (EG). Once the EG is conformed as a Team and resources and help have been defined then they all can move to the following stage.

Draft Releases:

The Expert Group develops the Specification through an iterative process, releasing drafts for public review and comment. After the formal Public Review the Expert Group holds a ballot on whether the JSR should proceed to the Final Release Stage.

Final Release:
The Specification Lead submits the Specification to the Program Management Office (PMO) for publication as the Proposed Final Draft. When the Reference Implementation (RI) and the Technology Compatibility Kit (TCK) are completed, and the RI passes the TCK, the Specification, the RI and the TCK are submitted to the PMO, which circulates them to the responsible Expert Group (EG) for final approval.

Maintenance:
The Specification, Reference Implementation, and Technology Compatibility Kit are updated in response to ongoing requests for clarification, interpretation, enhancements and revisions. The responsible Expert Group reviews proposed changes to the Specification and indicates which can be carried out immediately and which should be deferred to a new JSR.

Maintenance is the reason why we have JSR 170 (final released Oct 23, 2002) which was revised and upgraded to JSR  (final released Sep 25, 2009) and JSR 333 (under development since Sep 30, 2011).

From here we can take it to Apache Jackrabbit, the Reference Implementation and open source for Java Content Repository and then we will have the scenario ready to dive into CRX.

[1] The right denomination for this group is Specification Lead but for clarity purposes I have used Specification Leader only this one time.

Saturday, July 7, 2012

What is CRX?

First time i crossed roads with this word and its definition it would've been great for me to have been given the following description: "A hierarchical data repository system based on java and mainly used for web content rendition"; that would've given me the idea that i wouldn't be using a regular DBMS to store and retrieve my website's content but a different kind of repository instead.

The word itself stands for Content Repository Extreme but to me that is pretty much more a marketing brand than a technical definition; if you want a more technical definition then turn to CRX basis. There is a well defined path from the conception of the idea of having a repository for rendering web content all the way to its must recent commercial product CRX 2.3 (March 2012). CRX is a Java Content Repository (JCR) with its own set of Java Specification Requests (JSR 170 which was updated to JSR 283 and most recently JSR 333 which is still under work).

There are four well-defined groups that participate in the Process of Creating a Java Specification Request (JSR). It all starts with the Specification Lead who has to be a Java Community Process (JCP) member and is the expert responsible for leading the effort to develop or make significant revisions to a Specification and for completing the associated Reference Implementation and Technology Compatibility Kit (the other two major products from the Process); for the Java Content Repository (JCR) specifications the Specification Lead is David Neuschuler currently CTO of Adobe Content Experience Manager (CEM).  The Expert Group is a group of experts with a deep  understanding of the technology in question, they are responsible to hash out the technology, develop or make significant revisions to a Specification; they are gathered in two groups, one group responsible to oversee the Java technologies for the desktop/server space (Java SETM and Java EETM) and the other group to oversee the Java technologies for the consumer/embedded space (Java METM). The Executive Committee are the Members who guide the evolution of the Java technologies, they are responsible of the many approval ballots.  The public who are any individuals willing to review and comment on the draft specification.

If you wish to Master CRX you need to follow the road from start to end, i mean you need to study the specifications (JSR 283), its open source implementation Apache Jackrabbit and finally dive into CRX. If you already use any DBMS then you might be looking for some analogies, the first two that i can come up with are: [tables and attributes] are almost equivalent to [nodes and properties].

No discussion about CRX would be complete without mentioning Apache Felix and Apache Sling Technologies. Apache Felix provides the Application Framework for CRX's bundles and Apache Sling is sort of gatekeeper to acces CRX. We will be covering the specifications, the open source implementation, inner workings of CRX and other related technologies in future blogs.