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