Upload
david-nuescheler
View
17.246
Download
3
Embed Size (px)
DESCRIPTION
What is the Content Repository API for Java Technology (aka JCR) and why you should care.
Citation preview
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
Content-Centric Infrastructure 2
Before I start (1):
Content-Centric Infrastructure
t^okfkd
R qÜáë=éêÉëÉåíÉê=áë=~äëç=âåçïå=~ë=íÜÉ=“`çåíÉåí=oÉéçëáíçêó=mìëÜÉêÒK=^ëëìãÉ=íÜÉ=ëí~íÉãÉåíë=íç=ÄÉ=~ÅÅìê~íÉ=Äìí=Äó=åç=ãÉ~åë=Ä~ä~åÅÉÇK
3
Content-Centric Infrastructure 4
Before I start (2):
JSR-170 == JCRthroughout this presentation
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
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
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:
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
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
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.
Content-Centric Infrastructure 11
Beyond the SpecRI & TCK
The Spec:300 Pages
Apache Jackrabbit:more than a reference implementation
Technology
Compatibility Kit:
+1000 Tests
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
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?
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
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
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
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)
…
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
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
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
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
Content-Centric Infrastructure 22
Java Only?
“A Content Repository Standard, sure, but why Java ‘only’?”
Question?
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
Content-Centric Infrastructure 24
JSR-283 vs. JSR-170
“Now JSR-170 just finished, why do we need JSR-283 already?”
Question?
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
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
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
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
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
Commodity Infrastructure
StandardChaos
Content-Centric Infrastructure
Enterprise SoftwareMarket Evolution
30
Operating Systems
WebServers
Relational Databases
J2EE Application Servers
Content Industry
Content-Centric Infrastructure 31
Adoption,Adoption,Adoption.
Why adoption
matters.
JCR a young “success story”
Why adoption
doesn’t matter
after all.
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
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
Content-Centric Infrastructure 34
Industry Standards
170
283
Content-Centric Infrastructure 35
Industry StandardsJSR-283 Progress
JSR-283 Public Review Ballot
approved
final release:
mid 2008
Content-Centric Infrastructure 36
JCR AdoptionTracking success
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
* *
*
**
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
JCR - Weatherforcast-5°
2008 2009-8°
2010-12°
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
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
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
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?
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?
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”
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
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
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
Content-Centric Infrastructure 49
If you remember only one thing!
Everything is Content.1