SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
Introducing JCR


sep-2010
David Nuescheler
Introductions


David Nuescheler Chief Technology Officer
david@day.com

                                                            David Nuescheler
                                                            JSR-170 Spec Lead
                                                            jsr-170-comments@jcp.org




            David Nuescheler
            Jackrabbit Committer / Member
            uncled@apache.org               David Nuescheler
                                            TC Member / CMIS-JCR Liaison
                                            david@day.com
Day Software
Introducing JCR 1.0                                  Beyond the Spec
History, Adoption, Usage.
                                                     Real-life use...




1                           2                        3

                            JCR 2.0
                            Evolution, What’s new?
JCR.


  “The API should be a standard,
  implementation independent,
  way to access content bi-
  directionally on a granular level
  to a content repository.”
A Content Repository!?

                     CONTENT REPOSITORY

           FEATURES OF AN                                        FEATURES OF A



          RDBMS                                        FILESYSTEM
   Transactions, Query, Structure, Integrity         Binaries, Hierarchy, Locking, Access Control




                +
                                               ALL THE OTHER



                                  GOOD STUFF
                                      YOU ALWAYS WANTED

                              Data First, Versioning, Full-text,
                              Multi-Value, Sort-Order, Observation
When to use?



permissions    binaries
   search JCR   read-most
   versions    unstructured
                              7
Reality Check!


                        Task


   write a “JSP snippet” that lists all the
      documents in a folder by “title”.
                 ...Code Snipp
                              ets courtesy
                 JSR- 70 Ex
                      1                    of the early
                              pert-Group
                                            :
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("Name");
     Property title = child.get
                                PropertyByName("Title");                   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
            (idmFo
                    lderCo
                               Set
                         er.get DualProxy(
                                Conten
                                       ts
                                                   Node child = children.nextNode();ldren.hasNext()) extPage();
                                                                                 Page child = children
                                                                                                       .n
                                                                                                          {
      int nu
                                          derCon Property title = child.getProperty("Title");
             mDocs          ntent.                                               Container toplevel =
      for (i         = fndo        idmFol                                                              child.getContent();
             nt i =         cs.get                tentDo                         Atom title = toplevel
                                   Count(                                                              .getAtom("Title");
                      1;
                IFnDoc i <= numDocs );
                       umentD                      %><%=ntitle %><br /><% } %><%= title %><br /><%
                                                         cume t
                                                                ));
                              ual fn ; i++) {
               new IF
                       nD
               IFnPro ocumentDualP =
                      pertie
                                     doc
                                        roxy(f
                                                 }                          %>

                                              = %> tItem(new I
              IFnPro         sD                ndocs.
                      pertyD ual propset              ge
              Stri
                 ng 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("Tit cuments = new IDocumentsProxy(bind
            cleane     up)                         ; ocuments dole");
                                                   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/
                                                    }
                                                    %>
Beyond the Spec
RI & TCK




  The S
 300 pec:    Apache Jackrabbit:
     Pages    more than a reference
             implementation
                                               y
                                          nolog ility Kit:
                                      T ch atib
                                       e
                                       Comp 0 T sts
                                                e
                                         +100



                                                             10
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
Java Only?


                 Question?


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

 …because of its standardizing body: The JCP.


 Good track record with respect to implementations and 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
Introducing JCR Catalyst




  WEB      apache
                    JCR
  APP       sling
The Web and Content?




               REST -> Roy T. Fielding


                                                       ly
                                         JCR: Yours tru
                                                                          d 2005
 rele a                                                     v1.0 rele ase
                                                                      ages
       sed y
 162 p 2k                                                       +300 p
        ages
Industry Standards


  170

  283

                     16
Tracking success




                   17
Known Compliant Repositories
(* partially 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




    Interwoven                                               Saperion     +hund
                                                                               reds o
    Repository       IBM CM / Domino EMC Documentum          Archive         registe f TCKs
                                                                                    red
Some known JCR Applications


                                                                                 Fast
  BEA Portal        Sun                         Oracle WebCenter          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
Introducing JCR 1.0                                  Beyond the Spec
History, Adoption, Usage.
                                                     Real-life use...




1                           2                        3

                            JCR 2.0
                            Evolution, What’s new?
JSR-283: Some Specifics

 Took about 4 years
 Investment for Day ~30 man years of work to complete (Spec, TCK & RI)
 Star Spec-Lead Award for process excellence
 The OSS Reference Implementation “Apache Jackrabbit” Top Level Project
Backwards Compatible.


           NEW




              100%
                  & IMP
     BACKWA             ROVE
                             D
     COMPAT RDS
           IBLE




                        Binary Compatible
                        JSR-170 (JCR v1.0) Applications
                        do not require modification
                        Mixed environment supported (1.0 & 2.0 Apps)
Reorganized.


           NEW




              100DEL & BINDING
                  & IMP
     BACKWA             ROVE
                             D                 D



                   %
     COMPAT RDS                       IMP ROVE
                                  &
           IBLE             NEW



                MO


                          Completely re-organized and clarified
                          Specification
                          Separate Content Repository model section
                          Removed a lot of the Java Language specification
Bundled.


           NEW




              100DEL & BINDING
                  & IMP
     BACKWA             ROVE
                             D                 D



                   %
     COMPAT RDS                       IMP ROVE
                                  &
           IBLE             NEW



                MO NEW & IMPROVED



          OSGI BUNDLE


                          Shipped jcr-2.0.jar is an OSGI Bundle
                          Ready to deploy in an OSGI Container
Favorites.




 10
Query extensions




                       AQM
                         JQOM
   NEW


#1 QUER
         & IMP
               ROVE                SQL
               2.0
                   D

       Y               Abstract Query Model
                       Java Query Object Model (Java Binding)
                       SQL Bindings
Query extensions




                       +JOIN
   NEW
         & IMP

#1 QUER
               ROVE



               2.0
                   D     Revamped Result-Set to allow for multiple nodes
       Y                 New and Improved query capabilities
Query extensions




                   -XPATH
                       *well, still available but deprecated
                                                               *


   NEW
         & IMP
                                        Not enough support from the EG
#1 QUER
               ROVE



               2.0
                   D
                                        JQOM allows for many implementations
       Y                                Jackrabbit / CRX will support XPATH
Access Control Management




                   +ACL
                  +POLICY
 NEW & IM
         PROVED

#2 ACL
           2.0       Allows to set ACL and Access Control Policies
Retention Policy & Hold




        +RETENTION
        +LEGAL HOLD
 NEW
       & IMP
             ROVE

#3 RM
             2.0
                 D
                     Support for interaction with RM systems
                     Allows setting and introspection of Retention
                     Policies and Holds
Simple versioning




              +LINEAR
             VERSIONING
             2.0
               ED
  NEW & IMPROV

#4 SIMPLE           Simplified Versioning Model to allow
VERSIONING          for ease of adoption.
Lifecycle Management




                     +BPM
                       Allows to express and introspect Lifecycle status
    NEW & IM           and transitions.
            PROVED

#5 LIFECYCLE
               2.0
Nodetype Registration




            +REGISTER
            NODETYPES
    NEW
          & IMP
                ROVE
#6 NODE

                2.0
                     D
MANAGE TYPE
      MENT               Standardized way of registering new and modify
                         registered Nodetypes
New property & nodetypes


                              +mix:title
              +URL            +mix:created
                              +mix:lastModified
   +WEAK REFERENCE            +mix:language
          +DECIMAL            +mix:etag
                              +nt:address


    NEW & IMPROVED

#7 NEW PROPERTY
  & NODETYPES
                  2.0   Things we missed in JCR 1.0 applications
Workspace Management




          +CREATE &
          REMOVE WS
               2.0
           PROVED
  NEW & IM

#8 WORKSPACE         Standardized way of create and remove
 MANAGEMENT          workspaces
Shareable nodes




                   +GRAPH
                     Multi-filing. Nodes can have multiple parents.



               2.0
  NEW & IMPROVED

#9 SHAREABLE
    NODES
Journalling Observation




      +DELTA SINCE?
    NEW
          & IMP         what changed since I last checked?
#10 JOU
                ROVE



                  2.0
                    D
       RNALLIN
 OBSERVA      G
         TION
Introducing JCR 1.0                                  Beyond the Spec
History, Adoption, Usage.
                                                     Real-life use...




1                           2                        3

                            JCR 2.0
                            Evolution, What’s new?
Beyond the Spec.


            NEW
                  & IMP
     APACHE             ROVE

     NEW & PJACKRABBIT
                         2.0
                             D

            ROVEN ;)




                         Robust Code base
                         Fully JCR 2.0 Compliant ;)
                         More tooling than ever
                         Established eco-system
Beyond the Spec.


            NEW
                  & IMP
     APACHE             ROVE

     NEW & PJACKRABBIT
                         2.0
                             D

            ROVEN ;)                   YST
                                   ATAL


                              ING!
                                 C
                             JCR




                     APACHE SL


                          Restful Web Framework
                          Running on top of JCR
                          Never build a JCR WebApp without it. Seriously!
FrOScamp Zurich: Introducing JCR - 2010

Mais conteúdo relacionado

Mais procurados

Your code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnConYour code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnConRafael Dohms
 
Introduction to UML
Introduction to UMLIntroduction to UML
Introduction to UMLLou Franco
 
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonfRafael Dohms
 
Javabeanproperties
JavabeanpropertiesJavabeanproperties
Javabeanpropertiesvamsitricks
 
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...Rafael Dohms
 
MTDDC 2010.2.5 Tokyo - Brand new API
MTDDC 2010.2.5 Tokyo - Brand new APIMTDDC 2010.2.5 Tokyo - Brand new API
MTDDC 2010.2.5 Tokyo - Brand new APISix Apart KK
 
Your code sucks, let's fix it (CakeFest2012)
Your code sucks, let's fix it (CakeFest2012)Your code sucks, let's fix it (CakeFest2012)
Your code sucks, let's fix it (CakeFest2012)Rafael Dohms
 
Your code sucks, let's fix it - PHP Master Series 2012
Your code sucks, let's fix it - PHP Master Series 2012Your code sucks, let's fix it - PHP Master Series 2012
Your code sucks, let's fix it - PHP Master Series 2012Rafael Dohms
 
Your code sucks, let's fix it
Your code sucks, let's fix itYour code sucks, let's fix it
Your code sucks, let's fix itRafael Dohms
 
Introduction to DI(C)
Introduction to DI(C)Introduction to DI(C)
Introduction to DI(C)Radek Benkel
 
Improving RDF Search Performance with Lucene and SIREN
Improving RDF Search Performance with Lucene and SIRENImproving RDF Search Performance with Lucene and SIREN
Improving RDF Search Performance with Lucene and SIRENMike Hugo
 
Testing Rich Domain Models
Testing Rich Domain ModelsTesting Rich Domain Models
Testing Rich Domain ModelsChris Richardson
 
Battista Biggio @ ICML2012: "Poisoning attacks against support vector machines"
Battista Biggio @ ICML2012: "Poisoning attacks against support vector machines"Battista Biggio @ ICML2012: "Poisoning attacks against support vector machines"
Battista Biggio @ ICML2012: "Poisoning attacks against support vector machines"Pluribus One
 
Tame Accidental Complexity with Ruby and MongoMapper
Tame Accidental Complexity with Ruby and MongoMapperTame Accidental Complexity with Ruby and MongoMapper
Tame Accidental Complexity with Ruby and MongoMapperGiordano Scalzo
 

Mais procurados (18)

Your code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnConYour code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnCon
 
Introduction to UML
Introduction to UMLIntroduction to UML
Introduction to UML
 
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf
 
Javabeanproperties
JavabeanpropertiesJavabeanproperties
Javabeanproperties
 
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...
 
MTDDC 2010.2.5 Tokyo - Brand new API
MTDDC 2010.2.5 Tokyo - Brand new APIMTDDC 2010.2.5 Tokyo - Brand new API
MTDDC 2010.2.5 Tokyo - Brand new API
 
Your code sucks, let's fix it (CakeFest2012)
Your code sucks, let's fix it (CakeFest2012)Your code sucks, let's fix it (CakeFest2012)
Your code sucks, let's fix it (CakeFest2012)
 
Your code sucks, let's fix it - PHP Master Series 2012
Your code sucks, let's fix it - PHP Master Series 2012Your code sucks, let's fix it - PHP Master Series 2012
Your code sucks, let's fix it - PHP Master Series 2012
 
Your code sucks, let's fix it
Your code sucks, let's fix itYour code sucks, let's fix it
Your code sucks, let's fix it
 
Introduction to DI(C)
Introduction to DI(C)Introduction to DI(C)
Introduction to DI(C)
 
Improving RDF Search Performance with Lucene and SIREN
Improving RDF Search Performance with Lucene and SIRENImproving RDF Search Performance with Lucene and SIREN
Improving RDF Search Performance with Lucene and SIREN
 
Your Entity, Your Code
Your Entity, Your CodeYour Entity, Your Code
Your Entity, Your Code
 
Testing Rich Domain Models
Testing Rich Domain ModelsTesting Rich Domain Models
Testing Rich Domain Models
 
DOM and Events
DOM and EventsDOM and Events
DOM and Events
 
perl_objects
perl_objectsperl_objects
perl_objects
 
Introduction to Domain-Driven Design
Introduction to Domain-Driven DesignIntroduction to Domain-Driven Design
Introduction to Domain-Driven Design
 
Battista Biggio @ ICML2012: "Poisoning attacks against support vector machines"
Battista Biggio @ ICML2012: "Poisoning attacks against support vector machines"Battista Biggio @ ICML2012: "Poisoning attacks against support vector machines"
Battista Biggio @ ICML2012: "Poisoning attacks against support vector machines"
 
Tame Accidental Complexity with Ruby and MongoMapper
Tame Accidental Complexity with Ruby and MongoMapperTame Accidental Complexity with Ruby and MongoMapper
Tame Accidental Complexity with Ruby and MongoMapper
 

Semelhante a FrOScamp Zurich: Introducing JCR - 2010

Doc Parsers Api Cheatsheet 1 0
Doc Parsers Api Cheatsheet 1 0Doc Parsers Api Cheatsheet 1 0
Doc Parsers Api Cheatsheet 1 0Oleh Burkhay
 
Cloudera Sessions - Clinic 3 - Advanced Steps - Fast-track Development for ET...
Cloudera Sessions - Clinic 3 - Advanced Steps - Fast-track Development for ET...Cloudera Sessions - Clinic 3 - Advanced Steps - Fast-track Development for ET...
Cloudera Sessions - Clinic 3 - Advanced Steps - Fast-track Development for ET...Cloudera, Inc.
 
Overview of The Scala Based Lift Web Framework
Overview of The Scala Based Lift Web FrameworkOverview of The Scala Based Lift Web Framework
Overview of The Scala Based Lift Web FrameworkIndicThreads
 
Scala based Lift Framework
Scala based Lift FrameworkScala based Lift Framework
Scala based Lift Frameworkvhazrati
 
Viastudy ef core_cheat_sheet
Viastudy ef core_cheat_sheetViastudy ef core_cheat_sheet
Viastudy ef core_cheat_sheetimdurgesh
 
JavaScript 101
JavaScript 101JavaScript 101
JavaScript 101ygv2000
 
Singletons in PHP - Why they are bad and how you can eliminate them from your...
Singletons in PHP - Why they are bad and how you can eliminate them from your...Singletons in PHP - Why they are bad and how you can eliminate them from your...
Singletons in PHP - Why they are bad and how you can eliminate them from your...go_oh
 
Synthesizing API Usage Examples
Synthesizing API Usage Examples Synthesizing API Usage Examples
Synthesizing API Usage Examples Ray Buse
 
From C++ to Objective-C
From C++ to Objective-CFrom C++ to Objective-C
From C++ to Objective-Ccorehard_by
 
Art of Javascript
Art of JavascriptArt of Javascript
Art of JavascriptTarek Yehia
 
JavaScript APIs you’ve never heard of (and some you have)
JavaScript APIs you’ve never heard of (and some you have)JavaScript APIs you’ve never heard of (and some you have)
JavaScript APIs you’ve never heard of (and some you have)Nicholas Zakas
 
Metaprogramming in JavaScript
Metaprogramming in JavaScriptMetaprogramming in JavaScript
Metaprogramming in JavaScriptMehdi Valikhani
 
Spring framework part 2
Spring framework part 2Spring framework part 2
Spring framework part 2Haroon Idrees
 
Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!Oliver Gierke
 

Semelhante a FrOScamp Zurich: Introducing JCR - 2010 (20)

Bottom Up
Bottom UpBottom Up
Bottom Up
 
Doc Parsers Api Cheatsheet 1 0
Doc Parsers Api Cheatsheet 1 0Doc Parsers Api Cheatsheet 1 0
Doc Parsers Api Cheatsheet 1 0
 
Cloudera Sessions - Clinic 3 - Advanced Steps - Fast-track Development for ET...
Cloudera Sessions - Clinic 3 - Advanced Steps - Fast-track Development for ET...Cloudera Sessions - Clinic 3 - Advanced Steps - Fast-track Development for ET...
Cloudera Sessions - Clinic 3 - Advanced Steps - Fast-track Development for ET...
 
Overview Of Lift Framework
Overview Of Lift FrameworkOverview Of Lift Framework
Overview Of Lift Framework
 
Overview of The Scala Based Lift Web Framework
Overview of The Scala Based Lift Web FrameworkOverview of The Scala Based Lift Web Framework
Overview of The Scala Based Lift Web Framework
 
Scala based Lift Framework
Scala based Lift FrameworkScala based Lift Framework
Scala based Lift Framework
 
Viastudy ef core_cheat_sheet
Viastudy ef core_cheat_sheetViastudy ef core_cheat_sheet
Viastudy ef core_cheat_sheet
 
My Development Story
My Development StoryMy Development Story
My Development Story
 
JavaScript 101
JavaScript 101JavaScript 101
JavaScript 101
 
MetaCDN
MetaCDNMetaCDN
MetaCDN
 
Singletons in PHP - Why they are bad and how you can eliminate them from your...
Singletons in PHP - Why they are bad and how you can eliminate them from your...Singletons in PHP - Why they are bad and how you can eliminate them from your...
Singletons in PHP - Why they are bad and how you can eliminate them from your...
 
Synthesizing API Usage Examples
Synthesizing API Usage Examples Synthesizing API Usage Examples
Synthesizing API Usage Examples
 
From C++ to Objective-C
From C++ to Objective-CFrom C++ to Objective-C
From C++ to Objective-C
 
Art of Javascript
Art of JavascriptArt of Javascript
Art of Javascript
 
JavaScript APIs you’ve never heard of (and some you have)
JavaScript APIs you’ve never heard of (and some you have)JavaScript APIs you’ve never heard of (and some you have)
JavaScript APIs you’ve never heard of (and some you have)
 
Metaprogramming in JavaScript
Metaprogramming in JavaScriptMetaprogramming in JavaScript
Metaprogramming in JavaScript
 
Java and xml
Java and xmlJava and xml
Java and xml
 
Spring framework part 2
Spring framework part 2Spring framework part 2
Spring framework part 2
 
Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!
 
Vaadin7
Vaadin7Vaadin7
Vaadin7
 

Mais de David Nuescheler

AEM Hub - on the road with AEM
AEM Hub - on the road with AEMAEM Hub - on the road with AEM
AEM Hub - on the road with AEMDavid Nuescheler
 
Adobe Digital Government Assembly - Technologies that Drive Change.
Adobe Digital Government Assembly - Technologies that Drive Change.Adobe Digital Government Assembly - Technologies that Drive Change.
Adobe Digital Government Assembly - Technologies that Drive Change.David Nuescheler
 
evolve13: The Past, Present and Future of AEM
evolve13: The Past, Present and Future of AEMevolve13: The Past, Present and Future of AEM
evolve13: The Past, Present and Future of AEMDavid Nuescheler
 
Adobe MAX: The Future Enterprise Developer
Adobe MAX: The Future Enterprise DeveloperAdobe MAX: The Future Enterprise Developer
Adobe MAX: The Future Enterprise DeveloperDavid Nuescheler
 
Adobe MAX - WEM: 10 Whirlwind demos
Adobe MAX - WEM: 10 Whirlwind demosAdobe MAX - WEM: 10 Whirlwind demos
Adobe MAX - WEM: 10 Whirlwind demosDavid Nuescheler
 
NLJUG: Content Management, Standards, Opensource & JCP
NLJUG: Content Management, Standards, Opensource & JCPNLJUG: Content Management, Standards, Opensource & JCP
NLJUG: Content Management, Standards, Opensource & JCPDavid Nuescheler
 
Introducing CQ5.4: Sneak-Peek
Introducing CQ5.4: Sneak-Peek Introducing CQ5.4: Sneak-Peek
Introducing CQ5.4: Sneak-Peek David Nuescheler
 
FrOSCamp Zurich: Content Management Standards
FrOSCamp Zurich: Content Management StandardsFrOSCamp Zurich: Content Management Standards
FrOSCamp Zurich: Content Management StandardsDavid Nuescheler
 
Future of WCM - CM Forum Belgium
Future of WCM - CM Forum BelgiumFuture of WCM - CM Forum Belgium
Future of WCM - CM Forum BelgiumDavid Nuescheler
 
What's new in CQ 5.3? Top 10 features.
What's new in CQ 5.3? Top 10 features.What's new in CQ 5.3? Top 10 features.
What's new in CQ 5.3? Top 10 features.David Nuescheler
 
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5David Nuescheler
 
JBoye Presentation: WCM Trends for 2010
JBoye Presentation: WCM Trends for 2010JBoye Presentation: WCM Trends for 2010
JBoye Presentation: WCM Trends for 2010David Nuescheler
 

Mais de David Nuescheler (20)

AEM Hub - on the road with AEM
AEM Hub - on the road with AEMAEM Hub - on the road with AEM
AEM Hub - on the road with AEM
 
The New Marketer?
The New Marketer?The New Marketer?
The New Marketer?
 
Adobe Digital Government Assembly - Technologies that Drive Change.
Adobe Digital Government Assembly - Technologies that Drive Change.Adobe Digital Government Assembly - Technologies that Drive Change.
Adobe Digital Government Assembly - Technologies that Drive Change.
 
evolve13: The Past, Present and Future of AEM
evolve13: The Past, Present and Future of AEMevolve13: The Past, Present and Future of AEM
evolve13: The Past, Present and Future of AEM
 
Adobe MAX: The Future Enterprise Developer
Adobe MAX: The Future Enterprise DeveloperAdobe MAX: The Future Enterprise Developer
Adobe MAX: The Future Enterprise Developer
 
Adobe MAX - WEM: 10 Whirlwind demos
Adobe MAX - WEM: 10 Whirlwind demosAdobe MAX - WEM: 10 Whirlwind demos
Adobe MAX - WEM: 10 Whirlwind demos
 
The Future of ECM
The Future of ECMThe Future of ECM
The Future of ECM
 
NLJUG: Content Management, Standards, Opensource & JCP
NLJUG: Content Management, Standards, Opensource & JCPNLJUG: Content Management, Standards, Opensource & JCP
NLJUG: Content Management, Standards, Opensource & JCP
 
Introducing CQ5.4: Sneak-Peek
Introducing CQ5.4: Sneak-Peek Introducing CQ5.4: Sneak-Peek
Introducing CQ5.4: Sneak-Peek
 
JCP Heartbeat Monitor
JCP Heartbeat MonitorJCP Heartbeat Monitor
JCP Heartbeat Monitor
 
FrOSCamp Zurich: Content Management Standards
FrOSCamp Zurich: Content Management StandardsFrOSCamp Zurich: Content Management Standards
FrOSCamp Zurich: Content Management Standards
 
JSOP in 60 seconds
JSOP in 60 secondsJSOP in 60 seconds
JSOP in 60 seconds
 
Future of WCM - CM Forum Belgium
Future of WCM - CM Forum BelgiumFuture of WCM - CM Forum Belgium
Future of WCM - CM Forum Belgium
 
Agile Edge Valtech
Agile Edge ValtechAgile Edge Valtech
Agile Edge Valtech
 
What's new in CQ 5.3? Top 10 features.
What's new in CQ 5.3? Top 10 features.What's new in CQ 5.3? Top 10 features.
What's new in CQ 5.3? Top 10 features.
 
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5
 
JBoye Presentation: WCM Trends for 2010
JBoye Presentation: WCM Trends for 2010JBoye Presentation: WCM Trends for 2010
JBoye Presentation: WCM Trends for 2010
 
Introducing JSR-283
Introducing JSR-283Introducing JSR-283
Introducing JSR-283
 
What's new in JSR-283?
What's new in JSR-283?What's new in JSR-283?
What's new in JSR-283?
 
Top 8 WCM Trends 2010
Top 8 WCM Trends 2010Top 8 WCM Trends 2010
Top 8 WCM Trends 2010
 

FrOScamp Zurich: Introducing JCR - 2010

  • 2. Introductions David Nuescheler Chief Technology Officer david@day.com David Nuescheler JSR-170 Spec Lead jsr-170-comments@jcp.org David Nuescheler Jackrabbit Committer / Member uncled@apache.org David Nuescheler TC Member / CMIS-JCR Liaison david@day.com
  • 4. Introducing JCR 1.0 Beyond the Spec History, Adoption, Usage. Real-life use... 1 2 3 JCR 2.0 Evolution, What’s new?
  • 5. JCR. “The API should be a standard, implementation independent, way to access content bi- directionally on a granular level to a content repository.”
  • 6. A Content Repository!? CONTENT REPOSITORY FEATURES OF AN FEATURES OF A RDBMS FILESYSTEM Transactions, Query, Structure, Integrity Binaries, Hierarchy, Locking, Access Control + ALL THE OTHER GOOD STUFF YOU ALWAYS WANTED Data First, Versioning, Full-text, Multi-Value, Sort-Order, Observation
  • 7. When to use? permissions binaries search JCR read-most versions unstructured 7
  • 8. Reality Check! Task write a “JSP snippet” that lists all the documents in a folder by “title”. ...Code Snipp ets courtesy JSR- 70 Ex 1 of the early pert-Group :
  • 9. 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("Name"); Property title = child.get PropertyByName("Title"); 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 (idmFo lderCo Set er.get DualProxy( Conten ts Node child = children.nextNode();ldren.hasNext()) extPage(); Page child = children .n { int nu derCon Property title = child.getProperty("Title"); mDocs ntent. Container toplevel = for (i = fndo idmFol child.getContent(); nt i = cs.get tentDo Atom title = toplevel Count( .getAtom("Title"); 1; IFnDoc i <= numDocs ); umentD %><%=ntitle %><br /><% } %><%= title %><br /><% cume t )); ual fn ; i++) { new IF nD IFnPro ocumentDualP = pertie doc roxy(f } %> = %> tItem(new I IFnPro sD ndocs. pertyD ual propset ge Stri ng 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("Tit cuments = new IDocumentsProxy(bind cleane up) ; ocuments dole"); 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/ } %>
  • 10. Beyond the Spec RI & TCK The S 300 pec: Apache Jackrabbit: Pages more than a reference implementation y nolog ility Kit: T ch atib e Comp 0 T sts e +100 10
  • 11. 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
  • 12. Java Only? Question? “A Content Repository Standard, sure, but why Java ‘only’?”
  • 13. Why Java…  …because of its standardizing body: The JCP.  Good track record with respect to implementations and 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
  • 14. Introducing JCR Catalyst WEB apache JCR APP sling
  • 15. The Web and Content? REST -> Roy T. Fielding ly JCR: Yours tru d 2005 rele a v1.0 rele ase ages sed y 162 p 2k +300 p ages
  • 16. Industry Standards 170 283 16
  • 18. Known Compliant Repositories (* partially 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 Interwoven Saperion +hund reds o Repository IBM CM / Domino EMC Documentum Archive registe f TCKs red
  • 19. Some known JCR Applications Fast BEA Portal Sun Oracle WebCenter 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
  • 20. Introducing JCR 1.0 Beyond the Spec History, Adoption, Usage. Real-life use... 1 2 3 JCR 2.0 Evolution, What’s new?
  • 21. JSR-283: Some Specifics  Took about 4 years  Investment for Day ~30 man years of work to complete (Spec, TCK & RI)  Star Spec-Lead Award for process excellence  The OSS Reference Implementation “Apache Jackrabbit” Top Level Project
  • 22. Backwards Compatible. NEW 100% & IMP BACKWA ROVE D COMPAT RDS IBLE Binary Compatible JSR-170 (JCR v1.0) Applications do not require modification Mixed environment supported (1.0 & 2.0 Apps)
  • 23. Reorganized. NEW 100DEL & BINDING & IMP BACKWA ROVE D D % COMPAT RDS IMP ROVE & IBLE NEW MO Completely re-organized and clarified Specification Separate Content Repository model section Removed a lot of the Java Language specification
  • 24. Bundled. NEW 100DEL & BINDING & IMP BACKWA ROVE D D % COMPAT RDS IMP ROVE & IBLE NEW MO NEW & IMPROVED OSGI BUNDLE Shipped jcr-2.0.jar is an OSGI Bundle Ready to deploy in an OSGI Container
  • 26. Query extensions AQM JQOM NEW #1 QUER & IMP ROVE SQL 2.0 D Y Abstract Query Model Java Query Object Model (Java Binding) SQL Bindings
  • 27. Query extensions +JOIN NEW & IMP #1 QUER ROVE 2.0 D Revamped Result-Set to allow for multiple nodes Y New and Improved query capabilities
  • 28. Query extensions -XPATH *well, still available but deprecated * NEW & IMP Not enough support from the EG #1 QUER ROVE 2.0 D JQOM allows for many implementations Y Jackrabbit / CRX will support XPATH
  • 29. Access Control Management +ACL +POLICY NEW & IM PROVED #2 ACL 2.0 Allows to set ACL and Access Control Policies
  • 30. Retention Policy & Hold +RETENTION +LEGAL HOLD NEW & IMP ROVE #3 RM 2.0 D Support for interaction with RM systems Allows setting and introspection of Retention Policies and Holds
  • 31. Simple versioning +LINEAR VERSIONING 2.0 ED NEW & IMPROV #4 SIMPLE Simplified Versioning Model to allow VERSIONING for ease of adoption.
  • 32. Lifecycle Management +BPM Allows to express and introspect Lifecycle status NEW & IM and transitions. PROVED #5 LIFECYCLE 2.0
  • 33. Nodetype Registration +REGISTER NODETYPES NEW & IMP ROVE #6 NODE 2.0 D MANAGE TYPE MENT Standardized way of registering new and modify registered Nodetypes
  • 34. New property & nodetypes +mix:title +URL +mix:created +mix:lastModified +WEAK REFERENCE +mix:language +DECIMAL +mix:etag +nt:address NEW & IMPROVED #7 NEW PROPERTY & NODETYPES 2.0 Things we missed in JCR 1.0 applications
  • 35. Workspace Management +CREATE & REMOVE WS 2.0 PROVED NEW & IM #8 WORKSPACE Standardized way of create and remove MANAGEMENT workspaces
  • 36. Shareable nodes +GRAPH Multi-filing. Nodes can have multiple parents. 2.0 NEW & IMPROVED #9 SHAREABLE NODES
  • 37. Journalling Observation +DELTA SINCE? NEW & IMP what changed since I last checked? #10 JOU ROVE 2.0 D RNALLIN OBSERVA G TION
  • 38. Introducing JCR 1.0 Beyond the Spec History, Adoption, Usage. Real-life use... 1 2 3 JCR 2.0 Evolution, What’s new?
  • 39. Beyond the Spec. NEW & IMP APACHE ROVE NEW & PJACKRABBIT 2.0 D ROVEN ;) Robust Code base Fully JCR 2.0 Compliant ;) More tooling than ever Established eco-system
  • 40. Beyond the Spec. NEW & IMP APACHE ROVE NEW & PJACKRABBIT 2.0 D ROVEN ;) YST ATAL ING! C JCR APACHE SL Restful Web Framework Running on top of JCR Never build a JCR WebApp without it. Seriously!