SlideShare uma empresa Scribd logo
1 de 7
Baixar para ler offline
Struttin' On
novità in casa Struts
Marcello Teodori
marcello.teodori@jugmilano.it
Java User Group Milano




About Marcello
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 documentazione.


About JUG Milano
     nasce il 18 Dicembre 2002 ad opera di Filippo Diotalevi
     mailing list su Yahoo! Groups con più di 200 iscritti
     meeting con cadenza mensile con presentazioni a cura degli iscritti
     eventi speciali
     partecipazione del tutto libera e gratuita
     il nostro sito web: http://www.jugmilano.it/
     facciamo parte della Top 50 dei JUG mondiali!


Una Premessa
Devo fare un'analisi sullo sviluppo di un'applicazione web
in Java con le seguenti caratteristiche:
     grandi dimensioni, sia come numerosità del team che come function point
     accesso a data source e business services generici
     layout pagine uniforme, stile portale
     aree "attive" che si aggiornano da sole => AJAX!


Struts nel 2006?
     Qualche anno fa non si parlava d'altro... ora molto meno!
     Ad oggi Struts può considerarsi ancora una risposta valida?
     Scopriamolo andando a rivederci il sito!
     Una vera rivoluzione, cerchiamo di mettere un po' d'ordine...
Struts: stato attuale in dettaglio
  La versione 1.2.9 è l'ultima rilasciata in GA, con bugfix per applicazioni già in campo
  Il sito attuale presenta Action Framework 1, evoluzione della vecchia code base,
  corrispondente a Struts 1.3.4 prossima al rilascio GA, con i subproject Core, Applications,
  EL, Extras, Scripting, Taglibs, and Tiles
  Struts Action Framework 2.0 è la nuova versione sulla codebase di WebWork, rilascio
  previsto prima metà 2006
  Struts Shale Framework, rilascio previsto agosto 2006 è una serie di moduli aggiuntivi per
  JSF non correlati con lo Struts originale


Java Web API/Struts Project Timeline




Struts 101
  cos'è e come nasce Struts?
        semplifica e rende più flessibile il JSP Model 2, un MVC per il web
        un'esigenza di una singola persona, Craig McClanahan, condivisa da molti
        implementazione pattern Front Controller
        gli "artifact" di Struts: Action, ActionForm, struts-config.xml
  XML configuration tramite Digester => early Spring!
  Validator
  Tiles come layout
  Una serie di taglib, principalmente per generare i form HTML
JSP Model 2




Original Struts Model




Limiti di Struts
gerarchia di classi rigida: abstract base class ovunque
     codice boilerplate per recupero, convalida e conversione dati
     difficoltà di riutilizzo del codice
     sovrapposizione funzionalità con JSTL: struts-el


Struts Best Practices
     Evito i FormBean tramite i DynaActionForm
     Il Validator Framework elimina codice di validazione ripetitivo
     Sostituisco configurazione XML con tag XDoclet
     PlugIn con estensione RequestProcessor
     ...ma ci sono ancora problemi...


SAF 1 AKA Struts 1.3
Risolve il problema principale: riutilizzo del codice delle Action e composizione Plugin

     Commons Chain (Chain of Responsibility)
           RequestProcessor Composable e non più monolitico
           concatenazione action con attributi command e catalog
     attributo extends come in Tiles su struts-config.xml


Bisogna Fare Qualcosa! Struts Ti
Progetto di evoluzione del framework che trae ispirazione, ma soprattutto coinvolge il meglio
della "concorrenza" tramite discussioni sulla mailing list struts-dev.

     Fase 1: focus su consolidamento supporto dell'esistente
          Utilizzo di WebWork 2.2 come nuova code base
          Strumenti di compatibilità e porting da SAF 1.0
     Fase 2: focus su semplificazione (EoD)
          integrazione Commons Chain
          integrazione Page
Flow di Beehive
          annotation in alternativa a configurazione
          quick development mode

Matt Raible raccoglie le dichiarazioni sul "merger" qui


XDoclet vs. Annotation
     Code generation vs. Runtime inspection
     Futuro incerto di XDoclet, scarso interesse per XDoclet 2
     Annotation in Beehive su Struts 1.1 (ex BEA Workflow)
     Annotation per le Action in Sprout, ma sposta configurazione su Spring!
     Strecks, Annotations per Validator e POJO Action

Le annotation possono essere utilizzate sia per arricchire con proprietà la definizione di metodi,
classi, variabili, che per definire il funzionamento di un programma tramite code generation, in
maniera analoga ad XDoclet. Un parere sull'uso di annotation per la generazione del codice.


POJO Revolution
     Semplicità di realizzazione di Unit Test e riduzione necessità di Mock Object
Massima libertà nelle gerarchia delle proprie classi
  Nessuna dipendenza da implementazioni di API esterne (Servlet)
  "composizione" delle applicazioni via XML e Inversion of Control/Dependency Injection
  (vedi Spring)


SAF 2 AKA WebWork 2.2
  la versione 2.2.2 è l'ultima a nome WebWork
  i tag ww diventano saf
  esistono solo Action e file di configurazione, nessuna abstract base class, l'Action può
  essere un POJO e non è condivisa come in SAF 1.0
  la view non è limitata a JSP
  Documentazione ottima e abbondante!


WebWork/SAF 2.0 Model




WebWork full stack
  Tiger package con Annotation!
  Webapp showcase con tantissimi casi d'uso
  Modalità di reload automatico di classi, configurazione e risorse
  RAD via Jetty integrato: java -jar webwork-2.2.*.jar quickstart:<mywebapp>
  Supporto AJAX tramite integrazione DOJO (JavaScript) e DWR (Java)
  Continuations tramite il package estratto da RIFE


Struts e JSF?
  request-based vs. component based
Craig McClanahan è coinvolto nelle specifiche JSF e nell'IDE Sun Java Creator
     struts-faces: subproject in SAF 1.0, soluzione ad interim non ottimale e poco
     documentata
     la diffusione di JSF è in crescita
     Cosa può dare Struts a JSF?


JSF Lifecycle




Shale: il contributo di Struts a JSF
Non un framework, ma una serie di moduli aggiuntivi per JSF, forse destinati ad una prossima
versione delle relative specifiche.

     Implementazione input validation via Commons Validator
     Clay, implementazione ViewHandler in HTML analogo a Facelets
     ViewController, un page controller stile RoR/ASP.NET
     Remoting: supporto ad AJAX saltando la fase di view rendering
     Dialog: supporto conversation scope tramite Spring Web Flow
     Integrazione con JNDI e Spring

Un esempio di ViewController.


Supporto IDE
     Pollinate su Eclipse per Beehive, dead on arrival!
     designer visuali di struts-config.xml
     supporto di base degli artifact di Struts (e WebWork)
     strumenti di composizione visuale delle view JSF (Sun Java Creator, JDeveloper...)


Ma alla fine cosa ho scelto?

"WebWork is a great technology,
and Struts is a great community"
                                               (Patrick Lightbody, OpenSymphony/WebWork)
Ringraziamenti ecc.
  Questa presentazione è stata realizzata in XHTML/JavaScript con S5, A Simple
  Standards-Based Slide Show System di Eric Meyer in un decimo del tempo rispetto alle
  alternative, stile compreso.
  Il codice XHTML è stato realizzato in JEdit, con i plugin XML e Code2HTML
  Contenuti e immagini sono soggetti a licenza Creative Commons Attribuzione-
  NonCommerciale-NoOpereDerivate 2.5
  Domande e (possibilmente) Risposte
  Ci vediamo il 28 settembre alla tappa di Milano del Java Day '06! Stay tuned

Mais conteúdo relacionado

Mais procurados

Modulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E AopModulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E Aopjdksrl
 
Java Conference 2006 Dessi Massimiliano
Java Conference 2006 Dessi MassimilianoJava Conference 2006 Dessi Massimiliano
Java Conference 2006 Dessi MassimilianoMassimiliano Dessì
 
Spring E Spring Web Flow Nel Progetto Jug Avis Web
Spring E Spring Web Flow Nel Progetto Jug Avis WebSpring E Spring Web Flow Nel Progetto Jug Avis Web
Spring E Spring Web Flow Nel Progetto Jug Avis WebMassimiliano Dessì
 
Spring Stack Testing:Continuous integration,Continuous Agitation
Spring Stack Testing:Continuous integration,Continuous AgitationSpring Stack Testing:Continuous integration,Continuous Agitation
Spring Stack Testing:Continuous integration,Continuous AgitationMassimiliano Dessì
 
Progetto SOD Davide Sito
Progetto SOD Davide SitoProgetto SOD Davide Sito
Progetto SOD Davide SitoDavide Sito
 
Mvc e di spring e angular js
Mvc e di   spring e angular jsMvc e di   spring e angular js
Mvc e di spring e angular jsRiccardo Cardin
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioAntonio Musarra
 
Spring, IBatis e Transazioni Aop Nel Jug Avis Web
Spring, IBatis e Transazioni Aop Nel Jug Avis WebSpring, IBatis e Transazioni Aop Nel Jug Avis Web
Spring, IBatis e Transazioni Aop Nel Jug Avis WebMassimiliano Dessì
 
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015Codemotion
 
Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Antonio Musarra
 
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleLiferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleAntonio Musarra
 
Liferay & Salesforce.com
Liferay & Salesforce.comLiferay & Salesforce.com
Liferay & Salesforce.comAntonio Musarra
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
 

Mais procurados (20)

Spring 2.5
Spring 2.5Spring 2.5
Spring 2.5
 
Modulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E AopModulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E Aop
 
Java Conference 2006 Dessi Massimiliano
Java Conference 2006 Dessi MassimilianoJava Conference 2006 Dessi Massimiliano
Java Conference 2006 Dessi Massimiliano
 
Spring @Aspect e @Controller
Spring @Aspect e @Controller Spring @Aspect e @Controller
Spring @Aspect e @Controller
 
Spring E Spring Web Flow Nel Progetto Jug Avis Web
Spring E Spring Web Flow Nel Progetto Jug Avis WebSpring E Spring Web Flow Nel Progetto Jug Avis Web
Spring E Spring Web Flow Nel Progetto Jug Avis Web
 
Spring Stack Testing:Continuous integration,Continuous Agitation
Spring Stack Testing:Continuous integration,Continuous AgitationSpring Stack Testing:Continuous integration,Continuous Agitation
Spring Stack Testing:Continuous integration,Continuous Agitation
 
Progetto SOD Davide Sito
Progetto SOD Davide SitoProgetto SOD Davide Sito
Progetto SOD Davide Sito
 
Mvc e di spring e angular js
Mvc e di   spring e angular jsMvc e di   spring e angular js
Mvc e di spring e angular js
 
Microservices
MicroservicesMicroservices
Microservices
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° Episodio
 
Spring, IBatis e Transazioni Aop Nel Jug Avis Web
Spring, IBatis e Transazioni Aop Nel Jug Avis WebSpring, IBatis e Transazioni Aop Nel Jug Avis Web
Spring, IBatis e Transazioni Aop Nel Jug Avis Web
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
 
Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1
 
Maven - Aprile 2010
Maven - Aprile 2010Maven - Aprile 2010
Maven - Aprile 2010
 
OSGi e Liferay 7
OSGi e Liferay 7OSGi e Liferay 7
OSGi e Liferay 7
 
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleLiferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
 
MVC and Struts 1
MVC and Struts 1MVC and Struts 1
MVC and Struts 1
 
Liferay & Salesforce.com
Liferay & Salesforce.comLiferay & Salesforce.com
Liferay & Salesforce.com
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.js
 

Destaque

Lezione 6b: Design Pattern Strutturali
Lezione 6b: Design Pattern StrutturaliLezione 6b: Design Pattern Strutturali
Lezione 6b: Design Pattern StrutturaliAndrea Della Corte
 
Migrating Java EE applications to IBM Bluemix Platform-as-a-Service
Migrating Java EE applications to IBM Bluemix Platform-as-a-ServiceMigrating Java EE applications to IBM Bluemix Platform-as-a-Service
Migrating Java EE applications to IBM Bluemix Platform-as-a-ServiceDavid Currie
 
Building out a Microservices Architecture with WebSphere Liberty Profile and ...
Building out a Microservices Architecture with WebSphere Liberty Profile and ...Building out a Microservices Architecture with WebSphere Liberty Profile and ...
Building out a Microservices Architecture with WebSphere Liberty Profile and ...David Currie
 
Introduction to Microservices and Cloud Native Application Architecture
Introduction to Microservices and Cloud Native Application ArchitectureIntroduction to Microservices and Cloud Native Application Architecture
Introduction to Microservices and Cloud Native Application ArchitectureDavid Currie
 
Design Pattern Comportamentali
Design Pattern ComportamentaliDesign Pattern Comportamentali
Design Pattern ComportamentaliRiccardo Cardin
 
Design pattern architetturali Model View Controller, MVP e MVVM
Design pattern architetturali   Model View Controller, MVP e MVVMDesign pattern architetturali   Model View Controller, MVP e MVVM
Design pattern architetturali Model View Controller, MVP e MVVMRiccardo Cardin
 
Design Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionDesign Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionRiccardo Cardin
 

Destaque (7)

Lezione 6b: Design Pattern Strutturali
Lezione 6b: Design Pattern StrutturaliLezione 6b: Design Pattern Strutturali
Lezione 6b: Design Pattern Strutturali
 
Migrating Java EE applications to IBM Bluemix Platform-as-a-Service
Migrating Java EE applications to IBM Bluemix Platform-as-a-ServiceMigrating Java EE applications to IBM Bluemix Platform-as-a-Service
Migrating Java EE applications to IBM Bluemix Platform-as-a-Service
 
Building out a Microservices Architecture with WebSphere Liberty Profile and ...
Building out a Microservices Architecture with WebSphere Liberty Profile and ...Building out a Microservices Architecture with WebSphere Liberty Profile and ...
Building out a Microservices Architecture with WebSphere Liberty Profile and ...
 
Introduction to Microservices and Cloud Native Application Architecture
Introduction to Microservices and Cloud Native Application ArchitectureIntroduction to Microservices and Cloud Native Application Architecture
Introduction to Microservices and Cloud Native Application Architecture
 
Design Pattern Comportamentali
Design Pattern ComportamentaliDesign Pattern Comportamentali
Design Pattern Comportamentali
 
Design pattern architetturali Model View Controller, MVP e MVVM
Design pattern architetturali   Model View Controller, MVP e MVVMDesign pattern architetturali   Model View Controller, MVP e MVVM
Design pattern architetturali Model View Controller, MVP e MVVM
 
Design Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionDesign Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency Injection
 

Semelhante a Struttin' on, novità in casa Struts

Glossario tecnologico 2011
Glossario tecnologico   2011Glossario tecnologico   2011
Glossario tecnologico 2011Andrea Colleoni
 
Sviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsSviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsAlberto Brandolini
 
Struts - Overview, Installazione e Setup
Struts - Overview, Installazione e SetupStruts - Overview, Installazione e Setup
Struts - Overview, Installazione e SetupFederico Paparoni
 
Confronto fra web services framework (open source)
Confronto fra web services framework (open source)Confronto fra web services framework (open source)
Confronto fra web services framework (open source)Alberto Lagna
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTfirenze-gtug
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On RailsLuca Mearelli
 
Link. java server faces [santi caltabiano]
  Link. java server faces [santi caltabiano]  Link. java server faces [santi caltabiano]
Link. java server faces [santi caltabiano]santi caltabiano
 
Esposizione RIA
Esposizione RIAEsposizione RIA
Esposizione RIAdiodorato
 
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...LeD87
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webLuca Milan
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailDotNetMarche
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineDavide Benvegnù
 
ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?Giorgio Di Nardo
 

Semelhante a Struttin' on, novità in casa Struts (20)

Glossario tecnologico 2011
Glossario tecnologico   2011Glossario tecnologico   2011
Glossario tecnologico 2011
 
Sviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsSviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con Grails
 
Struts - Overview, Installazione e Setup
Struts - Overview, Installazione e SetupStruts - Overview, Installazione e Setup
Struts - Overview, Installazione e Setup
 
Confronto fra web services framework (open source)
Confronto fra web services framework (open source)Confronto fra web services framework (open source)
Confronto fra web services framework (open source)
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWT
 
Grasso Frameworks Ajax
Grasso Frameworks AjaxGrasso Frameworks Ajax
Grasso Frameworks Ajax
 
Many Designs Elements
Many Designs ElementsMany Designs Elements
Many Designs Elements
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On Rails
 
Link. java server faces [santi caltabiano]
  Link. java server faces [santi caltabiano]  Link. java server faces [santi caltabiano]
Link. java server faces [santi caltabiano]
 
Ddive Xpage852
Ddive Xpage852Ddive Xpage852
Ddive Xpage852
 
Esposizione RIA
Esposizione RIAEsposizione RIA
Esposizione RIA
 
Wcf data services
Wcf data servicesWcf data services
Wcf data services
 
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle Monorail
 
DDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continuaDDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continua
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio Online
 
DDive11 - xpages
DDive11 - xpagesDDive11 - xpages
DDive11 - xpages
 
ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?
 
Introduzione a Struts
Introduzione a StrutsIntroduzione a Struts
Introduzione a Struts
 

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
 
JBoss Seam, un framework per Java EE 5
JBoss Seam, un framework per Java EE 5JBoss Seam, un framework per Java EE 5
JBoss Seam, un framework per Java EE 5Marcello 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
 
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 (12)

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
 
JBoss Seam, un framework per Java EE 5
JBoss Seam, un framework per Java EE 5JBoss Seam, un framework per Java EE 5
JBoss Seam, un framework per Java EE 5
 
Rich Internet Application
Rich Internet ApplicationRich Internet Application
Rich Internet Application
 
Sviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con JavaSviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con Java
 
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
 

Último

Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 

Último (9)

Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 

Struttin' on, novità in casa Struts

  • 1. Struttin' On novità in casa Struts Marcello Teodori marcello.teodori@jugmilano.it Java User Group Milano About Marcello 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 documentazione. About JUG Milano nasce il 18 Dicembre 2002 ad opera di Filippo Diotalevi mailing list su Yahoo! Groups con più di 200 iscritti meeting con cadenza mensile con presentazioni a cura degli iscritti eventi speciali partecipazione del tutto libera e gratuita il nostro sito web: http://www.jugmilano.it/ facciamo parte della Top 50 dei JUG mondiali! Una Premessa Devo fare un'analisi sullo sviluppo di un'applicazione web in Java con le seguenti caratteristiche: grandi dimensioni, sia come numerosità del team che come function point accesso a data source e business services generici layout pagine uniforme, stile portale aree "attive" che si aggiornano da sole => AJAX! Struts nel 2006? Qualche anno fa non si parlava d'altro... ora molto meno! Ad oggi Struts può considerarsi ancora una risposta valida? Scopriamolo andando a rivederci il sito! Una vera rivoluzione, cerchiamo di mettere un po' d'ordine...
  • 2. Struts: stato attuale in dettaglio La versione 1.2.9 è l'ultima rilasciata in GA, con bugfix per applicazioni già in campo Il sito attuale presenta Action Framework 1, evoluzione della vecchia code base, corrispondente a Struts 1.3.4 prossima al rilascio GA, con i subproject Core, Applications, EL, Extras, Scripting, Taglibs, and Tiles Struts Action Framework 2.0 è la nuova versione sulla codebase di WebWork, rilascio previsto prima metà 2006 Struts Shale Framework, rilascio previsto agosto 2006 è una serie di moduli aggiuntivi per JSF non correlati con lo Struts originale Java Web API/Struts Project Timeline Struts 101 cos'è e come nasce Struts? semplifica e rende più flessibile il JSP Model 2, un MVC per il web un'esigenza di una singola persona, Craig McClanahan, condivisa da molti implementazione pattern Front Controller gli "artifact" di Struts: Action, ActionForm, struts-config.xml XML configuration tramite Digester => early Spring! Validator Tiles come layout Una serie di taglib, principalmente per generare i form HTML
  • 3. JSP Model 2 Original Struts Model Limiti di Struts
  • 4. gerarchia di classi rigida: abstract base class ovunque codice boilerplate per recupero, convalida e conversione dati difficoltà di riutilizzo del codice sovrapposizione funzionalità con JSTL: struts-el Struts Best Practices Evito i FormBean tramite i DynaActionForm Il Validator Framework elimina codice di validazione ripetitivo Sostituisco configurazione XML con tag XDoclet PlugIn con estensione RequestProcessor ...ma ci sono ancora problemi... SAF 1 AKA Struts 1.3 Risolve il problema principale: riutilizzo del codice delle Action e composizione Plugin Commons Chain (Chain of Responsibility) RequestProcessor Composable e non più monolitico concatenazione action con attributi command e catalog attributo extends come in Tiles su struts-config.xml Bisogna Fare Qualcosa! Struts Ti Progetto di evoluzione del framework che trae ispirazione, ma soprattutto coinvolge il meglio della "concorrenza" tramite discussioni sulla mailing list struts-dev. Fase 1: focus su consolidamento supporto dell'esistente Utilizzo di WebWork 2.2 come nuova code base Strumenti di compatibilità e porting da SAF 1.0 Fase 2: focus su semplificazione (EoD) integrazione Commons Chain integrazione Page
Flow di Beehive annotation in alternativa a configurazione quick development mode Matt Raible raccoglie le dichiarazioni sul "merger" qui XDoclet vs. Annotation Code generation vs. Runtime inspection Futuro incerto di XDoclet, scarso interesse per XDoclet 2 Annotation in Beehive su Struts 1.1 (ex BEA Workflow) Annotation per le Action in Sprout, ma sposta configurazione su Spring! Strecks, Annotations per Validator e POJO Action Le annotation possono essere utilizzate sia per arricchire con proprietà la definizione di metodi, classi, variabili, che per definire il funzionamento di un programma tramite code generation, in maniera analoga ad XDoclet. Un parere sull'uso di annotation per la generazione del codice. POJO Revolution Semplicità di realizzazione di Unit Test e riduzione necessità di Mock Object
  • 5. Massima libertà nelle gerarchia delle proprie classi Nessuna dipendenza da implementazioni di API esterne (Servlet) "composizione" delle applicazioni via XML e Inversion of Control/Dependency Injection (vedi Spring) SAF 2 AKA WebWork 2.2 la versione 2.2.2 è l'ultima a nome WebWork i tag ww diventano saf esistono solo Action e file di configurazione, nessuna abstract base class, l'Action può essere un POJO e non è condivisa come in SAF 1.0 la view non è limitata a JSP Documentazione ottima e abbondante! WebWork/SAF 2.0 Model WebWork full stack Tiger package con Annotation! Webapp showcase con tantissimi casi d'uso Modalità di reload automatico di classi, configurazione e risorse RAD via Jetty integrato: java -jar webwork-2.2.*.jar quickstart:<mywebapp> Supporto AJAX tramite integrazione DOJO (JavaScript) e DWR (Java) Continuations tramite il package estratto da RIFE Struts e JSF? request-based vs. component based
  • 6. Craig McClanahan è coinvolto nelle specifiche JSF e nell'IDE Sun Java Creator struts-faces: subproject in SAF 1.0, soluzione ad interim non ottimale e poco documentata la diffusione di JSF è in crescita Cosa può dare Struts a JSF? JSF Lifecycle Shale: il contributo di Struts a JSF Non un framework, ma una serie di moduli aggiuntivi per JSF, forse destinati ad una prossima versione delle relative specifiche. Implementazione input validation via Commons Validator Clay, implementazione ViewHandler in HTML analogo a Facelets ViewController, un page controller stile RoR/ASP.NET Remoting: supporto ad AJAX saltando la fase di view rendering Dialog: supporto conversation scope tramite Spring Web Flow Integrazione con JNDI e Spring Un esempio di ViewController. Supporto IDE Pollinate su Eclipse per Beehive, dead on arrival! designer visuali di struts-config.xml supporto di base degli artifact di Struts (e WebWork) strumenti di composizione visuale delle view JSF (Sun Java Creator, JDeveloper...) Ma alla fine cosa ho scelto? "WebWork is a great technology, and Struts is a great community" (Patrick Lightbody, OpenSymphony/WebWork)
  • 7. Ringraziamenti ecc. Questa presentazione è stata realizzata in XHTML/JavaScript con S5, A Simple Standards-Based Slide Show System di Eric Meyer in un decimo del tempo rispetto alle alternative, stile compreso. Il codice XHTML è stato realizzato in JEdit, con i plugin XML e Code2HTML Contenuti e immagini sono soggetti a licenza Creative Commons Attribuzione- NonCommerciale-NoOpereDerivate 2.5 Domande e (possibilmente) Risposte Ci vediamo il 28 settembre alla tappa di Milano del Java Day '06! Stay tuned