SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
Rich Internet Application
Marcello Teodori
Java User Group Milano
http://www.jugmilano.it
marcello.teodori@jugmilano.it




                                Java Conference 2005
Agenda
●   Due parole sul Java User Group Milano
●   Che cos'è una Rich Internet Application?
●   Modello di sviluppo per le RIA
●   RIA dal browser al desktop
●   Definizione GUI in XML
●   Toolkit per RIA
●   La rivincita del browser: Gmail e XMLHttpRequest
●   Evoluzioni nel mondo Java: JSF, JNDC e JDIC
●   Mobile RIA
●   Un esempio: la ricerca libri nella biblioteca del JUG Milano



                                                Java Conference 2005   2
Due parole sul JUG Milano
●   Il JUG Milano nasce il 18 Dicembre 2002 ad opera di
    Filippo Diotalevi e dopo un periodo di incubazione ne
    esce il primo meeting ufficiale il 16 Dicembre 2003
●   Lo scopo è quello di favorire l'interscambio di
    conoscenze informatiche e creare un punto di
    riferimento nel panorama degli sviluppatori Java locale
●   La partecipazione alle attività è del tutto gratuita e
    libera
●   Il JUG gestisce una serie di attività tra cui meeting con
    cadenza regolare, scrittura di articoli, tutorial e
    recensioni libri sul nostro sito web, e partecipazione ad
    avvenimenti di rilevanza tecnologica

                                            Java Conference 2005   3
Il Nostro Curriculum
●   Una mailing list su Yahoo! Groups di 150 iscritti
●   Un Wiki web site: http://www.jugmilano.it/
●   10 meeting al nostro attivo
●   Partecipazione all'Italian Agile Day 2004, alle
    edizioni 2003 e 2004 del Webbit, oggi in Java
    Conference
●   Collaborazione con il Politecnico di Milano (sede di
    Como): seminari su AOP
●   Collaborazione con Manning, Apress ed O'Reilly
●   Progetto su Java.net: https://jugmilano.dev.java.net
●   Facciamo parte della Top 50 dei JUG mondiali!
                                        Java Conference 2005   4
Definizione di Rich Internet Application
   "web applications have extended the reach of enterprises to customers,
      offering anywhere and anytime access. However, this has been at the
     expense of the overall user-experience, which is diminished by delivery
                            through the web browser"
                        Steven Webster e Alistair McLeod, autori del libro Flex Integration with J2EE
                                             http://www.theserverside.com/articles/article.tss?l=Flex
  => un nuovo tipo di web application che ne superi i limiti?
  Caratteristiche:
  ● web deployment
  ● logica applicativa suddivisa fra client (desktop-based) e server (browser-
    based)
  ● interazione immediata senza percezione di un roundtrip sul server
  ● flussi di esecuzione multipli
  ● accesso a rich content: audio/video



                                                                       Java Conference 2005             5
Applet?
...ma non facevano già tutto questo le Applet, ossia la prima
   incarnazione di Java per il pubblico, nel lontano 1995?
          http://java.sun.com/features/1998/05/birthday.html

Non esattamente...
● le applet erano proposte come generico contenuto dinamico
● difficoltà di realizzazione in AWT di interfacce grafiche complesse
● lentezza e crash browser
● "the JVM wars"
● tendenza degli sviluppatori a spedire applicazioni intere sul browser
  come applet




                                                  Java Conference 2005    6
Fattori abilitanti
Cosa è cambiato da allora, da poter decretare il
successo delle RIA, dopo il fallimento delle Applet?
● broadband: possibilità di download rapido di runtime e

  applicazione
● evoluzione tecnologica del browser

● potenza di calcolo per ridurre startup time del runtime

● modello J2EE già consolidato per le applicazioni web

● accesso a logica distribuita via web services

● disponibilità di un parser XML già presente sul runtime




                                          Java Conference 2005   7
Non tutte le RIA sono uguali...
                         Dal weblog di David Temkin, CTO Laszlo:
                       http://www.davidtemkin.com/mtarchive/000003.html
●   Unix-style RIA: Gmail is a great example of this. It's essentially text-only, with
    keyboard equivalents. It's reminiscent of Pine or vi, particularly with regard to how
    keyboard shortcuts work (...)
●   Windows-style RIA: Oddpost, another rich Web mail service, is a perfect example of
    this -- a Windows-style UI delivered into a Web browser. This can be done with
    DHTML heroics (as is Oddpost), or with Java (...) The look and feel of these
    applications is essentially a duplicate of the "classic" Windows desktop look and feel.
    Users new to these applications can lean on their familiarity with Outlook and similar
    applications, but they don't reflect what we've learned on the Web about UI -- very
    little linking, very little contextual "content" or media.
●   Mac-style RIA: Here I'm talking about the visually differentiated, smooth animated
    interaction often associated with Mac OS X (or with Flash), but used in the context of
    a Web application. These applications as a category represent the attempt to blend
    the best of the Web with the best of applications (...)



                                                                Java Conference 2005          8
Architettura di Riferimento




                    Java Conference 2005   9
Client Runtime
La scelta del runtime:
● JVM
  Noi del JUG ne sappiamo qualcosa...
● Mozilla XRE http://www.mozilla.org/projects/xul/xre.html
  Toolkit per realizzare applicazioni Cross-Platform della Mozilla
  Foundation
● Flash VM
  Browser plugin per animazioni vettoriali, via via arrichitosi nelle
  versioni recenti di funzionalità applicative.
● .NET CLR
  In modo un pò sbrigativo, clone della JVM con enfasi sul
  supporto per diversi linguaggi di programmazione.



                                                 Java Conference 2005   10
Backend
Qual è il backend più adatto per le RIA? Va bene qualsiasi
soluzione, purchè esponga le proprie funzionalità in:
 ● XML over HTTP (ReST)

 ● SOAP

 ● formati proprietari in base al runtime scelto


    – Serialization Protocol ed RMI over HTTP per Java

   –   AMF per Flash

   => un primo passo potrebbe essere riciclare una
      webapp old-style in un backend RIA generando
      XML invece di HTML!


                                           Java Conference 2005   11
Dal browser al desktop
Problema: la cache del browser governa il deployment di
una RIA visualizzata nel browser
 => è necessario scaricare l'applicazione ogni volta
      che non sia più presente nella cache del browser
 Soluzione:
 ● JVM: Java WebStart

 ● Flash VM: Central

 ● XRE: XPI (Cross Platform Installer)

 ● .NET: ClickOnce/SmartClient




                                      Java Conference 2005   12
XML User Interface Language
Come sviluppare rapidamente interfacce
grafiche per RIA?
● le definisco tramite un documento XUL (XML

  User Interface Language)
● XUL: implementazione Mozilla => termine

  generico
● XUL obbliga ad usare il paradigma MVC

● possibilità di caricare dinamicamente a runtime

  altri documenti XUL da web

                                  Java Conference 2005   13
Esempio XUL (OpenLaszlo)
<canvas width="600">
    <view resource="cd_cover.jpg"/>
    <view name="player" resource="song.mp3"/>
    <view>
        <button onclick="player.setAttribute('play', false)">Pause</button>
        <button>Play
            <method event="onclick">
                  player.setAttribute("play", true);
            </method>
        </button>
        <simplelayout axis="x" spacing="2"/>
    </view>
    <simplelayout axis="y" spacing="4"/>
</canvas>




                                                        Java Conference 2005   14
XML Binding Language
Come si definisce l'interazione con una GUI
definita in XUL?
=> con XBL (XML Binding Language) che
  collega view e controller di una RIA
● XBL aggiunge al file XUL la possibilità di gestire

  gli eventi generati dalla GUI, associando gli
  event handler corrispondenti
● spesso, come nell'esempio appena visto, il

  binding è già nel documento XUL


                                    Java Conference 2005   15
Mozilla XUL
L'implementazione originale della Mozilla Foundation.
● Runtime: XRE (Mozilla 1.0+, Firefox, Thunderbird...)

● GUI Builder: XUL Maker http://xulmaker.mozdev.org/

● Documentazione: http://books.mozdev.org/

● Skin: CSS

● Binding: JavaScript

● Desktop: solo come Estensione o lanciando da CLI il

   documento mozilla -chrome chrome://calendar.xul
● Esempi: Mozilla Calendar, Amazon Browser

   http://www.faser.net/mab/


                                         Java Conference 2005   16
Thinlet
                                         http://www.thinlet.com/

Implementazione XUL in Java senza uso di Swing.
●  Licenza: LGPL
●  Runtime: JVM con supporto JDK 1.1+, Personal Java, J2ME PBP
●  GUI Builder:
    – ThinG, disponibile anche come plugin per NetBeans 4.1 (GPL)
         http://thing.sourceforge.net/

     –   Thedore (Commerciale, con demo limitata disponibile via JavaWS)
         http://www.carlsbadcubes.com/theodore/

●   Desktop Deployment: Java Web Start
●   Skin: modifico direttamente le proprietà dei componenti
●   Markup Language: XUL
●   Binding: carico esplicitamente da codice Java i documenti XUL ed associo le azioni
●   Esempio: Blogmento http://www.blogmento.com
●   Solo 30kb di dimensioni libreria


                                                                   Java Conference 2005   17
Macromedia Flex
                    http://www.macromedia.com/software/flex/
J2EE framework per applicazioni RIA.
●  Licenza: Commerciale, costi sul sito
●  Runtime: Flash 7+
●  IDE:
    – Flex Plug-in for WebSphere Studio, non più disponibile, ma...
       ...di recente Macromedia è entrata nella Eclipse Foundation!
         http://www.alphaworks.ibm.com/tech/wsadflex

     –   FlexBuilder (bundled/solo Windows)
         http://www.macromedia.com/software/flex/flexbuilder

●   Markup: MXML
●   Skin: CSS
●   Binding: ActionScript
●   Desktop Deployment: Central
●   integrazione con download e streaming audio/video
    via Flash Communication Server (solo formato FLV – Flash Video)
●   componenti di charting eccellenti

                                                               Java Conference 2005   18
OpenLaszlo
J2EE framework per applicazioni RIA.
● http://www.openlaszlo.org/
● Licenza: CPL 1.0
● Runtime: Flash 6+
● GUI Builder: IBM IDE Lazlo per Eclipse (AlphaWorks Trial License)
  http://alphaworks.ibm.com/tech/ide4laszlo
● Skin: CSS
● Markup: LZX
● Binding: JavaScript
● Desktop Deployment: no
● server-less deployment dei file SWF generati nella versione 3.0 (SOLO)
● supporta solo SWF come formato di rich content




                                                     Java Conference 2005   19
Session Gateway in
            OpenLaszlo e Flex
Problema: come accedo a server di backend diversi
dall'originating server, ossia da quello dal quale ho scaricato
l'applicazione RIA?
      In Java posso bucare la sandbox firmando
      l'applicazione, ma in Flash?
Soluzione: I framework OpenLaszlo e Flex si comportano da
HTTP Proxy, collegandosi ai server di backend di cui
l'applicazione RIA ha bisogno in sua vece e rigirando ad essa
l'output. É loro compito mantenere sincronizzata la sessione
J2EE con le sessioni presso i server di backend.


                                             Java Conference 2005   20
Altre soluzioni
●   XAML per .NET
●   SwiXML per Swing
    http://www.swixml.org/
●   RIB per SWT e Swing
    http://www.alphaworks.ibm.com/tech/rib
●   Canoo UltraLightClient
    http://www.canoo.com/ulc/
     –   Half-Object Pattern
     –   Visual Editor Eclipse plugin
         http://www.canoo.com/ulc/products/ulcvisualeditor.html




                                                         Java Conference 2005   21
La rivincita del browser:
          Gmail e XMLHttpRequest
●   Cos'è XMLHttpRequest?
    Un oggetto JavaScript che permette di inviare richieste HTTP in
    modo asincrono rispetto a quanto visualizzato dal browser
●   Dove viene utilizzato?
     – Gmail: visualizzazione messaggio, autocompletamento indirizzi

     –   Google Suggest: ricerca incrementale
●   Quali browser lo supportano: IE 5.5, Mozilla/Firefox 1.0, Safari 1.2,
    preview Opera
●   Problematiche?
    Le solite di JavaScript, piccole differenze di implementazione
    richiedono codice con trucchi vari per avere un comportamento
    uniforme fra i diversi browser

                                                     Java Conference 2005   22
Novità J2EE: JSF
JSF (Java Server Faces) porta sul Web Container J2EE un modello a
componenti ed eventi, lo stesso visto per RIA.
http://www.onjava.com/pub/a/onjava/2004/06/09/jsf.html
 ●   ViewHandler
     Effettua una object realization del modello della GUI a partire dalla sua
     definizione. La reference implementation fornisce un ViewHandler basato su
     TagLib JSP, che faciliti la migrazione a questa nuova tecnologia ed un
     prototipo di implementazione più interessante basato su definizioni in
     documenti XUL che NON richiede JSP
 ●   RenderKit
     Effettua il rendering della definizione della GUI verso un'implementazione
     specifica. La reference implementation di JSF fornisce un RenderKit per
     HTML, potenzialmente sarebbe possibile costruirne anche uno adhoc per un
     Applet Java o applicazioni Java WebStart, XUL, Flash, paradossalmente
     anche .NET, eventualmente utilizzando i toolkit per RIA appena visti.



                                                         Java Conference 2005     23
Novità J2SE: jdesktop.org
●  Una serie di progetti open source su java.net
   con focus sul desktop (finalmente!)
 ● Possibile integrazione nella prossima versione

   Mustang 6.0 della JVM
 ● ancora mooooolto immaturi

 ● alcune parti native, non tutti gli OS sono

   supportati
=> potrebbero facilitare lo sviluppo di RIA su
runtime Java, vediamo in che modo...


                                   Java Conference 2005   24
JDesktop Network Components (JNDC)
 ● https://jdnc.dev.java.net/
 ● componenti Swing evoluti con data binding

   locale e remoto
 ● definizione GUI in XML con un proprio markup

   derivato da XUL
 ● gestione di una sessione di autenticazione

 ● funzionalità base già pronte per applicazioni

   document-based
=> c'è un esempio di Rich Text Editor con
ricerca scritto solo in XML!
                                  Java Conference 2005   25
JDesktop Integration Components (JDIC)
  ● https://jdic.dev.java.net/
  ● Un layer multi-platform per accedere a

    funzionalità native di integrazione con il
    desktop
  ● associazione fra documenti ed applicazioni

  ● area di notifica

  ● accesso a browser e mailer predefiniti


  => maggiore interazione fra RIA e desktop!


                                  Java Conference 2005   26
Mobile RIA
Opzioni per applicazioni in ambito Mobile:
● WAP, cHTML e xHTML Mobile Profile

● J2ME

    –   JNLP => JAD
    –   Java Web Start => JAM (Java Application
        Manager)
●Flash Player
=> riutilizzo lo stesso modello?


                                       Java Conference 2005   27
Situazione Mobile Client
●   Browser
    –   Supporto XUL in Mozilla Minimo?
●   Flash Player
    –   su device al momento solo versioni 4 e 5
    –   evoluzione offerta Macromedia verso settore Mobile
●   J2ME
    –   pronta per interagire con backend RIA
    –   supporto MIDP per Thinlet rimosso
●   SVG

                                          Java Conference 2005   28
Riferimenti
●   Java GUI Alternatives
    http://leepoint.net/notes-java/30GUI/95misc/80gui-generator.html
●   XULPlanet
    http://xulplanet.com/
●   XMLHttpRequest and LiveSearch
    http://blog4.bitflux.ch/wiki/LiveSearch
●   Rich Clients Portal
    http://www.richclients.org
●   Migrazione da applicazioni Struts a RIA con Flex
    http://www.macromedia.com/devnet/flex/articles/struts.html




                                                       Java Conference 2005   29

Contenu connexe

Tendances

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
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETStefano Ottaviani
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailDotNetMarche
 
Applicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiApplicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiMarco Breveglieri
 
Progettazione e sviluppo di applicazioni web di nuova generazione con AJAX
Progettazione e sviluppo di applicazioni web di nuova generazione con AJAXProgettazione e sviluppo di applicazioni web di nuova generazione con AJAX
Progettazione e sviluppo di applicazioni web di nuova generazione con AJAXLorenzo Cavina
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web Appdotnetcode
 
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, PiacenzaSviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, PiacenzaMarco Breveglieri
 
Webkit presentazione ufficiale
Webkit presentazione ufficialeWebkit presentazione ufficiale
Webkit presentazione ufficialeintoinside
 
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Antonio Gallo
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web Appdotnetcode
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAXTommaso Torti
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webLuca Milan
 
Introducing the wpXtreme ecosystem
Introducing the wpXtreme ecosystemIntroducing the wpXtreme ecosystem
Introducing the wpXtreme ecosystemGGDBologna
 
Javaday 2009 php e java
Javaday 2009 php e javaJavaday 2009 php e java
Javaday 2009 php e javaMatteo Baccan
 
Content Management professionale con Python nel 2012
Content Management professionale con Python nel 2012Content Management professionale con Python nel 2012
Content Management professionale con Python nel 2012Maurizio Delmonte
 

Tendances (20)

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
 
Spring e Flex
Spring e FlexSpring e Flex
Spring e Flex
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NET
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle Monorail
 
Applicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiApplicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e Delphi
 
Progettazione e sviluppo di applicazioni web di nuova generazione con AJAX
Progettazione e sviluppo di applicazioni web di nuova generazione con AJAXProgettazione e sviluppo di applicazioni web di nuova generazione con AJAX
Progettazione e sviluppo di applicazioni web di nuova generazione con AJAX
 
Link. javascript ajax
  Link. javascript ajax  Link. javascript ajax
Link. javascript ajax
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
 
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, PiacenzaSviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
 
Webkit presentazione ufficiale
Webkit presentazione ufficialeWebkit presentazione ufficiale
Webkit presentazione ufficiale
 
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
 
Portofino per Jug Padova
Portofino per Jug PadovaPortofino per Jug Padova
Portofino per Jug Padova
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAX
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
 
Introducing the wpXtreme ecosystem
Introducing the wpXtreme ecosystemIntroducing the wpXtreme ecosystem
Introducing the wpXtreme ecosystem
 
Javaday 2009 php e java
Javaday 2009 php e javaJavaday 2009 php e java
Javaday 2009 php e java
 
MVC and Struts 1
MVC and Struts 1MVC and Struts 1
MVC and Struts 1
 
Content Management professionale con Python nel 2012
Content Management professionale con Python nel 2012Content Management professionale con Python nel 2012
Content Management professionale con Python nel 2012
 

En vedette (6)

2013 RAPAC Awards from AAR
2013 RAPAC Awards from AAR2013 RAPAC Awards from AAR
2013 RAPAC Awards from AAR
 
A One In A Billion Shot Mcs
A One In A Billion Shot McsA One In A Billion Shot Mcs
A One In A Billion Shot Mcs
 
Recursos Propios0
Recursos Propios0Recursos Propios0
Recursos Propios0
 
Dubai
DubaiDubai
Dubai
 
General introduction to Open Source
General introduction to Open SourceGeneral introduction to Open Source
General introduction to Open Source
 
Interacciones
InteraccionesInteracciones
Interacciones
 

Similaire à Rich Internet Application

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
 
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
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On RailsLuca Mearelli
 
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...EvolutionBook S.r.l.
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTfirenze-gtug
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld DevicesGWTcon
 
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013Massimo Caliman
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developerssparkfabrik
 
Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Giorgio Carpoca
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinFabio Cozzolino
 
Angular framework
Angular frameworkAngular framework
Angular frameworkLuca Modica
 
Esposizione RIA
Esposizione RIAEsposizione RIA
Esposizione RIAdiodorato
 

Similaire à Rich Internet Application (20)

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
 
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
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Html5
Html5Html5
Html5
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On Rails
 
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWT
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld Devices
 
App Engine + Python
App Engine + PythonApp Engine + Python
App Engine + Python
 
Presentazione tirocinio
Presentazione tirocinio Presentazione tirocinio
Presentazione tirocinio
 
Flash vs jQuery
Flash vs jQueryFlash vs jQuery
Flash vs jQuery
 
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developers
 
Mobile UI Design
Mobile UI DesignMobile UI Design
Mobile UI Design
 
Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3
 
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
 
Dominopoint meet the experts 2015 - XPages
Dominopoint   meet the experts 2015 - XPagesDominopoint   meet the experts 2015 - XPages
Dominopoint meet the experts 2015 - XPages
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
 
Angular framework
Angular frameworkAngular framework
Angular framework
 
Esposizione RIA
Esposizione RIAEsposizione RIA
Esposizione RIA
 

Plus 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
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsMarcello 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
 

Plus de Marcello Teodori (10)

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
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa Struts
 
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
 

Rich Internet Application

  • 1. Rich Internet Application Marcello Teodori Java User Group Milano http://www.jugmilano.it marcello.teodori@jugmilano.it Java Conference 2005
  • 2. Agenda ● Due parole sul Java User Group Milano ● Che cos'è una Rich Internet Application? ● Modello di sviluppo per le RIA ● RIA dal browser al desktop ● Definizione GUI in XML ● Toolkit per RIA ● La rivincita del browser: Gmail e XMLHttpRequest ● Evoluzioni nel mondo Java: JSF, JNDC e JDIC ● Mobile RIA ● Un esempio: la ricerca libri nella biblioteca del JUG Milano Java Conference 2005 2
  • 3. Due parole sul JUG Milano ● Il JUG Milano nasce il 18 Dicembre 2002 ad opera di Filippo Diotalevi e dopo un periodo di incubazione ne esce il primo meeting ufficiale il 16 Dicembre 2003 ● Lo scopo è quello di favorire l'interscambio di conoscenze informatiche e creare un punto di riferimento nel panorama degli sviluppatori Java locale ● La partecipazione alle attività è del tutto gratuita e libera ● Il JUG gestisce una serie di attività tra cui meeting con cadenza regolare, scrittura di articoli, tutorial e recensioni libri sul nostro sito web, e partecipazione ad avvenimenti di rilevanza tecnologica Java Conference 2005 3
  • 4. Il Nostro Curriculum ● Una mailing list su Yahoo! Groups di 150 iscritti ● Un Wiki web site: http://www.jugmilano.it/ ● 10 meeting al nostro attivo ● Partecipazione all'Italian Agile Day 2004, alle edizioni 2003 e 2004 del Webbit, oggi in Java Conference ● Collaborazione con il Politecnico di Milano (sede di Como): seminari su AOP ● Collaborazione con Manning, Apress ed O'Reilly ● Progetto su Java.net: https://jugmilano.dev.java.net ● Facciamo parte della Top 50 dei JUG mondiali! Java Conference 2005 4
  • 5. Definizione di Rich Internet Application "web applications have extended the reach of enterprises to customers, offering anywhere and anytime access. However, this has been at the expense of the overall user-experience, which is diminished by delivery through the web browser" Steven Webster e Alistair McLeod, autori del libro Flex Integration with J2EE http://www.theserverside.com/articles/article.tss?l=Flex => un nuovo tipo di web application che ne superi i limiti? Caratteristiche: ● web deployment ● logica applicativa suddivisa fra client (desktop-based) e server (browser- based) ● interazione immediata senza percezione di un roundtrip sul server ● flussi di esecuzione multipli ● accesso a rich content: audio/video Java Conference 2005 5
  • 6. Applet? ...ma non facevano già tutto questo le Applet, ossia la prima incarnazione di Java per il pubblico, nel lontano 1995? http://java.sun.com/features/1998/05/birthday.html Non esattamente... ● le applet erano proposte come generico contenuto dinamico ● difficoltà di realizzazione in AWT di interfacce grafiche complesse ● lentezza e crash browser ● "the JVM wars" ● tendenza degli sviluppatori a spedire applicazioni intere sul browser come applet Java Conference 2005 6
  • 7. Fattori abilitanti Cosa è cambiato da allora, da poter decretare il successo delle RIA, dopo il fallimento delle Applet? ● broadband: possibilità di download rapido di runtime e applicazione ● evoluzione tecnologica del browser ● potenza di calcolo per ridurre startup time del runtime ● modello J2EE già consolidato per le applicazioni web ● accesso a logica distribuita via web services ● disponibilità di un parser XML già presente sul runtime Java Conference 2005 7
  • 8. Non tutte le RIA sono uguali... Dal weblog di David Temkin, CTO Laszlo: http://www.davidtemkin.com/mtarchive/000003.html ● Unix-style RIA: Gmail is a great example of this. It's essentially text-only, with keyboard equivalents. It's reminiscent of Pine or vi, particularly with regard to how keyboard shortcuts work (...) ● Windows-style RIA: Oddpost, another rich Web mail service, is a perfect example of this -- a Windows-style UI delivered into a Web browser. This can be done with DHTML heroics (as is Oddpost), or with Java (...) The look and feel of these applications is essentially a duplicate of the "classic" Windows desktop look and feel. Users new to these applications can lean on their familiarity with Outlook and similar applications, but they don't reflect what we've learned on the Web about UI -- very little linking, very little contextual "content" or media. ● Mac-style RIA: Here I'm talking about the visually differentiated, smooth animated interaction often associated with Mac OS X (or with Flash), but used in the context of a Web application. These applications as a category represent the attempt to blend the best of the Web with the best of applications (...) Java Conference 2005 8
  • 9. Architettura di Riferimento Java Conference 2005 9
  • 10. Client Runtime La scelta del runtime: ● JVM Noi del JUG ne sappiamo qualcosa... ● Mozilla XRE http://www.mozilla.org/projects/xul/xre.html Toolkit per realizzare applicazioni Cross-Platform della Mozilla Foundation ● Flash VM Browser plugin per animazioni vettoriali, via via arrichitosi nelle versioni recenti di funzionalità applicative. ● .NET CLR In modo un pò sbrigativo, clone della JVM con enfasi sul supporto per diversi linguaggi di programmazione. Java Conference 2005 10
  • 11. Backend Qual è il backend più adatto per le RIA? Va bene qualsiasi soluzione, purchè esponga le proprie funzionalità in: ● XML over HTTP (ReST) ● SOAP ● formati proprietari in base al runtime scelto – Serialization Protocol ed RMI over HTTP per Java – AMF per Flash => un primo passo potrebbe essere riciclare una webapp old-style in un backend RIA generando XML invece di HTML! Java Conference 2005 11
  • 12. Dal browser al desktop Problema: la cache del browser governa il deployment di una RIA visualizzata nel browser => è necessario scaricare l'applicazione ogni volta che non sia più presente nella cache del browser Soluzione: ● JVM: Java WebStart ● Flash VM: Central ● XRE: XPI (Cross Platform Installer) ● .NET: ClickOnce/SmartClient Java Conference 2005 12
  • 13. XML User Interface Language Come sviluppare rapidamente interfacce grafiche per RIA? ● le definisco tramite un documento XUL (XML User Interface Language) ● XUL: implementazione Mozilla => termine generico ● XUL obbliga ad usare il paradigma MVC ● possibilità di caricare dinamicamente a runtime altri documenti XUL da web Java Conference 2005 13
  • 14. Esempio XUL (OpenLaszlo) <canvas width="600"> <view resource="cd_cover.jpg"/> <view name="player" resource="song.mp3"/> <view> <button onclick="player.setAttribute('play', false)">Pause</button> <button>Play <method event="onclick"> player.setAttribute("play", true); </method> </button> <simplelayout axis="x" spacing="2"/> </view> <simplelayout axis="y" spacing="4"/> </canvas> Java Conference 2005 14
  • 15. XML Binding Language Come si definisce l'interazione con una GUI definita in XUL? => con XBL (XML Binding Language) che collega view e controller di una RIA ● XBL aggiunge al file XUL la possibilità di gestire gli eventi generati dalla GUI, associando gli event handler corrispondenti ● spesso, come nell'esempio appena visto, il binding è già nel documento XUL Java Conference 2005 15
  • 16. Mozilla XUL L'implementazione originale della Mozilla Foundation. ● Runtime: XRE (Mozilla 1.0+, Firefox, Thunderbird...) ● GUI Builder: XUL Maker http://xulmaker.mozdev.org/ ● Documentazione: http://books.mozdev.org/ ● Skin: CSS ● Binding: JavaScript ● Desktop: solo come Estensione o lanciando da CLI il documento mozilla -chrome chrome://calendar.xul ● Esempi: Mozilla Calendar, Amazon Browser http://www.faser.net/mab/ Java Conference 2005 16
  • 17. Thinlet http://www.thinlet.com/ Implementazione XUL in Java senza uso di Swing. ● Licenza: LGPL ● Runtime: JVM con supporto JDK 1.1+, Personal Java, J2ME PBP ● GUI Builder: – ThinG, disponibile anche come plugin per NetBeans 4.1 (GPL) http://thing.sourceforge.net/ – Thedore (Commerciale, con demo limitata disponibile via JavaWS) http://www.carlsbadcubes.com/theodore/ ● Desktop Deployment: Java Web Start ● Skin: modifico direttamente le proprietà dei componenti ● Markup Language: XUL ● Binding: carico esplicitamente da codice Java i documenti XUL ed associo le azioni ● Esempio: Blogmento http://www.blogmento.com ● Solo 30kb di dimensioni libreria Java Conference 2005 17
  • 18. Macromedia Flex http://www.macromedia.com/software/flex/ J2EE framework per applicazioni RIA. ● Licenza: Commerciale, costi sul sito ● Runtime: Flash 7+ ● IDE: – Flex Plug-in for WebSphere Studio, non più disponibile, ma... ...di recente Macromedia è entrata nella Eclipse Foundation! http://www.alphaworks.ibm.com/tech/wsadflex – FlexBuilder (bundled/solo Windows) http://www.macromedia.com/software/flex/flexbuilder ● Markup: MXML ● Skin: CSS ● Binding: ActionScript ● Desktop Deployment: Central ● integrazione con download e streaming audio/video via Flash Communication Server (solo formato FLV – Flash Video) ● componenti di charting eccellenti Java Conference 2005 18
  • 19. OpenLaszlo J2EE framework per applicazioni RIA. ● http://www.openlaszlo.org/ ● Licenza: CPL 1.0 ● Runtime: Flash 6+ ● GUI Builder: IBM IDE Lazlo per Eclipse (AlphaWorks Trial License) http://alphaworks.ibm.com/tech/ide4laszlo ● Skin: CSS ● Markup: LZX ● Binding: JavaScript ● Desktop Deployment: no ● server-less deployment dei file SWF generati nella versione 3.0 (SOLO) ● supporta solo SWF come formato di rich content Java Conference 2005 19
  • 20. Session Gateway in OpenLaszlo e Flex Problema: come accedo a server di backend diversi dall'originating server, ossia da quello dal quale ho scaricato l'applicazione RIA? In Java posso bucare la sandbox firmando l'applicazione, ma in Flash? Soluzione: I framework OpenLaszlo e Flex si comportano da HTTP Proxy, collegandosi ai server di backend di cui l'applicazione RIA ha bisogno in sua vece e rigirando ad essa l'output. É loro compito mantenere sincronizzata la sessione J2EE con le sessioni presso i server di backend. Java Conference 2005 20
  • 21. Altre soluzioni ● XAML per .NET ● SwiXML per Swing http://www.swixml.org/ ● RIB per SWT e Swing http://www.alphaworks.ibm.com/tech/rib ● Canoo UltraLightClient http://www.canoo.com/ulc/ – Half-Object Pattern – Visual Editor Eclipse plugin http://www.canoo.com/ulc/products/ulcvisualeditor.html Java Conference 2005 21
  • 22. La rivincita del browser: Gmail e XMLHttpRequest ● Cos'è XMLHttpRequest? Un oggetto JavaScript che permette di inviare richieste HTTP in modo asincrono rispetto a quanto visualizzato dal browser ● Dove viene utilizzato? – Gmail: visualizzazione messaggio, autocompletamento indirizzi – Google Suggest: ricerca incrementale ● Quali browser lo supportano: IE 5.5, Mozilla/Firefox 1.0, Safari 1.2, preview Opera ● Problematiche? Le solite di JavaScript, piccole differenze di implementazione richiedono codice con trucchi vari per avere un comportamento uniforme fra i diversi browser Java Conference 2005 22
  • 23. Novità J2EE: JSF JSF (Java Server Faces) porta sul Web Container J2EE un modello a componenti ed eventi, lo stesso visto per RIA. http://www.onjava.com/pub/a/onjava/2004/06/09/jsf.html ● ViewHandler Effettua una object realization del modello della GUI a partire dalla sua definizione. La reference implementation fornisce un ViewHandler basato su TagLib JSP, che faciliti la migrazione a questa nuova tecnologia ed un prototipo di implementazione più interessante basato su definizioni in documenti XUL che NON richiede JSP ● RenderKit Effettua il rendering della definizione della GUI verso un'implementazione specifica. La reference implementation di JSF fornisce un RenderKit per HTML, potenzialmente sarebbe possibile costruirne anche uno adhoc per un Applet Java o applicazioni Java WebStart, XUL, Flash, paradossalmente anche .NET, eventualmente utilizzando i toolkit per RIA appena visti. Java Conference 2005 23
  • 24. Novità J2SE: jdesktop.org ● Una serie di progetti open source su java.net con focus sul desktop (finalmente!) ● Possibile integrazione nella prossima versione Mustang 6.0 della JVM ● ancora mooooolto immaturi ● alcune parti native, non tutti gli OS sono supportati => potrebbero facilitare lo sviluppo di RIA su runtime Java, vediamo in che modo... Java Conference 2005 24
  • 25. JDesktop Network Components (JNDC) ● https://jdnc.dev.java.net/ ● componenti Swing evoluti con data binding locale e remoto ● definizione GUI in XML con un proprio markup derivato da XUL ● gestione di una sessione di autenticazione ● funzionalità base già pronte per applicazioni document-based => c'è un esempio di Rich Text Editor con ricerca scritto solo in XML! Java Conference 2005 25
  • 26. JDesktop Integration Components (JDIC) ● https://jdic.dev.java.net/ ● Un layer multi-platform per accedere a funzionalità native di integrazione con il desktop ● associazione fra documenti ed applicazioni ● area di notifica ● accesso a browser e mailer predefiniti => maggiore interazione fra RIA e desktop! Java Conference 2005 26
  • 27. Mobile RIA Opzioni per applicazioni in ambito Mobile: ● WAP, cHTML e xHTML Mobile Profile ● J2ME – JNLP => JAD – Java Web Start => JAM (Java Application Manager) ●Flash Player => riutilizzo lo stesso modello? Java Conference 2005 27
  • 28. Situazione Mobile Client ● Browser – Supporto XUL in Mozilla Minimo? ● Flash Player – su device al momento solo versioni 4 e 5 – evoluzione offerta Macromedia verso settore Mobile ● J2ME – pronta per interagire con backend RIA – supporto MIDP per Thinlet rimosso ● SVG Java Conference 2005 28
  • 29. Riferimenti ● Java GUI Alternatives http://leepoint.net/notes-java/30GUI/95misc/80gui-generator.html ● XULPlanet http://xulplanet.com/ ● XMLHttpRequest and LiveSearch http://blog4.bitflux.ch/wiki/LiveSearch ● Rich Clients Portal http://www.richclients.org ● Migrazione da applicazioni Struts a RIA con Flex http://www.macromedia.com/devnet/flex/articles/struts.html Java Conference 2005 29