Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License




   JBoss Seam,
   un framework per
   Java EE 5


Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
About Marcello
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

   Ingegnere Informatico, appassionato di Java, open
   source, metodologie e programmazione in generale,
   lavora dal 1997 nello sviluppo software,
   principalmente in ambito applicazioni distribuite, web
   e mobile internet.

   Dal 2004 collabora all'organizzazione delle attività del
   Java User Group Milano.

   Partecipa alla community open source principalmente
   contribuendo con localizzazioni in italiano di
   applicazioni esistenti e traduzioni di documentazione
   tecnica.
Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
About JUG Milano
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

    ●   nasce il 18 Dicembre 2002 per iniziativa di
        Filippo Diotalevi
    ●   mailing list su Yahoo! Groups con più di 200
        iscritti
    ●   meeting mensili con presentazioni a cura degli
        iscritti
    ●   organizziamo e partecipiamo ad eventi speciali
    ●   partecipazione del tutto libera e gratuita
    ●   il nostro sito web: http://www.jugmilano.it/
    ●   facciamo parte della Top 50 dei JUG mondiali!
Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Yet another framework?
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License


    Un nuovo framework basato su Java EE 5:
    ●   Annotations
    ●   EJB3
    ●   Java Server Faces

         Seam è il primo framework proposto da JBoss!




Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Enterprise JavaBean (EJB) 3
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

    ●   Java Persistence Architecture
         –   Hibernate in JBoss
    ●   Interceptor (AOP)
    ●   Annotations
         –   lookup JNDI
         –   POJO
         –   lifecycle
         –   default per XML

Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Java Server Faces (JSF)
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

    ●   UI web component
    ●   navigation handler
    ●   expression language
    ●   managed bean
         –   model
         –   gestione eventi




Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Il modello pre-Java EE 5
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

    ●   domain model
    ●   DAO (integration logic)
    ●   service (business logic)
    ●   webapp
    ●   design patterns
         –   DTO
         –   business delegate
         –   MVC
Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Un modello ideale
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License




Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Componenti Seam
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

    ●   JSF Managed Bean che siano anche EJB
    ●   legati ad un contesto
         –   @Name
         –   @Scope
    ●   proposta di standardizzazione:
          JSR 299 - Web Beans
    ma...
         non annullano la separazione fra i layer?

Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Contesti Seam
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

    ●   i context classici delle Servlet API
         –   request (aka event per Seam)
         –   page
         –   session
         –   application
    ●   due nuovi context “applicativi”
         –   conversation
         –   business process

Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Bijection?
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

    ●   @In
        Dependency Injection applicabile a tutti i
        componenti Seam e non alle sole risorse
        gestite da Java EE 5
    ●   @Out
        pubblicazione di una variabile in un
        componente Seam su uno specifco
        contesto


Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Architettura di Seam
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License




Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
The Java EE 5 way
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License


    Generazione applicazione CRUD da
     database in Netbeans 5.5...




Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
The Seam way
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License


    Generazione applicazione CRUD da Entity
     Bean con Seam via Ant...




Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Seam & jBPM
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

    ●   Page Flow
         –   contesto conversation
         –   defnizione navigazione in jPDL
    ●   Business Process Management
         –   uso di Hibernate (non EJB3) per persistenza
    ●   editor visuale jPDL in JBoss IDE
    ●   integrazione componenti Seam via EL
    ●   jPDL non è uno standard
Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Seam & Facelets
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

    ●   JSP and JSF don't play well
    ●   defnisco il component tree in XHTML
    ●   integrato nel prossimo rilascio delle
        specifche JSF?
    ●   page layout
         –   analogo a Tiles/SiteMesh
    ●   page theme
    ●   progetto “vicino” a JBoss...
Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Seam Remoting
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

    ●   libreria JavaScript per
         –   richiamare componenti Seam
         –   ricevere eventi JMS (tramite polling)
    ●   annotation @WebRemote
    ●   modalità debug
         ...utilizzando XHR posso applicare tecniche
            AJAX alle mie pagine, ma manca un
            supporto a livello di componenti UI JSF...


Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Seam Logging
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

    ●   basato su Commons Logging
    ●   @Logger
    ●   aggiunge alle funzioni di log abituali:
         –   supporto varargs (a la printf)
         –   expression language


         nulla di clamoroso ma davvero utile...



Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Altre funzionalità in Seam
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

    ●   ServletFIlter per “redirect after post”
    ●   Form Validation basata su Annotations
        JPA/Hibernate
    ●   supporto URL in stile REST, adatte ad
        essere salvate come bookmark
    ●   supporto per Drools (aka JBoss Rules)
    ●   supporto testing con TestNG


Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Seam vs. Spring
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

    ●   integrazione con altre librerie OSS
    ●   override Annotation
         –   components.xml
         –   seam.properties
    ●   dependency injection vs. bijection
    ●   Seam Templates (prossimamente...)



Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Seam: what's next
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

    ●   versione 1.1 in CR
    ●   supporto toolkit AJAX OSS per JSF
         –   Ajax4JSF
         –   IceFaces
    ●   Seam POJO
         –   posso evitare completamente EJB3




Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Conclusioni
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

    ●   EoD (Ease of Development)
    ●   full-stack framework
    ●   non è JBoss-only, anche se...
         –   può convenire avere un riferimento unico
    ●   duplicazione funzionalità in Java EE 5 non
        ancora presenti in JBoss AS
    ●   rischio di eliminare troppi layer
    ●   sindrome NIH per ciò che non è di JBoss
Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Riferimenti
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

    ●   JBoss Seam
        http://www.jboss.org/products/seam

    ●   Spring vs. EJB3
        http://www.onjava.com/pub/a/onjava/2005/06/29/spring-ejb3.html

    ●   Seam in RedHat 108
        https://rhstack.108.redhat.com/articles/2006/09/18/jboss-seam-the-
        next-generation-web-framework.html

    ●   The Java EE 5 Tutorial
        http://java.sun.com/javaee/5/docs/tutorial/doc/index.html




Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006
Q&A
                           Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License




                           Grazie per l'attenzione.




Marcello Teodori marcello.teodori@jugmilano.it JUG Milano
Javaday Roma - 02/12/2006

JBoss Seam, un framework per Java EE 5

  • 1.
    Creative Commons Attribution-NonCommercial-ShareAlike2.5 License JBoss Seam, un framework per Java EE 5 Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 2.
    About Marcello Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Ingegnere Informatico, appassionato di Java, open source, metodologie e programmazione in generale, lavora dal 1997 nello sviluppo software, principalmente in ambito applicazioni distribuite, web e mobile internet. Dal 2004 collabora all'organizzazione delle attività del Java User Group Milano. Partecipa alla community open source principalmente contribuendo con localizzazioni in italiano di applicazioni esistenti e traduzioni di documentazione tecnica. Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 3.
    About JUG Milano Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License ● nasce il 18 Dicembre 2002 per iniziativa di Filippo Diotalevi ● mailing list su Yahoo! Groups con più di 200 iscritti ● meeting mensili con presentazioni a cura degli iscritti ● organizziamo e partecipiamo ad eventi speciali ● partecipazione del tutto libera e gratuita ● il nostro sito web: http://www.jugmilano.it/ ● facciamo parte della Top 50 dei JUG mondiali! Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 4.
    Yet another framework? Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Un nuovo framework basato su Java EE 5: ● Annotations ● EJB3 ● Java Server Faces Seam è il primo framework proposto da JBoss! Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 5.
    Enterprise JavaBean (EJB)3 Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License ● Java Persistence Architecture – Hibernate in JBoss ● Interceptor (AOP) ● Annotations – lookup JNDI – POJO – lifecycle – default per XML Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 6.
    Java Server Faces(JSF) Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License ● UI web component ● navigation handler ● expression language ● managed bean – model – gestione eventi Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 7.
    Il modello pre-JavaEE 5 Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License ● domain model ● DAO (integration logic) ● service (business logic) ● webapp ● design patterns – DTO – business delegate – MVC Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 8.
    Un modello ideale Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 9.
    Componenti Seam Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License ● JSF Managed Bean che siano anche EJB ● legati ad un contesto – @Name – @Scope ● proposta di standardizzazione: JSR 299 - Web Beans ma... non annullano la separazione fra i layer? Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 10.
    Contesti Seam Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License ● i context classici delle Servlet API – request (aka event per Seam) – page – session – application ● due nuovi context “applicativi” – conversation – business process Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 11.
    Bijection? Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License ● @In Dependency Injection applicabile a tutti i componenti Seam e non alle sole risorse gestite da Java EE 5 ● @Out pubblicazione di una variabile in un componente Seam su uno specifco contesto Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 12.
    Architettura di Seam Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 13.
    The Java EE5 way Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Generazione applicazione CRUD da database in Netbeans 5.5... Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 14.
    The Seam way Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Generazione applicazione CRUD da Entity Bean con Seam via Ant... Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 15.
    Seam & jBPM Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License ● Page Flow – contesto conversation – defnizione navigazione in jPDL ● Business Process Management – uso di Hibernate (non EJB3) per persistenza ● editor visuale jPDL in JBoss IDE ● integrazione componenti Seam via EL ● jPDL non è uno standard Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 16.
    Seam & Facelets Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License ● JSP and JSF don't play well ● defnisco il component tree in XHTML ● integrato nel prossimo rilascio delle specifche JSF? ● page layout – analogo a Tiles/SiteMesh ● page theme ● progetto “vicino” a JBoss... Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 17.
    Seam Remoting Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License ● libreria JavaScript per – richiamare componenti Seam – ricevere eventi JMS (tramite polling) ● annotation @WebRemote ● modalità debug ...utilizzando XHR posso applicare tecniche AJAX alle mie pagine, ma manca un supporto a livello di componenti UI JSF... Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 18.
    Seam Logging Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License ● basato su Commons Logging ● @Logger ● aggiunge alle funzioni di log abituali: – supporto varargs (a la printf) – expression language nulla di clamoroso ma davvero utile... Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 19.
    Altre funzionalità inSeam Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License ● ServletFIlter per “redirect after post” ● Form Validation basata su Annotations JPA/Hibernate ● supporto URL in stile REST, adatte ad essere salvate come bookmark ● supporto per Drools (aka JBoss Rules) ● supporto testing con TestNG Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 20.
    Seam vs. Spring Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License ● integrazione con altre librerie OSS ● override Annotation – components.xml – seam.properties ● dependency injection vs. bijection ● Seam Templates (prossimamente...) Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 21.
    Seam: what's next Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License ● versione 1.1 in CR ● supporto toolkit AJAX OSS per JSF – Ajax4JSF – IceFaces ● Seam POJO – posso evitare completamente EJB3 Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 22.
    Conclusioni Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License ● EoD (Ease of Development) ● full-stack framework ● non è JBoss-only, anche se... – può convenire avere un riferimento unico ● duplicazione funzionalità in Java EE 5 non ancora presenti in JBoss AS ● rischio di eliminare troppi layer ● sindrome NIH per ciò che non è di JBoss Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 23.
    Riferimenti Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License ● JBoss Seam http://www.jboss.org/products/seam ● Spring vs. EJB3 http://www.onjava.com/pub/a/onjava/2005/06/29/spring-ejb3.html ● Seam in RedHat 108 https://rhstack.108.redhat.com/articles/2006/09/18/jboss-seam-the- next-generation-web-framework.html ● The Java EE 5 Tutorial http://java.sun.com/javaee/5/docs/tutorial/doc/index.html Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006
  • 24.
    Q&A Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Grazie per l'attenzione. Marcello Teodori marcello.teodori@jugmilano.it JUG Milano Javaday Roma - 02/12/2006