Rich Internet Applications Maart 2008 Adelbert Groebbens Sectie Onderzoek
Overzicht RIA De concepten en mogelijkheden van RIA Overzicht technologieën en benaderingen AJAX GWT Flex & AIR Swing + JavaFX Silverlight Samenvatting en aanbevelingen 2
Wat is RIA? user experience & usability client-side: installatie & upgrade & cross-platform het internet als platform, vol client-devices (PC,mobile, ) 3
Traditionele webapplicaties zijn pagina-gebaseerd (1/2) 0 1st page Presentation Logic Business Logic services, databases, data sources: 1 web 2 click browser client request response Data application server db xml over http WS db 4 render HTML Engine 3 page - state - logic - processing - object modellen - validatie - controllers 4
Traditionele webapplicaties zijn pagina-gebaseerd (2/2) Sorteer tabel contextverlies Bekijk detail item contextverlies Keer terug pagina (data) weer opladen 5
RIA is 'partial-page refresh': één scherm met componenten (1/2) client server 2 3 Remoting details here item selectie bvb. entry 1 entry 2 entry 3 1 code RIA engine vb. browser, JVM, Flash player plugin, 6
RIA is 'partial-page refresh': één scherm met componenten (2/2) Niet wachten op een request Betere responsitiveit Widgets / effecten Lokale validatie In In context Bookmark naar tab blad 7
Pagina's minder geschikt voor applicaties Een traditionele webapplicatie webpagina's: -- wizard (formulieren) -- context verlies ( ( data verlies?) verlies?) <submit> <page> <page> <page> <page> <page> <page> <page> <page> <page> <page> één één scherm: -- gerelateerde taken taken -- gerelateerde informatie -- meer meer controle door door de de gebruiker Een doordacht ontworpen RIA <data> <data> <app.> <submit> <data> 8
Responsiviteit en beweging in de user interface Informatie in in context Ook bvb. video help in in context. Customer self-service SZ werknemer neemt applicatie van burger tijdelijk over FlexStore http://examples.adobe.com/flex2/inproduct/sdk/flexstore/flexstore.html 9
Frequentere 'data remoting' tussen client en server autocompletion Google Suggest Toepassing: bij bij bepaalde inputvelden in in formulieren http://www.google.com/webhp?complete=1 10
Allerlei interactie verbeteringen Tijdelijke feedback in in context Google GMail Edit in in screen Dynamische formulieren Datapush http://mail.google.com/mail/#inbox 11
Data push (notification) Server data push. client quote1= 30 quote2= 25 quote3= 19 zie zie ook: Google GMail 1. Poll & answer server 2. Persistent connection Toepassing: realtime onderling informatie uitwisselen tussen enkele clients. browser 1 client server browser 2 client Java Swing desktop app 3 12
Desktop integratie en offline Ebay Ebay Desktop Rich Desktop Application (RDA) Offline Synchroniseer wanneer terug online. Impact op op ontwerp! http://desktop.ebay.com/ 13
Impact applicatieontwikkeling: meer User Experience (UX) design & agile Users Doelen Taken Content Succesvolle interactie met een RIA Gevolgen nieuwe mogelijkheden & geavanceerde UI: Analisten & UX designers scenario's (flows) annoteren bij wireframes Users nieuwe mentaliteit Nood aan meer user experience designers. Laat dit niet zomaar over aan developers! Proces: nood aan 'close agile collaboration'. User + Visual/UX designer + Developer + Analist 14
Client Fat Thin Rich UI Execution Environment Presentation Logic RIA (Rich) Presentation Logic Klassieke web app. (non-rich) Browser HTML Engine Business Logic Remoting Pages Server Presentation Logic Data Business Logic Data Business Logic Data Server Server integratie op op de de client: WOA, SOFEA, SOA, 15
Voordelen van RIA t.o.v. traditioneel web User productiviteit & user experience Betere usability, interactie & responsiviteit Functioneel meer geavanceerde mogelijkheden Complexere UI voor complexere taken (visualisatie, ) Offline Notificatie van externe 'events' (data push) Desktop integratie Video Technisch performantie, responsiviteit, robuustheid Dankzij lokale processing op de client Meer natuurlijke fit voor applicaties RIA als front-end voor SOA 16
Overzicht RIA De concepten en mogelijkheden van RIA Overzicht technologieën en benaderingen AJAX GWT Flex & AIR Swing + JavaFX Silverlight Samenvatting en aanbevelingen 17
Overzicht benaderingen Trad. Web 'enhancement' RIA AJAX RWA RDA NP P 18
Trad. Web 'enhancement' RIA AJAX RWA RDA NP P De eerste hype: de AJAX techniek AJAX = Asynchronous JavaScript And XML
Basiscomponenten AJAX bestaan al heel lang (1998) client = browser HTML CSS HTTP Javascript engine DOM, widget events Browser API's.js engine (Javascript) 'XMLHttpRequest' 'convergentie' (2005) hype 20
Asynchrone communicatie met het XMLHttpRequest javascript object (params) event 21
AJAX response formaten: XML <data> <location lon="13.4156" lat="52.5206"/> </data> parsing: XML (DOM) var lon = datanode.firstchild.getattribute( lon ); parsing: XML XML (E4X) ( ( Javascript 4.0 4.0 & Actionscript Actionscript 3.0) 3.0) var var data = xml xml result var var lon lon = data.location.@lon; 22
AJAX response formaten: JSON var data = { } }; location: { lon: 13.4156, lat: 52.5206 JavaScript Object Notation parsing: javascript interpreter eval(json_received_data); var lon = data.location.lon; 23
AJAX response formaten: HTML <p> Number of items found: 13 </p> <table> <thead> <tr> <td>name</td> <td>quantity</td> <td>price</td> </tr> </thead> <tbody> partial page update: HTML DOM update: 24
Enkele populaire AJAX toolkits Toolkit Beschrijving Feature DWR Dojo Ext JS (fork van de Yahoo UI library) AJAXTags Prototype Remoting calls van Javascript client naar Java op de server. Uitgebreide toolkit (widgets, i18n, communicatie, ). Ook package en build system. Rich UI widgets, effecten, events, DOM manipulatie, asynchrone communicatie, JSP tag library met AJAX functionaliteit (autocomplete, ). Classes, inheritance, in javascript. Sterk in remoting naar Java, maar ook enkel dat. Gesupporteerd door een foundation (IBM, Sun, ). Beste UI widgets. Eenvoudige AJAX enhancement van JSP, Struts, Veel gebruikt als basis. Scriptaculous Effecten, animatie. 25
Ext JS 2.0 Rijke widgets http://extjs.com/deploy/dev/examples/grid/grouping.html 26
AJAX enhancements: handigere formulieren & validatie Lokale validatie Server validatie Firebug debugger https://www.electrabel.be/protected/impact/public/myhome/selfregistration.do#section:providepersonalinformation 27
Sterke punten AJAX Gebaseerd op gevestigde waarden. HTML, CSS, DOM, web, Geen plugin nodig. Veel toolkits beschikbaar (open source). Sinds lang. Reeds veel evolutie. 'AJAX enhancements' aan bestaande webapplicaties. Veel platformen op basis van Javascript APIs. Google, MySpace, IBM Project Zero, 28
Zwakke punten AJAX Browser verschillen en incompatibiliteiten. IE6, IE7, IE8, Firefox 2.0, Firefox 3.0, Safari, Opera, Complexe en onproductieve omgeving voor grotere applicaties. Nodig om goed de browser en.js omgeving te kennen. IDE tools niet op niveau zoals bij Java. Veel toolkits beschikbaar (open source). Moeilijke keuze. Combineren: meer risico's? Te sterk evoluerend. Zelfde security issues zoals bij traditionele web applicaties. Remoting met Web Services: niet out-of-the-box. 29
Trad. Web 'enhancement' RIA AJAX RWA RDA NP P Google Web Toolkit (GWT)
Waarom GWT? AJAX pain Javascript compile - geoptimaliseerd - size - performance - startup - voor elke browser - Java Software Engineering - develop - test -debug - refactor -IDE - productivity - code analysis - build - doc Doel: "AJAX with lower risk." 31
GWT: structuur, architectuur Development (Eclipse, Maven, ) client UI server-side 'client-deel Java' Javascript = subset Java 1.4 & GWT API compile Java 1.4,1.5,1.6, finale deployment browser GWT 'host' browser GWT 'host' Tomcat servlet container.js Client Client GWT-RPC Server Nodige.js convention MyServiceInterface AsyncCallback MyServiceInterface <<servlet>> MyServiceImplement 32
"GDF-Web prototype" door Smals gebouwd met GWT 1.4 + GWT-Ext 2.0 Dit kan dus op op een Javascript platform, dankzij GWT!!!! At At runtime: gegenereerde complexe user interface op op basis van een formulier model. Op de de server: model processing. Bvb. on-the-fly formulier validatie. 33
Sterke punten GWT AJAX, maar zonder de nadelen. Java skills zijn herbruikbaar (niet de libraries!) Client (javascript browser) Java Server (J2EE) Java Leunt sterk aan bij Java Swing (widgets, listeners, ). Optimalisatie. Snelle startup. Code-generatie. Gratis beschikbaar en sterke community (Google). 34
Zwakke punten GWT Het is ontwikkelen voor een onderliggend javascript platform. GWT = Toolkit = basis Toe te voegen: 'more richness', animatie, multimedia, vector-graphics, higher-level componenten, Zelf nog wat UI software design nodig. Zelf aflijnen hoever je 'afwijkt'. GWT 1.4: Java client-deel nog niet Java 1.5 Bij finale deployment toch nog testen op alle browsers. Geen declaratieve UI taal. 35
Trad. Web 'enhancement' RIA AJAX RWA RDA NP P Adobe Flex
Flex, Actionscript (.as), MXML en Flash Player VM client browser server Development (Eclipse, FlexBuilder) Flash v9 (AVM2).swf Flex framework en libraries.mxml generate compile.as.as.swf 37
Remoting met Flex en de extra Data Services client browser Flash v9 HTTP AMF3 server servlet / J2EE - Blaze DS.java data services, RTMP, - Livecycle DS 38
Mogelijkheden van de Data Services Remoting Data synchronisatie (data push) 39
Sterke punten Flex Eenvoudige, consistente en geconsolideerde omgeving. Designer (FlexBuilder), deploy, debug,.as,.mxml, Kracht en productivity. Databinding (syntax). E4X. Dynamic (scripting). Sterke UI componenten & framework. Charting. Video. Effecten. Data Services: goede ondersteuning voor data remoting & synchronisatie. RTMP channel. Community uitgebreid. 40
Zwakke punten Flex Flash Player v9 plugin nodig op de client browsers. FlexBuilder IDE staat nog niet zo ver als Eclipse voor Java en is niet gratis. Kost (optioneel) van de Lifecycle Data Services. Niet 100% open source. Livecycle DS, FlexBuilder, RTMP en Flash player. 41
Trad. Web 'enhancement' RIA AJAX RWA RDA NP P Adobe AIR
Rich Desktop Application met AIR: offline mogelijkheid & desktop integratie doel: AJAX & browser & web web AIR AIR geen geen algemene desktop runtime, wel wel snel snel te te installeren cross- platform runtime SQLite SQLite embedded W3C, AJAX OS OS (Windows, Mac Mac Linux pas pas na na de de 1.0 1.0 release) 43
AIR demo: zie eerder Ebay Ebay Desktop http://desktop.ebay.com/ 44
Trad. Web 'enhancement' RIA AJAX RWA RDA NP P Sun's Java Swing + JavaFX
JavaFX: waarom een declaratieve taal 'on top of' Java Swing? 46
JavaFX Script (.fx) dient voor de UI GroupLayout { content: [ Button { text: "Go" ZoomBar.fx action: operation() { javafxpad.go(); } }, ComboBox { selection: bind javafxpad.zoomselection cells: bind foreach (anoption in javafxpad.zoomoptions) ComboBoxCell { text: "{anoption}%" } } ] 47
Swing, Java Web Start, JavaFX, Applets client Swing Java2D JavaFX "Swing is is not not out" Java SE 6uN Java API's, AWT, JVM J W S.jnlp.jar's server-side plug-in (native) Client browser 48
Reeds lang Swing business applicaties, nu met JavaFX eenvoudiger en ook Java2D eenvoudiger Tesla Motors site (recreated) Java Web Start (JWS): 'JavaFX showcase prototype': http://download.java.net/general/openjfx/demos/tesla.jnlp 49
Sterke punten JavaFX + Swing Beknopte, declaratieve syntax JavaFX handig voor UI. Maakt Swing & Java2D eenvoudiger, toegankelijker. Open community (met open discussion on features). Sun's globale strategie is open source. Bedoeling om JavaFX te combineren met Java. Alle kracht van Java is beschikbaar. Stabiliteit Java Swing & AWT. Swing is flexibel. 50
Zwakke punten JavaFX + Swing JavaFX. Nog niet officieel gelanceerd. Nog geen grote community. Java Swing (alleen). Vergt ervaring, know-how. Geen declaratieve UI taal. Toekomstige combinatie: JavaFX + Swing. Huidige combinatie kan beter qua complexiteit? Huidige JavaFX is weliswaar prototype. 51
Trad. Web 'enhancement' RIA AJAX RWA RDA NP P Microsoft's Silverlight
Silverlight overzicht Client browser Client SL plugin 1.1 (=2.0) parse.xaml to web page Canvas Client stub generatie in VS2008 Server web page: DOM accessible Canvas (.xaml).dll (C#, ) subset.net APIs & crossbrowser CLR.js.html,.js,.xaml, resources,.dll 53
Ontwikkeling Silverlight SL 1.0.xaml.js - Visual Studio 2008 - Silverlight tools beta 2 for VS2008 SL 2.0 (=1.1).xaml CLR: dus C#, echte potentieel 1.1 is tussentijdse alpha versie! 54
RIA en visual / graphic designers (= demo Silverlight) http://www.nibblestutorials.net/ 55
Sterke punten Silverlight 1.1 (=2.0) Tooling (remoting aangekondigd). Men spreekt over 'Rich networking support'. Skills zijn herbruikbaar (niet de libraries!) Client (Silverlight) C# Server (.NET) C# Recente.NET 3.5 heeft sterke nieuwe features. Source code recent gereleased (debugging). 56
Zwakke punten Silverlight 1.1 (=2.0) XAML Zijn.xaml files 'too verbose'? Te sterk gescheiden met.cs &.js files? Goed voor graphic designers in het team? Silverlight plugin moet geïnstalleerd worden. 'Microsoft only' Visual Studio tools, Moonlight, Nog niet matuur. 57
Overzicht De concepten en mogelijkheden van RIA Overzicht technologieën en benaderingen AJAX GWT Flex & AIR Swing + JavaFX Silverlight Samenvatting en aanbevelingen 58
Overzicht benaderingen Trad. Web 'enhancement' RIA AJAX RWA RDA NP P oplossingen GWT Flex Silverlight Swing & JavaFX AIR Toolkits Java applet 59
Overzicht technologie analyse Technology Client Remoting Development Release date AJAX toolkits - Browser (javascript) - XML - HTML - JSON -.js,.html,.css, toolkit APIs - Java IDE voor JavaEE backend - depending on library (sinds +- 2006) - ook Javascript IDEs GWT - Browser (javascript) - XML - JSON - GWT-RPC (binary) - Java IDE - 3rd party libraries zoals GWT-EXT - vb. GWT-Designer - GWT 1.4: 2006Q3 - GWT 1.5: 2008Q2(?) Swing (+ JavaFX) - Java -Browser (applet plugin) - RMI, JMS - WS (SOAP) - elke Java remoting impl. - Java IDE - Java APIs + opensource libs - Java designer tools - Java SE 6: 2006Q4 - Java SE 6uN: 2008Q3 - Java SE 7: 2008Q4 - JavaFX: 2008Q2-Q3 Flex AIR - Browser (Flash plugin v9) - AIR Runtime - WS (SOAP) - XML - JSON - AMF3 (binary) - LCDS: data synch. - Eclipse FlexBuilder voor frontend -.as,.mxml - Java IDE voor JavaEE backend - Flex 2.0: 2006Q3 - Flex 3.0: 2008Q1 - AIR 1.0: 2008Q1 Silverlight - Browser (SL Plugin) - MS niet op Linux - WS (SOAP) -XML - JSON - Visual Studio 2008 (.NET) - SL 1.0: 2007Q4 - SL 2.0: 2008Q3 60
Essentiële raadgevingen omtrent de technologieën (1/2) Swing, JavaFX Java kracht (neem voor de front-end UI JavaSE 6). Desktop, maar browser kan met applet (6uN). Gevestigde waarde met veel frameworks. Opvolgen: JavaFX, Java SE 6uN. Flex Fris en duidelijk platform. Livecycle DS (J2EE) kan rendabele extra zijn. Browser, maar desktop integratie en offline/online kan met AIR. Uitproberen voor eerste klein geschikt project. 61
Essentiële raadgevingen omtrent de technologieën (2/2) AJAX toolkits Essentiële verbeteringen web app. (Struts, ). Beperk AJAX. Gebruik de toolkits. GWT "No-compromise AJAX". Java software engineering voor AJAX. Silverlight Voor de.net wereld. Cross-platform revolutie? Huidige 1.1 is te beperkt. SL 2.0 opvolgen. 62
Herhaling: voordelen van RIA t.o.v. traditioneel web User productiviteit & user experience Functioneel meer geavanceerde mogelijkheden Technisch performantie, responsiviteit, robuustheid 63
RIA veel voordelen, maar niet wanneer: Sterk document en browser georiënteerde applicatie. Budget versus user requirements. RIA's maken het niet eenvoudiger. Investering in interaction en usability design. Als de 'rich UI behaviour' teveel performantie op de client vraagt. Wanneer niet compatibel met accessibility requirements. W3C ARIA (screen reader, ) 64
Impact van RIA in de organisatie Ontwikkeling: proces & organisatie Meer User experience (UX) & visual designers. Training developers en analisten inzake RIA. Nieuwe UI mogelijkheden. Kennis: web desktop, desktop web Intensief samenwerken met users. Verzamel en bouw standaardkennis op (pilots, ). Users Sensibilisatie. Implicaties: behoeften, Intensief samenwerken met developers en analisten. Tools Investering in de nodige tools (rendabel). 65
Besluit: evolutie naar RIA's Nieuwe klemtoon usability en ergonomie. De gebruiker staat centraal. Kies NIET voor één enkele technologie. Java wereld..net wereld. Toekomstige trend. 66
That's it! Vragen? Adelbert Groebbens adelbert.groebbens@smals.be 02/787 5860