SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
WebTuesday: µjax in 30 minutes.
                          apache sling
                                         (...?!)



Lars Trieloff .... “me” instead
Product Manager
Day Software




Technology Presentation                            1
David Nuescheler
                                                                                  JSR-170 Spec Lead
                                                                                  jsr-170-comments@jcp.org
      David Nuescheler Chief Technology Officer
      david.nuescheler@day.com




                                                  David Nuescheler
                                                  Jackrabbit Committer / Member
                                                  uncled@apache.org




Content-Centric Infrastructure                                                                               2
obpqof`qba

R   håçï=óçìê=eqji=C=g~î~ëÅêáéí
    e~îÉ=~=î~ÖìÉ=ÅçåÅÉéí=çÑ=~=
    “`çåíÉåí=oÉéçëáíçêóÒ=~åÇ=“obpqÒ
WebTuesday: Sling in 30
                   Web Development




What’s JCR (elevator pitch)
REST meets JCR meets Ajax        silve
                                       r



Building TSS as a Content App
WebTuesday: Sling in 30
                   Web Development




What’s JCR (elevator pitch)
REST meets JCR meets Ajax        silve
                                       r



Building TSS as a Content App
What’s JCR?
       gpoJNTM

`çåíÉåí=oÉéçëáíçêó=Ñçê=
g~î~qj=íÉÅÜåçäçÖó=^mf
péÉÅJiÉ~ÇW
a~ó=pçÑíï~êÉ
pí~íìëW=
cáå~ä=oÉäÉ~ëÉ=NTJàìåJOMMR


bñéÉêí=dêçìéW
What’s JCR?
       gpoJNTM   gpoJOUP

`çåíÉåí=oÉéçëáíçêó=Ñçê=
g~î~qj=íÉÅÜåçäçÖó=^mf=îOKM
péÉÅJiÉ~ÇW
a~ó=pçÑíï~êÉ
pí~íìëW=
mìÄäáÅ=oÉîáÉï=`äçëÉÇ=ëÉéJOMMT


bñéÉêí=dêçìéW
What’s JCR?
“The API should be a standard,
implementation independent, way to
access content bi-directionally on a
granular level to a
content repository.” ?
Best of both worlds.
                     data base                   file s ys t e m
                                                          hier-
         integ                                          archi
              rity
                            structu
                                   re                        es
                                          read                    streams


         tx                             write
                                                                     access
                          query                         locking     control



multi-
value
          un-structured                               obser-      versioning
                          “full-text”   sort          vation
                                        order

                                  content repo sit or y
JCR
       What’s Check - ?
         - Reality




Task: Write a JSP snippet that
lists “
      documents” in a “folder””
                              .
<%
   childCount = node.getConten
   for(int i=0;i<childCount;i
                                    tCount();
                                   ++) {
                                                 <%  JCR
                                         What’s Check - ?
                                                 LAPI_DOCUMEN
                                           - Reality
                                                                TS documents = new LA
                                                 LLValue childTable =
                                                                                         PI_DOCUMENTS(session
                                                                            new LLValue();
                                                                          s(volumeID, folderID
                                                                                                 ,
                                                                                                               );


                                                  documents.ListObject

                                                         JCR API
       IContent child = node.getCo                                                                 E, childTable);
       Property title = child.getP
                                        ntent(i);
                                                            null, null, LA   PI_DOCUMENTS.PERM_SE
                                        ropertyByName(quot;Titlequot;);                          .enumerateValues();
       %><%= title.getValue() %><b                Enumeration   children = childTable
                                        r/><%                              reElements()) {
  }                                               while(children.hasMo                  )e.nextElement();
  %> <%                      <%                             LLVa lue child = (LLValue
                                                                                          ring(quot;Namequot;);
     fndocs                                                 Stri ng <% tle = child.toSt
                                                                     ti
              = new
               fnfold
                     IFnObj  NodeIterator children = node.getNodes();
                            SetDua
                                                                    PageIterator%
                                                          %><%= title %><br/>< children = page.getPages();
    int nu                         lPr                              while (children.hasNex
                      er.get
                             while (children.hasNext()) {
                             Conten oxy(


                 Task: Write a JSP snippet that
           mDocs                                   }                                         t()) {
    for (i         = fndo           ts(idm                              Page child = children
           nt i =         cs.              Fo      %>                                           .nextPage();
                    1; i < getCount(); lderContent.
                               Node child = children.nextNode();        Container toplevel =
              IFnDoc       = numD                          idmFol                               child.getContent();
                     umentD       ocs; i                           derCon om title = to
                                                                        At e
             new IF
             IFnPro
                            ua
                               Property title = child.getProperty(quot;Titlequot;);
                     nDocum l fndoc =
                            entDua
                                         ++) {                            t ntDo
                                                                                 cume    plevel.getAtom(quot;Titlequot;
                                                                        %><%= title nt));r /><%
                                                                                      %><b
                                                                                                                  );



                 lists “
                       documents” in a “folder””
                                               .
                    pe             lPr
                               %><%= title %><br /><%
            IFnPro rtiesDual pr oxy(fndocs.g
                    pe               o               et
                                                                   }
                                                                   %>
            String rtyDual idmT pset = fndoc Item(new In
         %><%=       title
                 title
                             }       i              .               te
                            = idmT tleProp = pr getPropertie ger(i)));
                                   itlePr
                                          op.get opset.getIte s();
         if (co         %>
                 mClean <br/><%
                        up) {%>          <%     Value(
                                                        );        m(quot;Tit
                                                                         lequot;); entsProxy(binder.getDo
                                                                                                         cuments());
           cleane                                              s = new IDocum
        }          r.rele
                          ase(fn         IDocuments document
}                                doc); documents.cache();
                                                                                      ();
                                                                 documents.getCount
%>                                       in t documentCount =                         {
                                                                 cumentCount; i++)                   ItemByIndex(i));
                                         fo r (int i = 0; i<do            umentP roxy(documents.get
                                                   document = new IDoc
                                                                          ment.getTitle()
                                                   String title = docu
                                                                         ><%
                                                   %><%= title %><br/
                                          }
                                          %>
                                                                                                                   +800
What’s JCR?
         - Functional Elevator Pitch -



sql        locking     obser-    tx        versioning
                       vation




                                                        opt ion al
                     level 2      write, import,
                                    access
                                      control

 read, export,
                     level 1
    query
Java Standardization

JSR-283 Public Review Ballot




                               ro ved
                         app
Java Standardization
Known compliant Repositories
                                                               * using third party connector

                                                                       *                   *

                                          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
   Interwoven                                       +hund                      DBMou ne
                                                                              R do y
                                                         r s
   Repository          IBM CM        EMC Documentum    regiede of TCKs
                                                           st
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
JCR - Weatherforcast
2008
       -5°   2009
                    -8°   2010
                                 -12°
WebTuesday: Sling in 30
                   Web Development




What’s JCR (elevator pitch)
REST meets JCR meets Ajax        silve
                                       r



Building TSS as a Content App
WebTuesday: Sling in 30
                   Web Development




What’s JCR (elevator pitch)
REST meets JCR meets Ajax        silve
                                       r



Building TSS as a Content App
REST over JCR


               REST -> Roy T. Fielding


                                                       ly
                                         JCR: Yours tru
                                                                          2005
rele a                                                      1.0 r
                                                            v    ele ased
      sed y                                                     +300 pages
162 p 2k
       ages
The Problem:
           JCR
         longterm
     stable &durable
well designed duty
            heavy
 strategic                 16 t
                               ons



      functionally broad
The Problem:

                                                                                       JCR
                                                                                    longterm
                                                              the other side
                                                                               stable &durable
de
     ve
          lop
                er
                     ha
                          t




                                                                               well designed
                                  “i want to build webapps”




                                                                                   heavy duty
     me




                              lazy                                               strategic      16 t
                                                                                                    ons



                                 short-sighted                                  functionally broad
          h
...easily coack
            nfused
The Silver bullet:

                                                             JCR
 de
      ve
           lop
                 er
                      ha
                           t




           av id)
me (d
                                               silve
                                                     r




                                      sling

                               very simple pro
                                              jection:
                                 fits the bill
JCR b
         ac
  ReST- ked
(OSGI Webkit
     , OCM
                     Apache Sling
           , ...)

                       jsp
                     groovy
               ...      esp     contains

                     ruby
                     scala                             ormerly
                                                 r st f
                                              e antiwn as”:
                                           “th k o

                      sling.js & .jst               jax
I   browser & sling.js
     reading: json & resource GET’s
     writing: form-POST & GET
                         s      s
                                                               J2EE Web
                                                                Server
                                                      3
                                                          handles all the h
                                                                            eavy
                                                  2       lifting, particul
                                                                           arly
                                                              security
Browser                        I                                               16 t
                                                                                   ons




                          very simple js A
                                          PI to
                                                           2 Sling Servlets
                                                             translating requests
                         read content, Fo                       to JCR calls
                           to write contenrms
                                           t               3 JCR Compliant
                                                                Content Repository
It’s the web, baby!
        URLs matter  .

.../product.jsp?id=12346

      Mistake 1  :         Mistake 2:       Mistake 3:
Addressing the        .j
               “Script”sp? What the heck? Passing in “this”
Reclaiming the web.
                     Sling URL decomposition.
                   /cars/audi/s4.details.html

              Content               ...selects a
Repository epository Path
         R                       particular scrip
                                                 t
“Data First!”
        JCR s
   “stru        uppor
             cturef  ts
(but t   aswe irst”
       hat’s
             mi
                 ll.
           ssing
                   point
                        )
Getting ready...




download a
          nd install       test & mount as a drive
hello, world.


                                                                                            le>
                                                                                    rld</tit
                                                                            ello, wo
                                                     <h tml>        >sling:h
                                                              <title
                                                      <head>                       >
                                                               >            rld</h2
                                                       </head 2>hello, wo
                                                               <h
                                                        <body>
                                                                >
                                                         </body
                                                                 >
                                                          </html



     drag, drop, done
http://localhost:7402/
                      apps/firststeps/0_hell
                                            o.html
simple write example
                                                                                                            itle>
                                                                                                 exam ple</t
                                                                                       le write                     STquot;>
                                                            >
                                                     <html itle>sling          : simp                     method=quot;PO
                                                              <t                            first stepsquot;
                                                      <head> body>                   ntent/
                                                               ><                /co
                                                       </head rm action=quot; -->
                                                               fo            itle
                                                        
 <          <!-- t e</h2>                        equot; />
                                                              
               tl              name =quot;Titl
                                                        
                                                               
      <h2>Ti ype=quot;textquot;
                                                                                t              >
                                                         
                                                                
      <input cription --                        onquot;>
                                                         
               !-- des ption</h2> =quot;Descripti
                                                                 
 < >Descri                    name
                                                          
             <h2              ws=quot;5quot;
                                                                 
               rea ro
                                                           
                                                                  
      <texta rea>
                                                                                  a
                                                           
              </text or -->
                                                                                  ol
                                                                    
     <!-- c r</h2>
                                                                                   lo              quot;>
                                                             
                                                                    
      <h2>Co name=quot;Color edquot;>red
                                                                                    t              quot;r
                                                             
                                                                     
      <selec tion value= reenquot;>green
                                                                                    op              quot;g
                                                              
                                                                      
      
 < tion value=
                                                                                     op
                                                               
                                                                       
     
 < >
                                                                                      ct
                                                                
                                                                        
     </sele
                                                                
               >
                                                                 
      </form
                                                                          >
                                                                  </body

            write me!
                                                                           >
                                                                   </html

                            irststeps/1_write.html
http://localhost:7402/apps/f
simple read example

                                                                                                      itle>
                                                                                           exam ple</t
                                                                              simpl e read
                                                    <html> tle>sling:
                                                            <ti
                                                    <head>                                           ipt
                                                             >                           g.jsquot;></scr
                                                     </head                       m/slin                       squot;);
                                                      <body>          src=quot;/syste                   t/firststep lor+'quot;>';
                                                          <s cript                      nt(quot;/conten r:'+node.Co
                                                           <scr  ipt>      ng.ge tConte ground-colo
                                                                    de=Sli style=quot;back
                                                            var no '<div
                                                                     v=             ;
                                                             var di .write(div)
                                                                      nt
                                                              docume >
                                                                      pt
                                                              </scri cript>                 tle);
                                                                  h2 ><s           (node.Ti
                                                          
 < ument.write
                                                                   doc
                                                                           </h2>                      n);
                                                                </s cript> t>                   riptio
                                                                          rip            e.Desc
                                                             
     <p><sc t.write(nod
                                                                            n
                                                                     docume /p>
                                                                          t><
                                                                  </scrip
                                                                       /div>
                                                               
 <
                                                                        >
                                                                </body

             read me!
http://localhost:7402/apps
                          /firststeps/2_read.html
                                                                 </html
                                                                        >
add new entry

                                                                                                         le>
                                                                                             xample</tit
                                                                                 new entry e
                                                       >
                                                 <html itle>sling         : add                        es/*quot;
                                                           t                               steps /entri
                                                  <head>< ody>                 ntent /first
                                                  </h ead><b action=quot;/co
                                                          form
                                                   
 < od=quot;POSTquot; >
                                                         meth                                          />
                                                                           le</h 2>       ame=quot; Titlequot;
                                                                   h2>Tit pe=quot;textquot; n
                                                           
 < put ty                                                area>
                                                     
                                                            
     <in
                                                                                                          ionquot;></text
                                                     
                                                                               iption</h2> e=quot;Descript
                                                                     h2 >Descr ows=quot;5quot; nam
                                                       
     
 < xtarea r
                                                                      te
                                                       
      
 <
                                                                                 </h2>
                                                                       h2 >Color e=quot;Colorquot;> >red
                                                               
 < lect nam                  quot;redquot;
                                                         
             <se          n value= reenquot;>green
                                                          
     
                                                                        
    <optio value=quot;g
                                                                 
             option
                                                          
                                                                 
       
 < >
                                                                                ct
                                                           
             </sele                     ></p>
                                                            
     
                                                                                        pe=quot;submitquot;

               add new
http://localhost:7402/apps/firststeps/3_addnew.html
                                                             
                                                              
                                                                    
 <
                                                                    </form
                                                                           p><in
                                                                            >
                                                                                 put ty


                                                              
                                                                        >
                                                               </body
                                                                        >
                                                                </html
list entries
                                                                                                       le>
                                                                                           xampl e</tit
                                                                             t ent  ries e                                 2);
                                              <htm  l>         >slin  g: lis                                   s/entriesquot;,
                                                       <title                                           ststep
                                               <head>                                       conten
                                                                                                   t/fir
                                                [...]                                  nt(quot;/
                                                        t>                g.ge tConte
                                                 <scrip ntries=Slin
                                                     var e
                                                          pt>
                                                  </scri                                                                     or+'quot;>
                                                                                                                                   ');
                                                   <div>                                                                y.Col
                                                           t>                ries)
                                                                                     {
                                                                                                            olor: '+entr
                                                    <scrip ar a in ent es[a];                   ackgr ound-c ;
                                                       for (v entry=entri iv style=quot;b le+'</h3>')
                                                            var                 '<d             Tit
                                                     
             nt.  write( h2>'+entry. on);
                                                            docume .write('<             Descri
                                                                                               pti
                                                                    nt                y.
                                                             docume .write(entr
                                                                     nt
                                                              docume
                                                                                 ){
                                                                       ry.Image
                                                               if(ent
                                                         [...] }
                                                                                                                              ''quot;>
                                                                                     '</div
                                                                                            >');
                                                                                                    ist.h tmlquot;     tries/'+a+
                                                                         nt. write( a href=quot;4_l '/mydata/en
                                                                 docume .write('<                 ent(
                                                                          nt               veCont
                                                                  docume =”ujax.remo
                                                                            k
                                                                    onclic a>');

http://lo
          list entries
         calhost:7
                                                                     remove
                                                                            </

                  402/apps/
                                                           
 } >                         </a>
                           firststep
                                    s/4_list.                      t          mlquot;>add new
                                             html          </scrip 3_addnew.ht
                                                                  f=quot;
                                                            <a hre
                                                                 v>
templates
                                                                              %>
                                                     [. ..]       tNode.Title
                                                      <%=  curren
                                                       [...]
                                                               t>
                                                        <scrip .wizard();
                                                            Sling
                                                                pt>
                                                         </scri
                                                          [...]




                                                                                     w izard();
                                                                ! Rja              x.
                                                             !
                                                                 </script>
resource or                                                   !
http://l    iented urls
        ocalhost
                :7402/co
                        ntent/fi
                                rststeps
                                        .list.ht
                                                ml
WebTuesday: Sling in 30
                   Web Development




What’s JCR (elevator pitch)
REST meets JCR meets Ajax        silve
                                       r



Building TSS as a Content App
WebTuesday: Sling in 30
                   Web Development




What’s JCR (elevator pitch)
REST meets JCR meets Ajax        silve
                                       r



Building TSS as a Content App
Essentially:
     builds a
  Re- ” a
  SS++ t app.
“T ten
 con
TheServerSide.com as a content
         Application.
                 - goals -



                                                   »
»   Transform “TheServerSide.com” into
    a jax and JCR backed Content App.
                               TOtOitor &LS!
                            NO ll tex ed
                                  (we owser ;) )
                                     br
Buddy coding:


     eer for
    B
       Bug.
DEMO




Content-Centric Infrastructure
If you remember only 2 things.
I visit us: dev.day.com                   th & t
                                      boo cha
  register for JCR Cup 2008          fireside

2   Make your next Application a
    Content Application
Q&A




Content-Centric Infrastructure
Thank you for your
                                     attention




Content-Centric Infrastructure

Más contenido relacionado

La actualidad más candente

Embedding a language into string interpolator
Embedding a language into string interpolatorEmbedding a language into string interpolator
Embedding a language into string interpolatorMichael Limansky
 
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.
 
PHP Session - Mcq ppt
PHP Session - Mcq ppt PHP Session - Mcq ppt
PHP Session - Mcq ppt Shaheen Shaikh
 
“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
 
Ajaxonline Final 042408
Ajaxonline Final 042408Ajaxonline Final 042408
Ajaxonline Final 042408reynolds
 
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
 
Web programming in Haskell
Web programming in HaskellWeb programming in Haskell
Web programming in Haskellchriseidhof
 
Working Effectively With Legacy Tdiary Code Using Cucumber And Rspec
Working Effectively With Legacy Tdiary Code Using Cucumber And RspecWorking Effectively With Legacy Tdiary Code Using Cucumber And Rspec
Working Effectively With Legacy Tdiary Code Using Cucumber And RspecShintaro Kakutani
 
Design Patterns Reconsidered
Design Patterns ReconsideredDesign Patterns Reconsidered
Design Patterns ReconsideredAlex Miller
 
The Testing Games: Mocking, yay!
The Testing Games: Mocking, yay!The Testing Games: Mocking, yay!
The Testing Games: Mocking, yay!Donny Wals
 
“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
 
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
 
JCConf 2015 - 輕鬆學google的雲端開發 - Google App Engine入門(上)
JCConf 2015  - 輕鬆學google的雲端開發 - Google App Engine入門(上)JCConf 2015  - 輕鬆學google的雲端開發 - Google App Engine入門(上)
JCConf 2015 - 輕鬆學google的雲端開發 - Google App Engine入門(上)Simon Su
 
Software architecture2008 ejbql-quickref
Software architecture2008 ejbql-quickrefSoftware architecture2008 ejbql-quickref
Software architecture2008 ejbql-quickrefjaiverlh
 
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
 

La actualidad más candente (20)

Embedding a language into string interpolator
Embedding a language into string interpolatorEmbedding a language into string interpolator
Embedding a language into string interpolator
 
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...
 
Java and xml
Java and xmlJava and xml
Java and xml
 
PHP Session - Mcq ppt
PHP Session - Mcq ppt PHP Session - Mcq ppt
PHP Session - Mcq ppt
 
“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
 
Ajaxonline Final 042408
Ajaxonline Final 042408Ajaxonline Final 042408
Ajaxonline Final 042408
 
Vaadin 7
Vaadin 7Vaadin 7
Vaadin 7
 
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
 
Web programming in Haskell
Web programming in HaskellWeb programming in Haskell
Web programming in Haskell
 
tutorial5
tutorial5tutorial5
tutorial5
 
Working Effectively With Legacy Tdiary Code Using Cucumber And Rspec
Working Effectively With Legacy Tdiary Code Using Cucumber And RspecWorking Effectively With Legacy Tdiary Code Using Cucumber And Rspec
Working Effectively With Legacy Tdiary Code Using Cucumber And Rspec
 
Design Patterns Reconsidered
Design Patterns ReconsideredDesign Patterns Reconsidered
Design Patterns Reconsidered
 
Spock and Geb
Spock and GebSpock and Geb
Spock and Geb
 
The Testing Games: Mocking, yay!
The Testing Games: Mocking, yay!The Testing Games: Mocking, yay!
The Testing Games: Mocking, yay!
 
“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...
 
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...
 
Perl object ?
Perl object ?Perl object ?
Perl object ?
 
JCConf 2015 - 輕鬆學google的雲端開發 - Google App Engine入門(上)
JCConf 2015  - 輕鬆學google的雲端開發 - Google App Engine入門(上)JCConf 2015  - 輕鬆學google的雲端開發 - Google App Engine入門(上)
JCConf 2015 - 輕鬆學google的雲端開發 - Google App Engine入門(上)
 
Software architecture2008 ejbql-quickref
Software architecture2008 ejbql-quickrefSoftware architecture2008 ejbql-quickref
Software architecture2008 ejbql-quickref
 
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
 

Similar a Webtuesday Zurich

Spring framework part 2
Spring framework part 2Spring framework part 2
Spring framework part 2Haroon Idrees
 
Streaming using Kafka Flink & Elasticsearch
Streaming using Kafka Flink & ElasticsearchStreaming using Kafka Flink & Elasticsearch
Streaming using Kafka Flink & ElasticsearchKeira Zhou
 
NoSQL Endgame DevoxxUA Conference 2020
NoSQL Endgame DevoxxUA Conference 2020NoSQL Endgame DevoxxUA Conference 2020
NoSQL Endgame DevoxxUA Conference 2020Thodoris Bais
 
Java7 New Features and Code Examples
Java7 New Features and Code ExamplesJava7 New Features and Code Examples
Java7 New Features and Code ExamplesNaresh Chintalcheru
 
T-121-5300 (2008) User Interface Design 10 - UIML
T-121-5300 (2008) User Interface Design 10 - UIMLT-121-5300 (2008) User Interface Design 10 - UIML
T-121-5300 (2008) User Interface Design 10 - UIMLmniemi
 
Tomcat连接池配置方法V2.1
Tomcat连接池配置方法V2.1Tomcat连接池配置方法V2.1
Tomcat连接池配置方法V2.1Zianed Hou
 
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
 
Metaprogramming in JavaScript
Metaprogramming in JavaScriptMetaprogramming in JavaScript
Metaprogramming in JavaScriptMehdi Valikhani
 
Cutting Edge Data Processing with PHP & XQuery
Cutting Edge Data Processing with PHP & XQueryCutting Edge Data Processing with PHP & XQuery
Cutting Edge Data Processing with PHP & XQueryWilliam Candillon
 
JavaScript 101
JavaScript 101JavaScript 101
JavaScript 101ygv2000
 
Viastudy ef core_cheat_sheet
Viastudy ef core_cheat_sheetViastudy ef core_cheat_sheet
Viastudy ef core_cheat_sheetimdurgesh
 
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
 
Introduction to source{d} Engine and source{d} Lookout
Introduction to source{d} Engine and source{d} Lookout Introduction to source{d} Engine and source{d} Lookout
Introduction to source{d} Engine and source{d} Lookout source{d}
 
From mysql to MongoDB(MongoDB2011北京交流会)
From mysql to MongoDB(MongoDB2011北京交流会)From mysql to MongoDB(MongoDB2011北京交流会)
From mysql to MongoDB(MongoDB2011北京交流会)Night Sailer
 
Transforming Big Data with Spark and Shark - AWS Re:Invent 2012 BDT 305
Transforming Big Data with Spark and Shark - AWS Re:Invent 2012 BDT 305Transforming Big Data with Spark and Shark - AWS Re:Invent 2012 BDT 305
Transforming Big Data with Spark and Shark - AWS Re:Invent 2012 BDT 305mjfrankli
 

Similar a Webtuesday Zurich (20)

Bottom Up
Bottom UpBottom Up
Bottom Up
 
Spring framework part 2
Spring framework part 2Spring framework part 2
Spring framework part 2
 
Streaming using Kafka Flink & Elasticsearch
Streaming using Kafka Flink & ElasticsearchStreaming using Kafka Flink & Elasticsearch
Streaming using Kafka Flink & Elasticsearch
 
NoSQL Endgame DevoxxUA Conference 2020
NoSQL Endgame DevoxxUA Conference 2020NoSQL Endgame DevoxxUA Conference 2020
NoSQL Endgame DevoxxUA Conference 2020
 
Java7 New Features and Code Examples
Java7 New Features and Code ExamplesJava7 New Features and Code Examples
Java7 New Features and Code Examples
 
T-121-5300 (2008) User Interface Design 10 - UIML
T-121-5300 (2008) User Interface Design 10 - UIMLT-121-5300 (2008) User Interface Design 10 - UIML
T-121-5300 (2008) User Interface Design 10 - UIML
 
Tomcat连接池配置方法V2.1
Tomcat连接池配置方法V2.1Tomcat连接池配置方法V2.1
Tomcat连接池配置方法V2.1
 
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
 
Metaprogramming in JavaScript
Metaprogramming in JavaScriptMetaprogramming in JavaScript
Metaprogramming in JavaScript
 
Cutting Edge Data Processing with PHP & XQuery
Cutting Edge Data Processing with PHP & XQueryCutting Edge Data Processing with PHP & XQuery
Cutting Edge Data Processing with PHP & XQuery
 
JavaScript 101
JavaScript 101JavaScript 101
JavaScript 101
 
Spl Not A Bridge Too Far phpNW09
Spl Not A Bridge Too Far phpNW09Spl Not A Bridge Too Far phpNW09
Spl Not A Bridge Too Far phpNW09
 
Viastudy ef core_cheat_sheet
Viastudy ef core_cheat_sheetViastudy ef core_cheat_sheet
Viastudy ef core_cheat_sheet
 
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!
 
Introduction to source{d} Engine and source{d} Lookout
Introduction to source{d} Engine and source{d} Lookout Introduction to source{d} Engine and source{d} Lookout
Introduction to source{d} Engine and source{d} Lookout
 
Not your Grandma's XQuery
Not your Grandma's XQueryNot your Grandma's XQuery
Not your Grandma's XQuery
 
From mysql to MongoDB(MongoDB2011北京交流会)
From mysql to MongoDB(MongoDB2011北京交流会)From mysql to MongoDB(MongoDB2011北京交流会)
From mysql to MongoDB(MongoDB2011北京交流会)
 
Transforming Big Data with Spark and Shark - AWS Re:Invent 2012 BDT 305
Transforming Big Data with Spark and Shark - AWS Re:Invent 2012 BDT 305Transforming Big Data with Spark and Shark - AWS Re:Invent 2012 BDT 305
Transforming Big Data with Spark and Shark - AWS Re:Invent 2012 BDT 305
 

Más 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
 

Más 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
 

Último

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Último (20)

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

Webtuesday Zurich

  • 1. WebTuesday: µjax in 30 minutes. apache sling (...?!) Lars Trieloff .... “me” instead Product Manager Day Software Technology Presentation 1
  • 2. David Nuescheler JSR-170 Spec Lead jsr-170-comments@jcp.org David Nuescheler Chief Technology Officer david.nuescheler@day.com David Nuescheler Jackrabbit Committer / Member uncled@apache.org Content-Centric Infrastructure 2
  • 3. obpqof`qba R håçï=óçìê=eqji=C=g~î~ëÅêáéí e~îÉ=~=î~ÖìÉ=ÅçåÅÉéí=çÑ=~= “`çåíÉåí=oÉéçëáíçêóÒ=~åÇ=“obpqÒ
  • 4. WebTuesday: Sling in 30 Web Development What’s JCR (elevator pitch) REST meets JCR meets Ajax silve r Building TSS as a Content App
  • 5. WebTuesday: Sling in 30 Web Development What’s JCR (elevator pitch) REST meets JCR meets Ajax silve r Building TSS as a Content App
  • 6. What’s JCR? gpoJNTM `çåíÉåí=oÉéçëáíçêó=Ñçê= g~î~qj=íÉÅÜåçäçÖó=^mf péÉÅJiÉ~ÇW a~ó=pçÑíï~êÉ pí~íìëW= cáå~ä=oÉäÉ~ëÉ=NTJàìåJOMMR bñéÉêí=dêçìéW
  • 7. What’s JCR? gpoJNTM gpoJOUP `çåíÉåí=oÉéçëáíçêó=Ñçê= g~î~qj=íÉÅÜåçäçÖó=^mf=îOKM péÉÅJiÉ~ÇW a~ó=pçÑíï~êÉ pí~íìëW= mìÄäáÅ=oÉîáÉï=`äçëÉÇ=ëÉéJOMMT bñéÉêí=dêçìéW
  • 8. What’s JCR? “The API should be a standard, implementation independent, way to access content bi-directionally on a granular level to a content repository.” ?
  • 9. Best of both worlds. data base file s ys t e m hier- integ archi rity structu re es read streams tx write access query locking control multi- value un-structured obser- versioning “full-text” sort vation order content repo sit or y
  • 10. JCR What’s Check - ? - Reality Task: Write a JSP snippet that lists “ documents” in a “folder”” .
  • 11. <% childCount = node.getConten for(int i=0;i<childCount;i tCount(); ++) { <% JCR What’s Check - ? LAPI_DOCUMEN - Reality TS documents = new LA LLValue childTable = PI_DOCUMENTS(session new LLValue(); s(volumeID, folderID , ); documents.ListObject JCR API IContent child = node.getCo E, childTable); Property title = child.getP ntent(i); null, null, LA PI_DOCUMENTS.PERM_SE ropertyByName(quot;Titlequot;); .enumerateValues(); %><%= title.getValue() %><b Enumeration children = childTable r/><% reElements()) { } while(children.hasMo )e.nextElement(); %> <% <% LLVa lue child = (LLValue ring(quot;Namequot;); fndocs Stri ng <% tle = child.toSt ti = new fnfold IFnObj NodeIterator children = node.getNodes(); SetDua PageIterator% %><%= title %><br/>< children = page.getPages(); int nu lPr while (children.hasNex er.get while (children.hasNext()) { Conten oxy( Task: Write a JSP snippet that mDocs } t()) { for (i = fndo ts(idm Page child = children nt i = cs. Fo %> .nextPage(); 1; i < getCount(); lderContent. Node child = children.nextNode(); Container toplevel = IFnDoc = numD idmFol child.getContent(); umentD ocs; i derCon om title = to At e new IF IFnPro ua Property title = child.getProperty(quot;Titlequot;); nDocum l fndoc = entDua ++) { t ntDo cume plevel.getAtom(quot;Titlequot; %><%= title nt));r /><% %><b ); lists “ documents” in a “folder”” . pe lPr %><%= title %><br /><% IFnPro rtiesDual pr oxy(fndocs.g pe o et } %> String rtyDual idmT pset = fndoc Item(new In %><%= title title } i . te = idmT tleProp = pr getPropertie ger(i))); itlePr op.get opset.getIte s(); if (co %> mClean <br/><% up) {%> <% Value( ); m(quot;Tit lequot;); entsProxy(binder.getDo cuments()); cleane s = new IDocum } r.rele ase(fn IDocuments document } doc); documents.cache(); (); documents.getCount %> in t documentCount = { cumentCount; i++) ItemByIndex(i)); fo r (int i = 0; i<do umentP roxy(documents.get document = new IDoc ment.getTitle() String title = docu ><% %><%= title %><br/ } %> +800
  • 12. What’s JCR? - Functional Elevator Pitch - sql locking obser- tx versioning vation opt ion al level 2 write, import, access control read, export, level 1 query
  • 13. Java Standardization JSR-283 Public Review Ballot ro ved app
  • 15. Known compliant Repositories * using third party connector * * 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 Interwoven +hund DBMou ne R do y r s Repository IBM CM EMC Documentum regiede of TCKs st
  • 16. 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
  • 17. JCR - Weatherforcast 2008 -5° 2009 -8° 2010 -12°
  • 18. WebTuesday: Sling in 30 Web Development What’s JCR (elevator pitch) REST meets JCR meets Ajax silve r Building TSS as a Content App
  • 19. WebTuesday: Sling in 30 Web Development What’s JCR (elevator pitch) REST meets JCR meets Ajax silve r Building TSS as a Content App
  • 20. REST over JCR REST -> Roy T. Fielding ly JCR: Yours tru 2005 rele a 1.0 r v ele ased sed y +300 pages 162 p 2k ages
  • 21. The Problem: JCR longterm stable &durable well designed duty heavy strategic 16 t ons functionally broad
  • 22. The Problem: JCR longterm the other side stable &durable de ve lop er ha t well designed “i want to build webapps” heavy duty me lazy strategic 16 t ons short-sighted functionally broad h ...easily coack nfused
  • 23. The Silver bullet: JCR de ve lop er ha t av id) me (d silve r sling very simple pro jection: fits the bill
  • 24. JCR b ac ReST- ked (OSGI Webkit , OCM Apache Sling , ...) jsp groovy ... esp contains ruby scala ormerly r st f e antiwn as”: “th k o sling.js & .jst jax
  • 25. I browser & sling.js reading: json & resource GET’s writing: form-POST & GET s s J2EE Web Server 3 handles all the h eavy 2 lifting, particul arly security Browser I 16 t ons very simple js A PI to 2 Sling Servlets translating requests read content, Fo to JCR calls to write contenrms t 3 JCR Compliant Content Repository
  • 26. It’s the web, baby! URLs matter . .../product.jsp?id=12346 Mistake 1 : Mistake 2: Mistake 3: Addressing the .j “Script”sp? What the heck? Passing in “this”
  • 27. Reclaiming the web. Sling URL decomposition. /cars/audi/s4.details.html Content ...selects a Repository epository Path R particular scrip t
  • 28. “Data First!” JCR s “stru uppor cturef ts (but t aswe irst” hat’s mi ll. ssing point )
  • 29. Getting ready... download a nd install test & mount as a drive
  • 30. hello, world. le> rld</tit ello, wo <h tml> >sling:h <title <head> > > rld</h2 </head 2>hello, wo <h <body> > </body > </html drag, drop, done http://localhost:7402/ apps/firststeps/0_hell o.html
  • 31. simple write example itle> exam ple</t le write STquot;> > <html itle>sling : simp method=quot;PO <t first stepsquot; <head> body> ntent/ >< /co </head rm action=quot; --> fo itle < <!-- t e</h2> equot; /> tl name =quot;Titl <h2>Ti ype=quot;textquot; t > <input cription -- onquot;> !-- des ption</h2> =quot;Descripti < >Descri name <h2 ws=quot;5quot; rea ro <texta rea> a </text or --> ol <!-- c r</h2> lo quot;> <h2>Co name=quot;Color edquot;>red t quot;r <selec tion value= reenquot;>green op quot;g < tion value= op < > ct </sele > </form > </body write me! > </html irststeps/1_write.html http://localhost:7402/apps/f
  • 32. simple read example itle> exam ple</t simpl e read <html> tle>sling: <ti <head> ipt > g.jsquot;></scr </head m/slin squot;); <body> src=quot;/syste t/firststep lor+'quot;>'; <s cript nt(quot;/conten r:'+node.Co <scr ipt> ng.ge tConte ground-colo de=Sli style=quot;back var no '<div v= ; var di .write(div) nt docume > pt </scri cript> tle); h2 ><s (node.Ti < ument.write doc </h2> n); </s cript> t> riptio rip e.Desc <p><sc t.write(nod n docume /p> t>< </scrip /div> < > </body read me! http://localhost:7402/apps /firststeps/2_read.html </html >
  • 33. add new entry le> xample</tit new entry e > <html itle>sling : add es/*quot; t steps /entri <head>< ody> ntent /first </h ead><b action=quot;/co form < od=quot;POSTquot; > meth /> le</h 2> ame=quot; Titlequot; h2>Tit pe=quot;textquot; n < put ty area> <in ionquot;></text iption</h2> e=quot;Descript h2 >Descr ows=quot;5quot; nam < xtarea r te < </h2> h2 >Color e=quot;Colorquot;> >red < lect nam quot;redquot; <se n value= reenquot;>green <optio value=quot;g option < > ct </sele ></p> pe=quot;submitquot; add new http://localhost:7402/apps/firststeps/3_addnew.html < </form p><in > put ty > </body > </html
  • 34. list entries le> xampl e</tit t ent ries e 2); <htm l> >slin g: lis s/entriesquot;, <title ststep <head> conten t/fir [...] nt(quot;/ t> g.ge tConte <scrip ntries=Slin var e pt> </scri or+'quot;> '); <div> y.Col t> ries) { olor: '+entr <scrip ar a in ent es[a]; ackgr ound-c ; for (v entry=entri iv style=quot;b le+'</h3>') var '<d Tit nt. write( h2>'+entry. on); docume .write('< Descri pti nt y. docume .write(entr nt docume ){ ry.Image if(ent [...] } ''quot;> '</div >'); ist.h tmlquot; tries/'+a+ nt. write( a href=quot;4_l '/mydata/en docume .write('< ent( nt veCont docume =”ujax.remo k onclic a>'); http://lo list entries calhost:7 remove </ 402/apps/ } > </a> firststep s/4_list. t mlquot;>add new html </scrip 3_addnew.ht f=quot; <a hre v>
  • 35. templates %> [. ..] tNode.Title <%= curren [...] t> <scrip .wizard(); Sling pt> </scri [...] w izard(); ! Rja x. ! </script> resource or ! http://l iented urls ocalhost :7402/co ntent/fi rststeps .list.ht ml
  • 36. WebTuesday: Sling in 30 Web Development What’s JCR (elevator pitch) REST meets JCR meets Ajax silve r Building TSS as a Content App
  • 37. WebTuesday: Sling in 30 Web Development What’s JCR (elevator pitch) REST meets JCR meets Ajax silve r Building TSS as a Content App
  • 38. Essentially: builds a Re- ” a SS++ t app. “T ten con
  • 39. TheServerSide.com as a content Application. - goals - » » Transform “TheServerSide.com” into a jax and JCR backed Content App. TOtOitor &LS! NO ll tex ed (we owser ;) ) br
  • 40. Buddy coding: eer for B Bug.
  • 42. If you remember only 2 things. I visit us: dev.day.com th & t boo cha register for JCR Cup 2008 fireside 2 Make your next Application a Content Application
  • 44. Thank you for your attention Content-Centric Infrastructure