SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

MEAN: il nuovo stack di sviluppo per il futuro del web
MEAN: il nuovo stack di sviluppo per il futuro del webMEAN: il nuovo stack di sviluppo per il futuro del web
MEAN: il nuovo stack di sviluppo per il futuro del webEugenio Minardi
 
Ionic Cordova vs React Native
Ionic Cordova vs React NativeIonic Cordova vs React Native
Ionic Cordova vs React NativeAntonio Gallo
 
Acadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code OverviewAcadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code OverviewFrancesco Sciuti
 
Pietro Brambati: PHP e la piattaforma Microsoft
Pietro Brambati: PHP e la piattaforma MicrosoftPietro Brambati: PHP e la piattaforma Microsoft
Pietro Brambati: PHP e la piattaforma MicrosoftFrancesco Fullone
 
Java Spring Basics - Donato Andrisani - Gabriele Manfredi
Java Spring Basics - Donato Andrisani - Gabriele ManfrediJava Spring Basics - Donato Andrisani - Gabriele Manfredi
Java Spring Basics - Donato Andrisani - Gabriele ManfrediGabriele Manfredi
 
phpDay 2008 - Joomla! 1.5 - Soluzione opensource per il vostro business
phpDay 2008 - Joomla! 1.5 - Soluzione opensource per il vostro businessphpDay 2008 - Joomla! 1.5 - Soluzione opensource per il vostro business
phpDay 2008 - Joomla! 1.5 - Soluzione opensource per il vostro businessLuca Scarpa
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLSinergia Totale
 
Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS Eugenio Minardi
 

Mais procurados (10)

MEAN: il nuovo stack di sviluppo per il futuro del web
MEAN: il nuovo stack di sviluppo per il futuro del webMEAN: il nuovo stack di sviluppo per il futuro del web
MEAN: il nuovo stack di sviluppo per il futuro del web
 
Ionic Cordova vs React Native
Ionic Cordova vs React NativeIonic Cordova vs React Native
Ionic Cordova vs React Native
 
Acadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code OverviewAcadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code Overview
 
Pietro Brambati: PHP e la piattaforma Microsoft
Pietro Brambati: PHP e la piattaforma MicrosoftPietro Brambati: PHP e la piattaforma Microsoft
Pietro Brambati: PHP e la piattaforma Microsoft
 
Lucio Zambon: PHP@Elettra
Lucio Zambon: PHP@ElettraLucio Zambon: PHP@Elettra
Lucio Zambon: PHP@Elettra
 
Java Spring Basics - Donato Andrisani - Gabriele Manfredi
Java Spring Basics - Donato Andrisani - Gabriele ManfrediJava Spring Basics - Donato Andrisani - Gabriele Manfredi
Java Spring Basics - Donato Andrisani - Gabriele Manfredi
 
phpDay 2008 - Joomla! 1.5 - Soluzione opensource per il vostro business
phpDay 2008 - Joomla! 1.5 - Soluzione opensource per il vostro businessphpDay 2008 - Joomla! 1.5 - Soluzione opensource per il vostro business
phpDay 2008 - Joomla! 1.5 - Soluzione opensource per il vostro business
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
 
Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 

Semelhante a JBoss Seam, un framework per Java EE 5

Sviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsSviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsAlberto Brandolini
 
javaday 2006 - Tiger
javaday 2006 - Tigerjavaday 2006 - Tiger
javaday 2006 - TigerMatteo Baccan
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailDotNetMarche
 
Joomla! 2.5 - Presentazione al PUG Friuli
Joomla! 2.5 - Presentazione al PUG FriuliJoomla! 2.5 - Presentazione al PUG Friuli
Joomla! 2.5 - Presentazione al PUG Friuliccaps
 
Sviluppare plugin per google Chrome
Sviluppare plugin per google ChromeSviluppare plugin per google Chrome
Sviluppare plugin per google ChromeCodemotion
 
J2EE 5 - Esempio Carrello Elettronico
J2EE 5 - Esempio Carrello ElettronicoJ2EE 5 - Esempio Carrello Elettronico
J2EE 5 - Esempio Carrello ElettronicoBoymix81
 
Javaday 2009 php e java
Javaday 2009 php e javaJavaday 2009 php e java
Javaday 2009 php e javaMatteo Baccan
 
Refactoring mediante pattern mvc 
di un’applicazione web-based
 a supporto di...
Refactoring mediante pattern mvc 
di un’applicazione web-based
 a supporto di...Refactoring mediante pattern mvc 
di un’applicazione web-based
 a supporto di...
Refactoring mediante pattern mvc 
di un’applicazione web-based
 a supporto di...Stefano Giansante
 
Blazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoBlazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoGiuneco S.r.l
 
Tapestry 5 in Action Introduzione
Tapestry 5 in Action IntroduzioneTapestry 5 in Action Introduzione
Tapestry 5 in Action Introduzionemaraexception
 
Stato di avanzamento dei lavori e roadmap del progetto CMDBuild - CMDBuild Da...
Stato di avanzamento dei lavori e roadmap del progetto CMDBuild - CMDBuild Da...Stato di avanzamento dei lavori e roadmap del progetto CMDBuild - CMDBuild Da...
Stato di avanzamento dei lavori e roadmap del progetto CMDBuild - CMDBuild Da...CMDBuild org
 
... thinking about Microformats!
... thinking about Microformats!... thinking about Microformats!
... thinking about Microformats!Stefano Fago
 

Semelhante a JBoss Seam, un framework per Java EE 5 (20)

Sviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsSviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con Grails
 
javaday 2006 - Tiger
javaday 2006 - Tigerjavaday 2006 - Tiger
javaday 2006 - Tiger
 
Microsoft Fast - Overview
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - Overview
 
App Engine + Python
App Engine + PythonApp Engine + Python
App Engine + Python
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle Monorail
 
Joomla! 2.5 - Presentazione al PUG Friuli
Joomla! 2.5 - Presentazione al PUG FriuliJoomla! 2.5 - Presentazione al PUG Friuli
Joomla! 2.5 - Presentazione al PUG Friuli
 
#dd12 Scrivi X e Risolvi
#dd12 Scrivi X e Risolvi#dd12 Scrivi X e Risolvi
#dd12 Scrivi X e Risolvi
 
Drupal7
Drupal7Drupal7
Drupal7
 
Sviluppare plugin per google Chrome
Sviluppare plugin per google ChromeSviluppare plugin per google Chrome
Sviluppare plugin per google Chrome
 
J2EE 5 - Esempio Carrello Elettronico
J2EE 5 - Esempio Carrello ElettronicoJ2EE 5 - Esempio Carrello Elettronico
J2EE 5 - Esempio Carrello Elettronico
 
Javaday 2009 php e java
Javaday 2009 php e javaJavaday 2009 php e java
Javaday 2009 php e java
 
Refactoring mediante pattern mvc 
di un’applicazione web-based
 a supporto di...
Refactoring mediante pattern mvc 
di un’applicazione web-based
 a supporto di...Refactoring mediante pattern mvc 
di un’applicazione web-based
 a supporto di...
Refactoring mediante pattern mvc 
di un’applicazione web-based
 a supporto di...
 
Blazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoBlazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo Greco
 
Java o non java
Java o non javaJava o non java
Java o non java
 
Tapestry 5 in Action Introduzione
Tapestry 5 in Action IntroduzioneTapestry 5 in Action Introduzione
Tapestry 5 in Action Introduzione
 
Stato di avanzamento dei lavori e roadmap del progetto CMDBuild - CMDBuild Da...
Stato di avanzamento dei lavori e roadmap del progetto CMDBuild - CMDBuild Da...Stato di avanzamento dei lavori e roadmap del progetto CMDBuild - CMDBuild Da...
Stato di avanzamento dei lavori e roadmap del progetto CMDBuild - CMDBuild Da...
 
Dessi Tech Day2008 Cagliari
Dessi Tech Day2008 CagliariDessi Tech Day2008 Cagliari
Dessi Tech Day2008 Cagliari
 
... thinking about Microformats!
... thinking about Microformats!... thinking about Microformats!
... thinking about Microformats!
 
Grasso Frameworks Ajax
Grasso Frameworks AjaxGrasso Frameworks Ajax
Grasso Frameworks Ajax
 
MVC and Struts 1
MVC and Struts 1MVC and Struts 1
MVC and Struts 1
 

Mais de Marcello Teodori

Anatomy of an APS 2 appication
Anatomy of an APS 2 appicationAnatomy of an APS 2 appication
Anatomy of an APS 2 appicationMarcello Teodori
 
JavaScript Power Tools 2015
JavaScript Power Tools 2015JavaScript Power Tools 2015
JavaScript Power Tools 2015Marcello Teodori
 
Wicket from Designer to Developer
Wicket from Designer to DeveloperWicket from Designer to Developer
Wicket from Designer to DeveloperMarcello Teodori
 
m2eclipse: integrazione maven2 in eclipse IDE
m2eclipse: integrazione maven2 in eclipse IDEm2eclipse: integrazione maven2 in eclipse IDE
m2eclipse: integrazione maven2 in eclipse IDEMarcello Teodori
 
Sviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con JavaSviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con JavaMarcello Teodori
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringMarcello Teodori
 
Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5Marcello Teodori
 

Mais de Marcello Teodori (11)

Anatomy of an APS 2 appication
Anatomy of an APS 2 appicationAnatomy of an APS 2 appication
Anatomy of an APS 2 appication
 
Refactoring to a SPA
Refactoring to a SPARefactoring to a SPA
Refactoring to a SPA
 
JavaScript Power Tools 2015
JavaScript Power Tools 2015JavaScript Power Tools 2015
JavaScript Power Tools 2015
 
Wicket from Designer to Developer
Wicket from Designer to DeveloperWicket from Designer to Developer
Wicket from Designer to Developer
 
Software Factory in a Box
Software Factory in a BoxSoftware Factory in a Box
Software Factory in a Box
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grails
 
m2eclipse: integrazione maven2 in eclipse IDE
m2eclipse: integrazione maven2 in eclipse IDEm2eclipse: integrazione maven2 in eclipse IDE
m2eclipse: integrazione maven2 in eclipse IDE
 
Sviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con JavaSviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con Java
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con Spring
 
Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5
 
Spring e Flex
Spring e FlexSpring e Flex
Spring e Flex
 

JBoss Seam, un framework per Java EE 5

  • 1. 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
  • 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-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
  • 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 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
  • 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à 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
  • 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