Presentazione sull'evoluzione di Struts, primo framework web MVC in ambito Java e sul merger con WebWork, effettuata durante la (prima!) tappa di Torino della prima edizione di JavaDay '06.
Lo Spring Framework viene ancora una volta incontro agli sviluppatori Java semplificandone la vita, questa volta vedremo come implementare facilmente uno strato servizi stateless da rendere disponibile remotamente nei diversi formati fruibili dalle diverse tecnologie client RIA, introducendo i concetti di Exporter e Proxy di Spring Remoting. Tutto questo tramite pura configurazione, via XML o annotation a seconda dei gusti, e con un esempio specifico in Flex con Spring BlazeDS Integration.
SPRING - MAVEN - REST API (ITA - Luglio 2017)Valerio Radice
Introduzione al framework Java Spring e Maven per realizzare API REST.
Breve introduzione all'uso di Maven per configurare un progetto SpringBoot e realizzare un server REST.
Disponibile il codice dimostrativo su github (link nelle slide, attenzione alle branch).
Valerio Radice (valix85)
Luglio 2017
L’articolo intende comunicare le informazioni base che riguardano gli hooks favorendo l’aspetto reale, in altre parole, far capire a cosa servono tramite l’esposizione e realizzazione di un caso di studio quanto più possibile vicino al reale. Sarà quindi presentato un caso d’integrazione che farà uso degli hooks, toccando i vari aspetti di personalizzazione. L’articolo sarà suddiviso in più episodi per evitare una “sbrodolata” d’informazione e rendere più efficace l’assimilazione di quanto esposto.
Presentazione sullo stato dell'arte nell'utilizzo e nello sviluppo di Java su Mac OS X effettuata al JUG Milano Meeting #14 del 12 gennaio 2006 presso Mac@Work.
Lo Spring Framework viene ancora una volta incontro agli sviluppatori Java semplificandone la vita, questa volta vedremo come implementare facilmente uno strato servizi stateless da rendere disponibile remotamente nei diversi formati fruibili dalle diverse tecnologie client RIA, introducendo i concetti di Exporter e Proxy di Spring Remoting. Tutto questo tramite pura configurazione, via XML o annotation a seconda dei gusti, e con un esempio specifico in Flex con Spring BlazeDS Integration.
SPRING - MAVEN - REST API (ITA - Luglio 2017)Valerio Radice
Introduzione al framework Java Spring e Maven per realizzare API REST.
Breve introduzione all'uso di Maven per configurare un progetto SpringBoot e realizzare un server REST.
Disponibile il codice dimostrativo su github (link nelle slide, attenzione alle branch).
Valerio Radice (valix85)
Luglio 2017
L’articolo intende comunicare le informazioni base che riguardano gli hooks favorendo l’aspetto reale, in altre parole, far capire a cosa servono tramite l’esposizione e realizzazione di un caso di studio quanto più possibile vicino al reale. Sarà quindi presentato un caso d’integrazione che farà uso degli hooks, toccando i vari aspetti di personalizzazione. L’articolo sarà suddiviso in più episodi per evitare una “sbrodolata” d’informazione e rendere più efficace l’assimilazione di quanto esposto.
Presentazione sullo stato dell'arte nell'utilizzo e nello sviluppo di Java su Mac OS X effettuata al JUG Milano Meeting #14 del 12 gennaio 2006 presso Mac@Work.
A very introductive presentation about how Model-View-Controller pattern (MVC) and Dependence Injection (DI) are implemented in some popular frameworks, such as Spring and Angular JS.
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
Con queste “14 misere” slide ho cercato d’introdurre Liferay e come iniziare con il piede giusto per affrontare lo sviluppo di applicazioni ai voi che siete proprio “novelli”. Spero di essere riuscito con questo primo episodio a suscitare la vostra curiosità e interesse.
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015Codemotion
Codemotion Rome 2015 - Costruiamo con Spring Boot una applicazione Java EE con transazioni multiple JDBC-JMS utilizzando H2 e HornetQ (embedded in memory), il supporto di autoconfiguration JAX-RS (Jersey), le annotazioni JSR 250 per i lifecycle hooks, e le annotazioni JSR 330 utilizzabili per AS proprietari e per la portabilità in container di dependency injection come Spring. Per finire distribuiremo su Undertow embedded HTTTP server, su un AS standalone (Apache TomEE) e come PAAS su Cloud Foundry.
Allo User Group Italiano su Liferay di Bologna: Overview del futuro prossimo su Liferay.
OSGi (Open Service Gateway Initiative) è una specifica che permette di costruire applicazioni modulari a componenti (i Bundle) e che introduce una programmazione Service Oriented, permettendo una separazione tra interfaccia ed implementazione molto più rigorosa di quella nativa Java. Esistono diverse implementazioni (container) di OSGi, conformi alle specifiche.
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleAntonio Musarra
Non sapete come realizzare un client SOAP in OSGi Style su Liferay 7?La risposta è il framework Apache CXF installato a bundle e poi OSGi Service Pattern.
Come integrare Salesforce.com nel contesto OSGi di Liferay 7. Nel corso di questa presentazione (tenuta al #LRUGItaly 2017 di Bologna) sarà illustrata una soluzione d'integrazione di Salesforce.com tramite le API SOAP nel contesto OSGi di Liferay (e non solo, vedi Apache Karaf).
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
La sempre maggiore diffusione di device diversificati (PC, Notebook, Tablet, Smartphone, ecc.) su piattaforme diverse, rilancia l'utilizzo delle Web Application come strumento per raggiungere il maggior numero di potenziali clienti con il minimo sforzo. Le capacità avanzate dei nuovi device e le ultime tecnologie ci consentono però di evolvere il concetto classico di applicazione Web in una declinazione più veloce, più responsiva, più accattivante: vediamo come.
Migrating Java EE applications to IBM Bluemix Platform-as-a-ServiceDavid Currie
This document discusses migrating Java EE applications from traditional deployment to IBM's Bluemix Platform-as-a-Service (PaaS). It introduces key concepts of cloud computing including IaaS, PaaS and SaaS models. It then focuses on Bluemix, describing it as IBM's cloud platform that is built on Cloud Foundry and provides services across various categories. The document guides developers on migrating an example application called DayTrader to Bluemix, covering steps like using database and other services, scaling the runtime, and adopting additional services to enhance the application.
A very introductive presentation about how Model-View-Controller pattern (MVC) and Dependence Injection (DI) are implemented in some popular frameworks, such as Spring and Angular JS.
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
Con queste “14 misere” slide ho cercato d’introdurre Liferay e come iniziare con il piede giusto per affrontare lo sviluppo di applicazioni ai voi che siete proprio “novelli”. Spero di essere riuscito con questo primo episodio a suscitare la vostra curiosità e interesse.
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015Codemotion
Codemotion Rome 2015 - Costruiamo con Spring Boot una applicazione Java EE con transazioni multiple JDBC-JMS utilizzando H2 e HornetQ (embedded in memory), il supporto di autoconfiguration JAX-RS (Jersey), le annotazioni JSR 250 per i lifecycle hooks, e le annotazioni JSR 330 utilizzabili per AS proprietari e per la portabilità in container di dependency injection come Spring. Per finire distribuiremo su Undertow embedded HTTTP server, su un AS standalone (Apache TomEE) e come PAAS su Cloud Foundry.
Allo User Group Italiano su Liferay di Bologna: Overview del futuro prossimo su Liferay.
OSGi (Open Service Gateway Initiative) è una specifica che permette di costruire applicazioni modulari a componenti (i Bundle) e che introduce una programmazione Service Oriented, permettendo una separazione tra interfaccia ed implementazione molto più rigorosa di quella nativa Java. Esistono diverse implementazioni (container) di OSGi, conformi alle specifiche.
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleAntonio Musarra
Non sapete come realizzare un client SOAP in OSGi Style su Liferay 7?La risposta è il framework Apache CXF installato a bundle e poi OSGi Service Pattern.
Come integrare Salesforce.com nel contesto OSGi di Liferay 7. Nel corso di questa presentazione (tenuta al #LRUGItaly 2017 di Bologna) sarà illustrata una soluzione d'integrazione di Salesforce.com tramite le API SOAP nel contesto OSGi di Liferay (e non solo, vedi Apache Karaf).
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
La sempre maggiore diffusione di device diversificati (PC, Notebook, Tablet, Smartphone, ecc.) su piattaforme diverse, rilancia l'utilizzo delle Web Application come strumento per raggiungere il maggior numero di potenziali clienti con il minimo sforzo. Le capacità avanzate dei nuovi device e le ultime tecnologie ci consentono però di evolvere il concetto classico di applicazione Web in una declinazione più veloce, più responsiva, più accattivante: vediamo come.
Migrating Java EE applications to IBM Bluemix Platform-as-a-ServiceDavid Currie
This document discusses migrating Java EE applications from traditional deployment to IBM's Bluemix Platform-as-a-Service (PaaS). It introduces key concepts of cloud computing including IaaS, PaaS and SaaS models. It then focuses on Bluemix, describing it as IBM's cloud platform that is built on Cloud Foundry and provides services across various categories. The document guides developers on migrating an example application called DayTrader to Bluemix, covering steps like using database and other services, scaling the runtime, and adopting additional services to enhance the application.
Building out a Microservices Architecture with WebSphere Liberty Profile and ...David Currie
This session will show how the combination of IBM WebSphere Application Server Liberty profile, IBM's application server for the cloud, and Netflix Open Source Software (OSS), can be used to build applications with high availability, auto-recovery, and continuous delivery at web scale. You will get an overview of the Netflix OSS projects and see how Liberty's extensibility makes it easy to integrate these projects with your application. We will share with you open source that IBM has made available to allow you to leverage the power of these projects within the Liberty programming model. Come see the benefits of a microservices architecture leveraging a combination of Netflix OSS and the WebSphere Liberty profile.
This presentation talks about behavioural design patterns. In software engineering, behavioral design patterns are design patterns that identify common communication patterns between objects and realize these patterns. By doing so, these patterns increase flexibility in carrying out this communication. In particular in the slides are described the following patterns:
- Command
- Iterator
- Observer
- Strategy
- Template Method
Design patterns are presented using examples in Java, Scala and Javascript.
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
Design pattern architetturali Model View Controller, MVP e MVVMRiccardo Cardin
This presentation talks about model view controller, model view presenter and model view viewmodel patterns. These are architectural design patterns for implementing user interfaces. They divide a given software application into three interconnected parts, so as to separate internal representations of information from the ways that information is presented to or accepted from the user. Also, they promote separation of concerns. As examples, some frameworks are reported, such as:
- Spring MVC
- BackboneJS
- AngularJS
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
This presentation talks about dependecy injection, an architectural design pattern that aims to help developer to resolve dependencies between objects. Starting by describing general problem of dependecy resolution, the presentation continues presenting Inversion of Control (IoC) pattern, constructor injection and setting injection. As examples, some frameworks and libraries are reported, such as:
- Google Guice
- Spring framework
- AngularJS
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
Webcast - Introduzione a Visual Studio OnlineDavide Benvegnù
Visual Studio Online è uno strumento che fornisce molte funzionalità per l'ALM (Application Lifecycle management) e ad ogni release diventa sempre più completo, funzionale e davvero utile. Si tratta di una piattaforma completa e gratuita di strumenti per lo sviluppo e servizi utili per creare applicazioni multi-piattaforma, progettata per soddisfare i più alti requistiti a livello di disponibilità, scalabilità e complessità di sviluppo.
In questo webcast introduttivo, primo di una serie, vedremo quali sono le caratteristiche di questo strumento, impareremo come utilizzarlo per gestire il lavoro di ogni giorno e prenderemo confidenza con le sue funzionalità. Andremo infine alla scoperta delle nuove feature aggiunte alla suite.
APS 2 comes with new modern and powerful tools built using ADF to model and deploy cloud native process applications, let’s run through what’s in an app with a simple and fun example, ordering beers for your office.
At the origin there was a monolith. Behind a successful startup often lies a single technology application (Java, Rails, etc.) that grows until it hardly scales with the number of customers and likewise its development process as developers increase. A consolidated strategy on the back-end is to progressively slice the monolith into micro-services. A dual solution on the front-end is to gradually extract HTML, CSS and JavaScript code into a Single Page Application, applying some techniques like the ones I've been maturing during my experience in Workshare.
- Marcello Teodori is a senior architect who has worked with Java development for 15 years and is now based in London working for Workshare, a document collaboration company
- He discussed how he transitioned from back-end Java development to becoming a full-stack developer using front-end technologies like JavaScript, jQuery, Backbone and tools like Node.js, NPM, Bower, Grunt, and Yeoman
- He provided an overview of these popular JavaScript tools - Node.js/NPM for package/dependency management, Bower for front-end packages, Grunt for tasks/workflows, and Yeoman for application scaffolding.
The document discusses different template languages and styles that can be used for web applications to define the interface between designers and developers. It covers traditional templating with JSP and JSTL, as well as alternative approaches like Velocity, ERB, and Facelets. The goal is to define an iterative workflow that allows for changes to designs without requiring developers to rewrite templates from scratch each time.
Are we not lucky enough to enjoy a proper software development process in our team? We can try to improve our working environment with a setup on our local machine of a virtualized "software factory in a box" based on opensource tools (Maven/Redmine/Artifactory/Subversion/Jenkins). Following this approach We'll see how we can experiment on ourselves some integration best practices for these tools and easily introduce them into our company later.
Presentazione introduttiva su Groovy e Grails tratta dal materiale della serie di eventi Into The Groovy del JUG Milano tenuta allo Spring Meeting del 26/06/2010 a Cagliari organizzato da JUG Sardegna http://www.jugsardegna.org/vqwiki/jsp/Wiki?26giugno2010
Presentazione "quickie" sull'integrazione fra Maven ed Eclipse offerta dal plugin m2eclipse di Sonatype tenuta al JUG Milano Meeting #29 del 3 luglio 2008: http://www.jugmilano.it/vqwiki/jsp/Wiki?Meeting3Luglio2008&highlight=m2eclipse
OpenOffice.org non è solo la principale suite di applicazioni per l'ufficio completamente libera e basata su open standard (OpenDocument è standard ISO), ma può trasformarsi in una potente piattaforma per applicazioni document-based programmabile via Java.
In questa presentazione esploreremo le potenzialità del connubio fra OpenOffice.org e Java tramite alcuni esempi applicativi. In particolare vedremo la possibilità di eseguire script nei linguaggi basati su JVM come BeanShell e Jython, l'esecuzione remota da applicazioni Java esterne di funzioni di OpenOffice.org lanciato in modalità server, e i diversi punti di aggancio per estendere le funzionalità della suite dall'interno tramite componenti Java custom.
Vedremo infine la nuova applicazione Base presente in OpenOffice.org 2.0 per l'accesso a sorgenti dati JDBC.
Una panoramica sulle diverse possibilità offerte da Spring per applicazioni RIA realizzate in Flex: Spring sul server per l'implementazione di un backend con serializzazione nativa AMF3 con Spring BlazeDS integration, Spring sul client con Spring ActionScript e Spring come usato dallo streaming server opensource Red5 per la realizzazione di applicazioni video. Presentazione tenuta allo Spring Framework Meeting di Settembre 2009 a Cagliari.
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
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