49
Content-Centric Infrastructure 1 What is JCR/JSR-170/JSR-283? ...and why should I care? David Nuescheler CTO / Day Software JSR-170 & JSR-283 Spec Lead Member of the Apache Software Foundation

Introduction to JCR

Embed Size (px)

DESCRIPTION

What is the Content Repository API for Java Technology (aka JCR) and why you should care.

Citation preview

Page 1: Introduction to JCR

Content-Centric Infrastructure 1

What is JCR/JSR-170/JSR-283?...and why should I care?

David NueschelerCTO / Day SoftwareJSR-170 & JSR-283 Spec LeadMember of the Apache Software Foundation

Page 2: Introduction to JCR

Content-Centric Infrastructure 2

Before I start (1):

Page 3: Introduction to JCR

Content-Centric Infrastructure

t^okfkd

R qÜáë=éêÉëÉåíÉê=áë=~äëç=âåçïå=~ë=íÜÉ=“`çåíÉåí=oÉéçëáíçêó=mìëÜÉêÒK=^ëëìãÉ=íÜÉ=ëí~íÉãÉåíë=íç=ÄÉ=~ÅÅìê~íÉ=Äìí=Äó=åç=ãÉ~åë=Ä~ä~åÅÉÇK

3

Page 4: Introduction to JCR

Content-Centric Infrastructure 4

Before I start (2):

JSR-170 == JCRthroughout this presentation

Page 5: Introduction to JCR

Content-Centric Infrastructure 5

Sep-04-07

Agenda

What is JCR, what is it not?Impact on Content Management?Why should I care?Content Repository DemoQ & A

Page 6: Introduction to JCR

Content-Centric Infrastructure 6

What is JSR-170?

“The API should be a standard, implementation

independent, way to access content bi-directionally on a

granular level within a content repository.”

from the JSR-170 submission

submitted in jan-2001

Page 7: Introduction to JCR

Content-Centric Infrastructure 7

Reality Check!

write a “JSP snippet” that lists all the documents in a folder by “title”.

Task

...Code Snippets courtesy of the JSR-170 Expert-Group:

Page 8: Introduction to JCR

Content-Centric Infrastructure

Reality CheckList all documents in a folder

8

<%childCount = node.getContentCount();for(int i=0;i<childCount;i++) { IContent child = node.getContent(i); Property title = child.getPropertyByName("Title"); %><%= title.getValue() %><br/><%}%>

<%LAPI_DOCUMENTS documents

= new LAPI_DOCUMENTS(session);

LLValue childTable = new LLValue();

documents.ListObjects(volumeID, folderID,

null, null, LAPI_DOCUMENTS.PERM_SEE, chi

ldTable);

Enumeration children = childTable.enumerateValue

s();

while(children.hasMoreElements()) {

LLValue child = (LLValue)e.nextElement()

;

String title = child.toString("Name");

%><%= title %><br/><%

}%>

<%fndocs = new IFnObjSetDualProxy(

fnfolder.getContents(idmFolderContent.idmFolderContentDocument));

int numDocs = fndocs.getCount();for (int i = 1; i <= numDocs; i++) {

IFnDocumentDual fndoc = new IFnDocumentDualProxy(fndocs.getItem(new Integer(i)));

IFnPropertiesDual propset = fndoc.getProperties();

IFnPropertyDual idmTitleProp = propset.getItem("Title");

String title = idmTitleProp.getValue();

%><%= title %><br/><% if (comCleanup) { cleaner.release(fndoc); }}%>

<%IDocuments documents =

new IDocumentsProxy(binder.getDocuments());

documents.cache();

int documentCount = documents.getCount();

for (int i = 0; i<documentCount; i++) {

document = new IDocumentProxy(docume

nts.getItemByIndex(i));

String title = document.getTitle()

%><%= title %><br/><%

}%>

<%PageIterator children = page.getPages();while (children.hasNext()) { Page child = children.nextPage(); Container toplevel = child.getContent(); Atom title = toplevel.getAtom("Title"); %><%= title %><br /><%}%>

+800

<%NodeIterator children = node.getNodes();while (children.hasNext()) { Node child = children.nextNode(); Property title = child.getProperty("Title"); %><%= title %><br /><%}%>

JCR API

Page 9: Introduction to JCR

Content-Centric Infrastructure 9

Industry StandardJSR-170 & JSR-283: High profile Expert Groups

170

283

~50 members in the EG

~70 members bottom line: money & politics

Page 10: Introduction to JCR

Content-Centric Infrastructure 10

Industry StandardContent Repository for Java Technology API (JCR)

V1.0 (JSR-170)Final Release

Approved with one of the highest approval ratings in the JCP. One of the most visible and most active JSR Specs on the Web.

V2.0 (JSR-283)Approved Public Review20-sep-2007

Unbelievable traction.Already 6 officially registeredOpen Source Projects mention their JSR-283 compliance/support.

Page 11: Introduction to JCR

Content-Centric Infrastructure 11

Beyond the SpecRI & TCK

The Spec:300 Pages

Apache Jackrabbit:more than a reference implementation

Technology

Compatibility Kit:

+1000 Tests

Page 12: Introduction to JCR

Content-Centric Infrastructure 12

Took about 4 years Investment for Day ~30 man years of work to complete (Spec,

TCK & RI) First JSR in History of the JCP

with a true Open Source License(Apache Style)

Star Spec-Lead Award for process excellence The OSS Reference Implementation “Jackrabbit” graduated to

a Top Level Apache Project

JSR-170: Some Specifics

Page 13: Introduction to JCR

Content-Centric Infrastructure 13

Functional Definition of a “Content Repository” Common Vocabulary! No longer learn (dozens of) (ugly) proprietary API‘s Write (mostly) portable code, for Document Management, Web

Content Management, Source Code Control Compare Repository Functionality No more information silos and vendor Lock-in

What does JCR do for a CMS dev?

Page 14: Introduction to JCR

Content-Centric Infrastructure 14

L1

Level 1 : Features

Level1

Read onlySimple & Covers a large number of usecases

StructuredStrong typed information

HierarchicalParent child relationships, Sort order

PropertyTypesString, Binary, Numbers, Calendar, ...

NodeTypesIntrospect complex Content Structures

Query (XPath)Search and query

ExportXML Content Export

Fine & CoarsegrainedContent Items Small to Large

Page 15: Introduction to JCR

Content-Centric Infrastructure 15

Level 1: Applications Typical Level-1 only Applications:

CMS-Templates, Content Delivery

Display Portlets

Repository Export

Reporting Applications

Federated Repositories

Overwhelming Majority of Application Source Code is written using Level-1 callsWrite+

Read & Search

Page 16: Introduction to JCR

Content-Centric Infrastructure 16

Level 2 : Features

WriteSave changes to a repository

UnstructuredSupport for weakly or unstructured Content

ImportStandardized Finegrained Content Import

Referencial IntegrityReference Tracking and Integrity

AccessControlIntrospection

Level 2

L2

Page 17: Introduction to JCR

Content-Centric Infrastructure 17

Level 2: Applications

Typical Level-2 Applications: Entry Level Content Management

Entry Level Document Management

Workflow

Collaboration

Content Aggregation (Content Warehouse)

Page 18: Introduction to JCR

Content-Centric Infrastructure 18

Advanced Features

VersioningWorkspaces, Merge, Update, Label, ...

JTA Support(XA) Transactions

ObservationMonitor changes in the Repository

Query (SQL)Search the Content Repeository using SQL

LockingSession based and persistant Adv

Page 19: Introduction to JCR

Content-Centric Infrastructure 19

Optional

Sep-04-07

Binary, Text, Date, Numbers

Structured

Read Finegrained

Query (XPath)

Hierarchical

Export

Unstructured

Write

Access Control

Import Referencial Integrity

Versioning

Transactions

Locking

Query (SQL) Observation

Level 2

Level 1

Functional OverviewCompliance Levels

Page 20: Introduction to JCR

Content-Centric Infrastructure 20

Full JSR-170: Applications

Typical Applications that require full JSR-170 compliant Repositories: Complete ECM suites

Transactional Applications

Source Control Management Systems

Page 21: Introduction to JCR

Content-Centric Infrastructure

What is a content repository?Best of both worlds

database filesystem

contentcontent repository

read

write

hier-archiesstreams

locking accesscontrol

integrity structure

tx query

un-structured “full-

text” sortorder

versioning

obser-vation

multi-value

Page 22: Introduction to JCR

Content-Centric Infrastructure 22

Java Only?

“A Content Repository Standard, sure, but why Java ‘only’?”

Question?

Page 23: Introduction to JCR

Content-Centric Infrastructure 23

Why the Java…

…because of its standardizing body: The JCP.

Excellent track record with respect to implementations of finished specifications

Reference Implementations and Technology Compatibility Kit are mandatory

Efficient Specification Cycles A lot of the JCR specification can still be applied other

environments and languages

Page 24: Introduction to JCR

Content-Centric Infrastructure 24

JSR-283 vs. JSR-170

“Now JSR-170 just finished, why do we need JSR-283 already?”

Question?

Page 25: Introduction to JCR

Content-Centric Infrastructure 25

JSR-283 vs. JSR-170

Normal development cycle JCR v2.0 is a compatible extension to JCR v1.0 Extensions contain functional omissions in JCR v1.0

Page 26: Introduction to JCR

Content-Centric Infrastructure 26

Sep-04-07

Agenda

What is JCR, what is it not?Impact on Content Management?Why should I care?Content Repository DemoQ & A

Page 27: Introduction to JCR

Content-Centric Infrastructure 27

Sep-04-07

Application EApplication DApplication CApplication B

Problem Content Isolated in Silos

Application A

Repository E

Repository D

Repository C

Repository B

Repository A

Accounting Marketing Legal HR R&D

Page 28: Introduction to JCR

Content-Centric Infrastructure 28

Sep-04-07

Strategy Enterprise 2.0 & the Future of ECM

Application EApplication DApplication CApplication BApplication A

JSR-170 API

Web Frontend

Repository E

Repository D

Repository C

Repository B

Repository A

Accounting Marketing Legal HR R&D

Page 29: Introduction to JCR

Content-Centric Infrastructure 29

Sep-04-07

SolutionStandards-Based Content Repository

Java Content Repository

Web Frontend

Application EApplication DApplication CApplication BApplication A

JSR-170 API

Accounting Marketing Legal HR R&D

Page 30: Introduction to JCR

Commodity Infrastructure

StandardChaos

Content-Centric Infrastructure

Enterprise SoftwareMarket Evolution

30

Operating Systems

WebServers

Relational Databases

J2EE Application Servers

Content Industry

Page 31: Introduction to JCR

Content-Centric Infrastructure 31

Adoption,Adoption,Adoption.

Why adoption

matters.

JCR a young “success story”

Why adoption

doesn’t matter

after all.

Page 32: Introduction to JCR

Content-Centric Infrastructure 32

Why adoption matters

Every standard that does not get implemented is a dead standard

Industry and Vendor support is crucial for a standard to reach critical mass

Every successful standard must have multiple completely independent implementations

Page 33: Introduction to JCR

Content-Centric Infrastructure 33

JSR-170 Adoption

Native JSR-170 RepositoryFully Compliant built to the JSR-170 Specs

CompliantRepository passes parts of TCK out of the BOX

JSR-170 EnabledJSR-170 Connector, Third Party1

2

33

Fast

er a

dopt

ion

Page 34: Introduction to JCR

Content-Centric Infrastructure 34

Industry Standards

170

283

Page 35: Introduction to JCR

Content-Centric Infrastructure 35

Industry StandardsJSR-283 Progress

JSR-283 Public Review Ballot

approved

final release:

mid 2008

Page 36: Introduction to JCR

Content-Centric Infrastructure 36

JCR AdoptionTracking success

Page 37: Introduction to JCR

Known Compliant Repositories(* using 3rd party connectors)

Content-Centric Infrastructure 37

Apache Jackrabbit Oracle XML DBExo

ECMS PlatformMicrosoft

Sharepoint OpenText Livelink

Day CRX IBM FileNet P8 Xythos Repository Alfresco ECM Vignette V7

Interwoven Repository IBM CM EMC Documentum

How many

RDBMS vendors

do you need?+hundreds of TCKsregistered

* *

*

**

Page 38: Introduction to JCR

Sourcemix Sourcemix

Percussion Rhythmix Lutece

Portal

QuickWCM WCMS

Jahia Framework

Hippo CMS

InfoQ Online CommunityNuxeo ECM

Sakai E-learning

TYPO3 v5.0 WCMGX WebManager

Exo ECMS Platform

Liferay Enterprise Portal

Artifactory Maven Proxy

IBM FileNet WebSiteManagerApache James

medic-2-medic mapofmedicine

Day Communiqué WCMS

Apache Tapestry

Day Communique Collab

QSLabs ComplianceApache

Cocoon

Alfresco ECMSApache Sling

Mindquarry Collaboration

Day Communique DAM

Content-Centric Infrastructure 38

magnolia WCMS

JBoss Portal

Some known JCR Applications

Sun OpenPortal Interface 21

Spring Framework

Fast Enterprise SearchOracle PortalBEA Portal

Page 39: Introduction to JCR

JCR - Weatherforcast-5°

2008 2009-8°

2010-12°

Page 40: Introduction to JCR

Content-Centric Infrastructure

2004 2005 2007

Why it doesn’t really matter?

Slide

Jackrabbit

100

200

300

400

Mailing list activity (# of posts bi-weekly)

last 2 weeks: 410

52

40

Page 41: Introduction to JCR

Content-Centric Infrastructure 41

Why adoption doesn’t matter…

“Non-standards based” repositories will go away. Over time.

* Does anyone remember the names of the large Database vendors that did not support SQL, or the Application Server

vendors that did not whole-heartedly buy into J2EE… ?

Standard vs. Non-standard Infrastructure

Page 42: Introduction to JCR

Content-Centric Infrastructure 42

Sep-04-07

Agenda

What is JCR, what is it not?Impact on Content Management?Why should I care?Content Repository DemoQ & A

Page 43: Introduction to JCR

Content-Centric Infrastructure 43

Java Content Repository

Your “brandnew”Application

Versioning?Retention?

Observe changes?

Structured? Unstructured?

Queries? Fulltext?Hierarchies?

Sort order?

Multimedia?Blobs?

Streaming?

Pure Java?Enterprise?

When to use?

Page 44: Introduction to JCR

Content-Centric Infrastructure 44

RDBMS XML BLOBS Config Users

JDBC DOM/SAX FS ??? ???

Your lastApplication!

Content Repository

Your nextApplication?

JSR-170

Why should I care?

Page 45: Introduction to JCR

Content-Centric Infrastructure 45

What is a JCR-based applications

Almost every application benefits from using a content repository.

“Every Application is a Content Application”

Page 46: Introduction to JCR

Content-Centric Infrastructure 46

What does this mean for PHP/TYPO3?

JCR is considered as one of the backing stores forTypo 3 v5

Karsten is working on a JSR-283 implementation in PHP that would be used by TYPO3...to learn more, go to his talk at today 16h45 in Track A

Page 47: Introduction to JCR

Content-Centric Infrastructure 47

Sep-04-07

Agenda

What is JCR, what is it not?Impact on Content Management?Why should I care?Content Repository DemoQ & A

Page 48: Introduction to JCR

Content-Centric Infrastructure 48

Sep-04-07

Agenda

What is JCR, what is it not?Impact on Content Management?Why should I care?Content Repository DemoQ & A

Page 49: Introduction to JCR

Content-Centric Infrastructure 49

If you remember only one thing!

Everything is Content.1