Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Introduction to JCR
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
Content-Centric Infrastructure 1
3. t^okfkd
R qÜáë=éêÉëÉåíÉê=áë=~äëç=âåçïå=~ë=íÜÉ=
“`çåíÉåí=oÉéçëáíçêó=mìëÜÉêÒK=
^ëëìãÉ=íÜÉ=ëí~íÉãÉåíë=íç=ÄÉ=~ÅÅìê~íÉ=Äìí=
Äó=åç=ãÉ~åë=Ä~ä~åÅÉÇK
Content-Centric Infrastructure 3
4. Before I start (2):
throughout this presentation
JSR-170 == JCR
Content-Centric Infrastructure 4
5. Sep-04-07
Agenda
What is JCR, what is it not?
Impact on Content Management?
Why should I care?
Content Repository Demo
Q&A
Content-Centric Infrastructure 5
6. What is JSR-170?
from the JSR-170 submission
“The API should be a
standard, implementation
independent, way to access
content bi-directionally on a
granular level within a
content repository.”
submitted in
jan- 001
2
Content-Centric Infrastructure 6
7. Reality Check!
Task
write a “JSP snippet” that lists all the
documents in a folder by “title”.
...Code Snippet
s courtesy of
JSR170 Exp
- the
ert-Group:
Content-Centric Infrastructure 7
8. Reality Check
List all documents in a folder
ession);
<% new LAPI_DOCUMENTS(s
LAPI_D OCUMENTS documents =
new LLValue();
LLValue childTable = ,
s(volumeID, folderID
<% documents.ListObject UMENTS.P ERM_SEE, childTable);
null, null, LAPI_DOC lues();
childCount = node.getContent ildTable.enumerateVa
Count(); Enum eration children = ch
for(int i=0;i<childCount;i reElements()) {
++) { while(children.hasMo alue)e.nextElement()
;
IContent child = node.getC LLValue child = (LLV
JCR API
ontent(i);
toString(quot;Namequot;);
Property title = child.get
PropertyByName(quot;Titlequot;); String title = child.
%><%= title.getValue() %>< %
br/><% %><%= title %><br/><
}
%>
<% }
<% NodeIterator children = node.getNodes();
%>
<%
fndocs
= new
IFnObj
while (children.hasNext()) { ile erator children = page.getPages();
PageIt
wh (chi
fnfold
er.get
SetDua
lProxy
( Node child = children.nextNode();ldren.hasNext()) extPage();
Page child = children
.n
{
int nu
Folder Property title = child.getProperty(quot;Titlequot;);
mDocs Conten Container toplevel =
for (i = fndo ts(idm child.getContent();
nt i = cs.get Conten Atom title = toplevel
Count( .getAtom(quot;Titlequot;);
1;
IFnDoc i <= numDocs );
umentD %><%=mtitle %><br /><% } %><%= title %><br /><%
t.id F
olderC
ontent
ual fn ; i++) { Docume
new IF
IFnPro
nDocum
pertie
entDua
doc =
lProxy
} nt));
%>
= %> tItem(new I
IFnPro sD (fndoc
pertyD ual propset s.ge
String tit ual id fndo
%><%= le = i mTitleProp = c.getPropert nteger(i)));
ti dmTi pr ies ;
if (co tle %><br/>< tleProp.getV opset<% etIte ();
.g er.getDocuments())
mClean % alue() m(quot;Tit cuments = new IDocumentsProxy(bind
cleane up) ; ocuments dolequot;);
ID
r.rele {
} ase(fn documents.cache(); ();
+800
} doc); documents.getCount
in t documentCount = {
%> documentCount; i++) ByIndex(i));
for (int i = 0; i< ocumentProxy (documents.getItem
document = new ID
ment.getTitle()
String title = docu
><%
%><%= title %><br/
}
%>
Content-Centric Infrastructure 8
9. Industry Standard
JSR-170 & JSR-283: High profile Expert Groups
~50 member
170
s in the EG
283
~70 member
s
bottom line: money & politics
Content-Centric Infrastructure 9
10. Industry Standard
Content 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 Review
20-sep-2007
Unbelievable traction.
Already 6 officially registered
Open Source Projects mention
their JSR-283 compliance/support.
Content-Centric Infrastructure 10
11. Beyond the Spec
RI & TCK
The S Apache Jackrabbit:
300 pec: more than a reference
Pages
implementation
y
nolog ility Kit:
T ch atib
e
Comp 0 T sts
+10 0 e
Content-Centric Infrastructure 11
12. JSR-170: Some Specifics
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
Content-Centric Infrastructure 12
13. What does JCR do for a CMS dev?
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
Content-Centric Infrastructure 13
14. Level 1 : Features
Read only
Simple & Covers a large number of usecases
Fine & Coarsegrained Level1
Content Items Small to Large
Hierarchical
Parent child relationships, Sort order
Structured
Strong typed information
PropertyTypes
String, Binary, Numbers, Calendar, ...
L1
NodeTypes
Introspect complex Content Structures
Query (XPath)
Search and query
Export
XML Content Export
Content-Centric Infrastructure 14
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
te+
Wri Code is written using Level-1 calls
Read
Sear &
ch
Content-Centric Infrastructure 15
16. Level 2 : Features
Level 2
Write
Save changes to a repository
Unstructured
Support for weakly or unstructured Content
L2
Import
Standardized Finegrained Content Import
Referencial Integrity
Reference Tracking and Integrity
AccessControl
Introspection
Content-Centric Infrastructure 16
18. Advanced Features
Versioning
Workspaces, Merge, Update, Label, ...
JTA Support
(XA) Transactions
Observation
Monitor changes in the Repository
Adv
Query (SQL)
Search the Content Repeository using SQL
Locking
Session based and persistant
Content-Centric Infrastructure 18
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 20
21. What is a content repository?
Best of both worlds
database filesystem
hier-
integ archi
rity structu
re es
read streams
tx query write locking
access
control
multi-
value un- ning
structured “full- sort obser- versio
text” order vation
content repository
content
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 23
24. JSR-283 vs. JSR-170
Question?
“Now JSR-170 just finished, why do
we need JSR-283 already?”
Content-Centric Infrastructure 24
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 25
26. Sep-04-07
Agenda
What is JCR, what is it not?
Impact on Content Management?
Why should I care?
Content Repository Demo
Q&A
Content-Centric Infrastructure 26
27. Sep-04-07
Problem
Content Isolated in Silos
Accounting Marketing Legal HR R&D
Application A Application B Application C Application D Application E
Repository Repository Repository Repository Repository
A B C D E
Content-Centric Infrastructure 27
28. Sep-04-07
Strategy
Enterprise 2.0 & the Future of ECM
Accounting Marketing Legal HR R&D
Web Frontend
Application A Application B Application C Application D Application E
JSR-170 API
Repository Repository Repository Repository Repository
A B C D E
Content-Centric Infrastructure 28
29. Sep-04-07
Solution
Standards-Based Content Repository
Accounting Marketing Legal HR R&D
Web Frontend
Application A Application B Application C Application D Application E
JSR-170 API
Java Content Repository
Content-Centric Infrastructure 29
30. Enterprise Software
Market Evolution
Operating Systems
WebServers
Relational Databases
J2EE Application Servers
Commodity
Content Industry Infrastructure
Standard
Chaos
Content-Centric Infrastructure 30
31. Adoption, option
hy ad .
W ers
matt
JCR
“ uc a you
s c
ess ng
Adoption,
stor
y”
Adoption.W
option
hy ad atter
sn’t m
doe all.
after
Content-Centric Infrastructure 31
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 32
33. JSR-170 Adoption
1 JSR-170 Enabled
JSR-170 Connector, Third Party
Faster adoption
2 Compliant
Repository passes parts of TCK out of the BOX
Native JSR-170 Repository
3 Fully Compliant built to the JSR-170 Specs
Content-Centric Infrastructure 33
37. Known Compliant Repositories
(* using 3rd party connectors)
Exo Microsoft
* *
Apache Jackrabbit Oracle XML DB ECMS Platform Sharepoint OpenText Livelink
Day CRX IBM FileNet P8 Xythos Repository Alfresco ECM Vignette V7 *
any ors
ow mvendd?
H S e
*
+hund DBMou ne
R do y
Interwoven
Repository * IBM CM EMC Documentum
r s
regiede of TCKs
st red
Content-Centric Infrastructure 37
38. Some known JCR Applications
Fast
BEA Portal Sun Oracle Portal Enterprise Search
JBoss Portal Interface 21
OpenPortal
Day Communique Spring Framework
magnolia WCMS DAM
Apache Sling Day Communique
Alfresco ECMS Mindquarry Collab
Collaboration Apache Tapestry
QSLabs
Apache Compliance Day Communiqué
Cocoon WCMS IBM FileNet
Artifactory medic-2-medic WebSiteManager
Apache James Maven Proxy mapofmedicine
Exo
ECMS Platform TYPO3
GX WebManager v5.0 WCM
InfoQ Hippo Liferay
Nuxeo ECM Online Community CMS Enterprise Portal
Jahia Sakai
Percussion Framework E-learning
Rhythmix QuickWCM Sourcemix
WCMS Lutece Sourcemix
Portal
Content-Centric Infrastructure 38
40. Why it doesn’t really matter?
last 2 weeks:
410
400
Slide
300
200
100
Jack
rabbit 2004 2005 2007 52
Mailing list activity
(# of posts bi-weekly)
Content-Centric Infrastructure 40
41. Why adoption doesn’t matter…
“Non-standards based” repositories will go away. Over time.
Standard vs. Non-standard Infrastructure
* 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… ?
Content-Centric Infrastructure 41
42. Sep-04-07
Agenda
What is JCR, what is it not?
Impact on Content Management?
Why should I care?
Content Repository Demo
Q&A
Content-Centric Infrastructure 42
43. When to use?
Observe Structured?
Versioning? changes? Unstructured?
Retention?
Multimedia?
Java Content
Your Blobs?
Repository “brandnew” Streaming?
Application
Pure Java?
Queries?
Enterprise?
Hierarchies? Fulltext?
Sort order?
Content-Centric Infrastructure 43
44. Why should I care?
Your last Your next
Application! Application?
JDBC DOM/SAX FS ??? ??? JSR-170
RDBMS XML BLOBS Config Users Content Repository
Content-Centric Infrastructure 44
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 45
46. What does this mean for PHP/TYPO3?
JCR is considered as one of the backing stores for
Typo 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 46
47. Sep-04-07
Agenda
What is JCR, what is it not?
Impact on Content Management?
Why should I care?
Content Repository Demo
Q&A
Content-Centric Infrastructure 47
48. Sep-04-07
Agenda
What is JCR, what is it not?
Impact on Content Management?
Why should I care?
Content Repository Demo
Q&A
Content-Centric Infrastructure 48
49. If you remember only one thing!
1 Everything is Content.
Content-Centric Infrastructure 49