Introduction to JCR


Published on

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

Published in: Technology, News & Politics
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Introduction to JCR

  1. 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
  2. 2. Before I start (1): Content-Centric Infrastructure 2
  3. 3. t^okfkd R qÜáë=éêÉëÉåíÉê=áë=~äëç=âåçïå=~ë=íÜÉ= “`çåíÉåí=oÉéçëáíçêó=mìëÜÉêÒK= ^ëëìãÉ=íÜÉ=ëí~íÉãÉåíë=íç=ÄÉ=~ÅÅìê~íÉ=Äìí= Äó=åç=ãÉ~åë=Ä~ä~åÅÉÇK Content-Centric Infrastructure 3
  4. 4. Before I start (2): throughout this presentation JSR-170 == JCR Content-Centric Infrastructure 4
  5. 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. 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. 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. 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 /><% 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 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. 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. 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. 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. 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. 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. 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. 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. 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
  17. 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 17
  18. 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
  19. 19. Sep-04-07 Functional Overview Compliance Levels Versioning Locking Transactions Query (SQL) Observation Optional Unstructured Access Control Write Import Referencial Integrity Level 2 Read Hierarchical Finegrained Query (XPath) Structured Export Level 1 Binary, Text, Date, Numbers Content-Centric Infrastructure 19
  20. 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. 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
  22. 22. Java Only? Question? “A Content Repository Standard, sure, but why Java ‘only’?” Content-Centric Infrastructure 22
  23. 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. 24. JSR-283 vs. JSR-170 Question? “Now JSR-170 just finished, why do we need JSR-283 already?” Content-Centric Infrastructure 24
  25. 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. 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. 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. 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. 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. 30. Enterprise Software Market Evolution Operating Systems WebServers Relational Databases J2EE Application Servers Commodity Content Industry Infrastructure Standard Chaos Content-Centric Infrastructure 30
  31. 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. 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. 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
  34. 34. Industry Standards 170 283 Content-Centric Infrastructure 34
  35. 35. Industry Standards JSR-283 Progress ase: rele 08 Review Ballot inal 20 JSR-283 Public f id m ov ed ap pr Content-Centric Infrastructure 35
  36. 36. JCR Adoption Tracking success Content-Centric Infrastructure 36
  37. 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. 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
  39. 39. JCR - Weatherforcast 2008 -5° 2009 -8° 2010 -12°
  40. 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. 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. 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. 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. 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. 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. 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 learn more, go to his talk at today 16h45 in Track A Content-Centric Infrastructure 46
  47. 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. 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. 49. If you remember only one thing! 1 Everything is Content. Content-Centric Infrastructure 49
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.