<ul><li>Xam Xamlé </li></ul>Nouvelles Technologies & Client Riche Sébastien Letélié 10 janvier 2008 www.itaware.eu
Sommaire <ul><li>Evolution des architectures </li></ul><ul><li>Qu’est ce que RIA, RDA, RMA, RCP …? </li></ul><ul><li>Techn...
Evolutions des architectures Client Réseau Serveur Riche Léger Lourd SQL Socket HTML, XML/XSLT HTTP XML, JSON HTTP, SOAP, MQ
Qu’est ce que RIA … ? <ul><li>Rich = </li></ul><ul><ul><li>Meilleure expérience utilisateur </li></ul></ul><ul><ul><li>Ges...
Technologies du client riche <ul><li>L’approche Web 2.0 avec AJAX </li></ul><ul><li>La vision Microsoft </li></ul><ul><li>...
L’approche Web 2.0 avec AJAX <ul><li>AJAX : Asynchronous Javascript And XML </li></ul><ul><ul><li>XMLHttpRequest / Iframe ...
L’approche Web 2.0 avec AJAX <ul><li>Pourquoi maintenant ? </li></ul><ul><ul><li>Emergence d’API : prototype, dojo, script...
La vision Microsoft <ul><li>Silverlight </li></ul><ul><ul><li>RWA </li></ul></ul><ul><ul><li>Sous-ensemble de WPF </li></u...
XAML <ul><li>Exemples </li></ul><ul><ul><li>Démo </li></ul></ul><Page xmlns=&quot;&quot;>  <TextBlock>  Salut, le Monde!  ...
La vision Microsoft <ul><li>Points Forts </li></ul><ul><ul><li>Vidéo </li></ul></ul><ul><ul><li>Richesse des composants </...
La percée d’Adobe <ul><li>FLEX </li></ul><ul><ul><li>RWA </li></ul></ul><ul><ul><li>Extension de Flash pour l’entreprise <...
MXML & Action Script 3 <ul><li>Exemples &  DEMO </li></ul><ul><ul><li>Appel de service </li></ul></ul><ul><ul><li>Data bin...
MXML & Action Script 3 <ul><li>Exemples  </li></ul><ul><ul><li>Event Driven Programming </li></ul></ul><?xml version=&quot...
La percée d’Adobe <ul><li>Points Forts </li></ul><ul><ul><li>Pénétration du plugin Flash > 98% </li></ul></ul><ul><ul><li>...
La continuité de Sun <ul><li>JavaFX </li></ul><ul><ul><li>Ensemble d’outils pour la mise en œuvre d’applications RIA </li>...
Exemple de code Java FX Script import javafx.ui.*; import javafx.ui.canvas.*; import java.util.Date; import java.lang.Math...
La continuité de Sun <ul><li>JSR : Swing Application Framework & Beans Binding </li></ul><ul><li>Démos  </li></ul><ul><ul>...
La démarcation d’Eclipse <ul><li>Eclipse RCP </li></ul><ul><ul><li>Rich Client Platform </li></ul></ul><ul><ul><li>SWT+JFa...
EXSWT <ul><li>DEMO RCP &  RAP </li></ul><ul><li>XSWT Dave J. Orme </li></ul><ul><ul><li>SWT en XML </li></ul></ul><ul><ul>...
Eclipse Data Binding <ul><li>Design Pattern Observer </li></ul><ul><li>Conversion </li></ul><ul><li>Validation </li></ul><...
La démarcation d’Eclipse <ul><li>Points forts </li></ul><ul><ul><li>RAD </li></ul></ul><ul><ul><li>Multi plates-formes </l...
La stratégie Google <ul><li>GWT : Google Web Toolkit </li></ul><ul><ul><li>Compilateur de code Java en Javascript </li></u...
La stratégie Google <ul><li>Google Gears </li></ul><ul><ul><li>Plugin de navigateur permettant d’étendre la bibliothèque J...
Et les autres … <ul><li>OpenLazlo </li></ul><ul><li>XUL / Prism / XULRunner </li></ul><ul><li>Akrogen / Tk-UI </li></ul><u...
Communications client/serveur <ul><li>Web Services / SOAP </li></ul><ul><ul><li>WCF, JAX-WS, Axis2, Xfire </li></ul></ul><...
Mode Push : Comet <ul><li>Long lived HTTP request via XmlHttpRequest </li></ul><ul><ul><li>Pushlet  démo </li></ul></ul><u...
Mode déconnecté <ul><li>Java DB </li></ul><ul><ul><li>Apache Derby </li></ul></ul><ul><li>Google Gears </li></ul><ul><li>D...
Bilan <ul><li>Collaboration graphiste / développeur </li></ul><ul><ul><li>Format pivot : XAML, MXML, HTML/DOM, Java FX Scr...
Quelles technos pour quels besoins <ul><li>Aucune solution ne fait tout </li></ul><ul><li>Bien connaître les avantages et ...
L’importance du SOA <ul><li>Les échanges client / serveur </li></ul><ul><ul><li>Le client riche implique un nouveau mode d...
Les technologies émergentes <ul><li>Orchestration des services : </li></ul><ul><ul><li>BPM : Business Process Model </li><...
Les nouveaux rôles <ul><li>La persistance du duo développeur/graphiste </li></ul><ul><ul><li>Plusieurs outils un format </...
A surveiller … <ul><li>WebOS </li></ul><ul><ul><li>Exo Platform </li></ul></ul><ul><li>Virtualisation </li></ul><ul><ul><l...
A suivre ... <ul><li>Blogs </li></ul><ul><ul><li>www.itaware.eu </li></ul></ul><ul><ul><li>blog.improve.fr ? </li></ul></u...
Prochain SlideShare
Chargement dans…5
×

Client riche et nouvelles technologies

5 192 vues

Publié le

Publié dans : Technologie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
5 192
Sur SlideShare
0
Issues des intégrations
0
Intégrations
647
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Client riche et nouvelles technologies

  1. 1. <ul><li>Xam Xamlé </li></ul>Nouvelles Technologies & Client Riche Sébastien Letélié 10 janvier 2008 www.itaware.eu
  2. 2. Sommaire <ul><li>Evolution des architectures </li></ul><ul><li>Qu’est ce que RIA, RDA, RMA, RCP …? </li></ul><ul><li>Technologies du client riche </li></ul><ul><ul><li>L’approche Web 2.0 avec AJAX </li></ul></ul><ul><ul><li>La vision Microsoft </li></ul></ul><ul><ul><li>La percée d’Adobe </li></ul></ul><ul><ul><li>La continuité de Sun </li></ul></ul><ul><ul><li>La démarcation d’Eclipse </li></ul></ul><ul><ul><li>La stratégie Google </li></ul></ul><ul><ul><li>Et les autres… </li></ul></ul><ul><li>Communication client/serveur </li></ul><ul><li>Mode déconnecté </li></ul><ul><li>Quelles technos pour quels besoins ? </li></ul><ul><li>L’importance du SOA </li></ul><ul><li>Architectures émergentes et nouveaux rôles </li></ul>
  3. 3. Evolutions des architectures Client Réseau Serveur Riche Léger Lourd SQL Socket HTML, XML/XSLT HTTP XML, JSON HTTP, SOAP, MQ
  4. 4. Qu’est ce que RIA … ? <ul><li>Rich = </li></ul><ul><ul><li>Meilleure expérience utilisateur </li></ul></ul><ul><ul><li>Gestion du mode déconnecté </li></ul></ul><ul><ul><li>Pallier les contraintes du Web (fin du modèle HTTP request/response) </li></ul></ul><ul><ul><li>Émergence du SOA </li></ul></ul><ul><ul><li>Séparation des tâches : conception / design / développement </li></ul></ul>RIA Rich Internet Application RWA Rich Web Application RDA Rich Desktop Application RMA Rich Mobile Application RCP Rich Client Platform RWP Rich Web Platform
  5. 5. Technologies du client riche <ul><li>L’approche Web 2.0 avec AJAX </li></ul><ul><li>La vision Microsoft </li></ul><ul><li>La percée d’Adobe </li></ul><ul><li>La continuité de Sun </li></ul><ul><li>La démarcation d’Eclipse </li></ul><ul><li>La stratégie Google </li></ul><ul><li>Et les autres… </li></ul>
  6. 6. L’approche Web 2.0 avec AJAX <ul><li>AJAX : Asynchronous Javascript And XML </li></ul><ul><ul><li>XMLHttpRequest / Iframe invisible </li></ul></ul><ul><ul><li>DOM + CSS </li></ul></ul><ul><ul><li>XML ou JSON </li></ul></ul><ul><li>Objectif : pouvoir ne rafraîchir que les composants qui en ont besoin suivant les actions de l’utilisateur </li></ul><ul><ul><li>Plus de rafraichissement complet </li></ul></ul><ul><ul><li>Une page unique </li></ul></ul><ul><li>Historique </li></ul><ul><ul><li>Techno existante depuis longtemps </li></ul></ul><ul><ul><li>Mais problématiques majeures: </li></ul></ul><ul><ul><ul><li>interprétation différente des navigateurs du code Javascript </li></ul></ul></ul><ul><ul><ul><li>Difficulté de débuggage </li></ul></ul></ul><ul><ul><ul><li>Pas d’IDE </li></ul></ul></ul><ul><ul><li>DHTML fut une première étape </li></ul></ul>
  7. 7. L’approche Web 2.0 avec AJAX <ul><li>Pourquoi maintenant ? </li></ul><ul><ul><li>Emergence d’API : prototype, dojo, scriptaculous </li></ul></ul><ul><ul><li>Emergence de framework de composants : Rialto, Ext … </li></ul></ul><ul><ul><li>Emergence des outils : </li></ul></ul><ul><ul><ul><li>Eclipse ATF </li></ul></ul></ul><ul><ul><ul><li>Firebug </li></ul></ul></ul><ul><ul><ul><li>GWT </li></ul></ul></ul><ul><ul><ul><li>Volta </li></ul></ul></ul><ul><li>Que devient l’existant : JSF, Struts, WebObjects, Wicket, ASP… ? </li></ul><ul><ul><li>Complémentarité </li></ul></ul><ul><ul><ul><li>Rialto JSF, PHP… </li></ul></ul></ul><ul><ul><ul><li>WebObjects & Project Wonder </li></ul></ul></ul><ul><ul><li>A terme ces framework ne seront peut être plus utilisés que pour la partie serveur </li></ul></ul><ul><ul><ul><li>Abandon des JSP, WOD </li></ul></ul></ul>
  8. 8. La vision Microsoft <ul><li>Silverlight </li></ul><ul><ul><li>RWA </li></ul></ul><ul><ul><li>Sous-ensemble de WPF </li></ul></ul><ul><li>WPF (Windows Presentation Foundation) </li></ul><ul><ul><li>RDA </li></ul></ul><ul><ul><li>Bibliothèques de composants riches </li></ul></ul><ul><ul><li>XAML </li></ul></ul><ul><li>WCF (Windows Communication Foundation) </li></ul><ul><ul><li>70% du .NET 3.0 </li></ul></ul><ul><ul><li>SOAP, HTTP, Socket, MQ … </li></ul></ul><ul><li>CLR (Common Language Runtime) </li></ul><ul><ul><li>IronPython, IronRuby, C++, C#, VB.NET </li></ul></ul><ul><li>Volta </li></ul><ul><ul><li>Recompilateur Web de formulaire WinForms </li></ul></ul><ul><li>Outils </li></ul><ul><ul><li>Visual Studio 2008 </li></ul></ul><ul><ul><li>Expression Tools (Blend, Media, Web, Design) </li></ul></ul>
  9. 9. XAML <ul><li>Exemples </li></ul><ul><ul><li>Démo </li></ul></ul><Page xmlns=&quot;&quot;> <TextBlock> Salut, le Monde! </TextBlock> </Page> <windows Width=&quot;600&quot; Height=&quot;480&quot; Text=&quot;Mon Programme&quot;> <FlowPanel> <Label Name=&quot;Montexte&quot; FontSize=&quot;20&quot;> Mon application </label> <Button Width=&quot;80&quot; Click=&quot;BoutonClic&quot;> Fermer </Button> </FlowPanel> </windows>
  10. 10. La vision Microsoft <ul><li>Points Forts </li></ul><ul><ul><li>Vidéo </li></ul></ul><ul><ul><li>Richesse des composants </li></ul></ul><ul><ul><li>Multi-Langage </li></ul></ul><ul><ul><li>Communauté existante </li></ul></ul><ul><li>Points Faibles </li></ul><ul><ul><li>Totalement propriétaire </li></ul></ul><ul><ul><li>Faible pénétration du plugin </li></ul></ul><ul><ul><li>Peu mature doit faire ses preuves </li></ul></ul>
  11. 11. La percée d’Adobe <ul><li>FLEX </li></ul><ul><ul><li>RWA </li></ul></ul><ul><ul><li>Extension de Flash pour l’entreprise </li></ul></ul><ul><ul><li>Bibliothèque de composants d’informatique de gestion </li></ul></ul><ul><ul><ul><li>formulaire & tableau </li></ul></ul></ul><ul><ul><li>MXML </li></ul></ul><ul><li>AIR </li></ul><ul><ul><li>RDA </li></ul></ul><ul><ul><li>FlashPlayer + Flex </li></ul></ul><ul><li>Communication </li></ul><ul><ul><li>Web Services (SOAP/AMF/HTTP) </li></ul></ul><ul><ul><li>MQ (BlazeDS) </li></ul></ul><ul><li>Langage </li></ul><ul><ul><li>ActiveScript 3.0 </li></ul></ul><ul><li>Outils </li></ul><ul><ul><li>FlexBuilder : Eclipse plugins </li></ul></ul><ul><ul><li>Thermo </li></ul></ul>
  12. 12. MXML & Action Script 3 <ul><li>Exemples & DEMO </li></ul><ul><ul><li>Appel de service </li></ul></ul><ul><ul><li>Data binding </li></ul></ul><?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; applicationComplete=&quot;employees.send()&quot;> <mx:HTTPService id=&quot;employees&quot; useProxy=&quot;false&quot; method=&quot;POST&quot; url=&quot;http://localhost:8080/test/employees.jsp&quot; /> <mx:DataGrid dataProvider=&quot;{employees.lastResult.people.person}&quot; width=&quot;60%&quot;> <mx:columns> <mx:DataGridColumn dataField=&quot;name&quot; headerText=&quot;Name&quot;/> <mx:DataGridColumn dataField=&quot;age&quot; headerText=&quot;Age&quot;/> <mx:DataGridColumn dataField=&quot;skills&quot; headerText=&quot;Skills&quot;/> </mx:columns> </mx:DataGrid> </mx:Application>
  13. 13. MXML & Action Script 3 <ul><li>Exemples </li></ul><ul><ul><li>Event Driven Programming </li></ul></ul><?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <mx:Button xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; width=&quot;104&quot; height=&quot;28&quot; cornerRadius=&quot;10&quot; fillColors=&quot;[#00ff00, #00B000]&quot; label=&quot;Add Item&quot; fontSize=&quot;12&quot; click=&quot;greenClickEventHandler()&quot;> <mx:Metadata> [Event(name=&quot;addItemEvent&quot;, type=&quot;flash.events.Event&quot;)] </mx:Metadata> <mx:Script> <![CDATA[ private function greenClickEventHandler():void{ trace(&quot; Ouch! I got clicked! Let me tell this to the world.&quot;); dispatchEvent(new Event(&quot;addItemEvent&quot;, true)); } ]]> </mx:Script> </mx:Button>
  14. 14. La percée d’Adobe <ul><li>Points Forts </li></ul><ul><ul><li>Pénétration du plugin Flash > 98% </li></ul></ul><ul><ul><li>Communauté importante </li></ul></ul><ul><ul><li>Flex 3 SDK sera open source </li></ul></ul><ul><ul><li>Flex Builder en Eclipse </li></ul></ul><ul><ul><li>Intégration avec applications Web existantes </li></ul></ul><ul><ul><li>Blaze DS gratuit </li></ul></ul><ul><ul><li>Indépendant de la techno coté serveur </li></ul></ul><ul><li>Points Faibles </li></ul><ul><ul><li>Solution propriétaire </li></ul></ul><ul><ul><li>Adaptation au monde de l’entreprise </li></ul></ul><ul><ul><li>Nécessité de maitriser un nouveau langage </li></ul></ul><ul><ul><li>Dépendant du Flash Player </li></ul></ul>
  15. 15. La continuité de Sun <ul><li>JavaFX </li></ul><ul><ul><li>Ensemble d’outils pour la mise en œuvre d’applications RIA </li></ul></ul><ul><ul><li>Java FX Script </li></ul></ul><ul><ul><ul><li>F3 – Chris Oliver </li></ul></ul></ul><ul><ul><ul><li>Langage de script pour la conception rapide de UI riches </li></ul></ul></ul><ul><ul><li>Java FX Mobile </li></ul></ul><ul><ul><ul><li>J2ME + API </li></ul></ul></ul><ul><li>Swing - le retour </li></ul><ul><ul><li>Amélioration des performances depuis Java 6 </li></ul></ul><ul><ul><li>SwingLabs </li></ul></ul><ul><ul><ul><li>JDIC, SwingX </li></ul></ul></ul><ul><li>Outils </li></ul><ul><ul><li>NetBeans 6.0 </li></ul></ul><ul><ul><li>Java FX Pad </li></ul></ul><ul><li>NetBeans Platform </li></ul><ul><ul><li>RCP </li></ul></ul>
  16. 16. Exemple de code Java FX Script import javafx.ui.*; import javafx.ui.canvas.*; import java.util.Date; import java.lang.Math; import java.lang.System; public class Timer { private attribute elapsed: Number; public attribute minutes: Number; public attribute seconds: Number; public attribute hours: Number; public attribute running: Boolean; } attribute Timer.elapsed = bind if running then [1..20] dur 1000 linear while running continue if true else 0; trigger on Timer.elapsed = value { var now = new Date(); minutes = now.getMinutes(); seconds = now.getSeconds() + (now.getTime() % 1000)/1000; hours = now.getHours(); } public class Clock extends CompositeNode { public attribute ticking: Boolean; } operation Clock.composeNode() { var t = Timer {running: bind ticking}; return Group { var font = new Font(&quot;Dialog&quot;, &quot;PLAIN&quot;, 15) var secs = bind t.seconds var mins = bind t.minutes + secs/60 var hrs = bind t.hours + mins/60 <ul><li>content:[ </li></ul><ul><li>Rect { height: 200, width: 5000, fill: white}, </li></ul><ul><ul><li>Circle {cx: 100, cy: 100, radius: 80, fill: white, stroke: black, strokeWidth: 1}, </li></ul></ul><ul><ul><li>Group { </li></ul></ul><ul><li>transform: translate( 100, 100 ) </li></ul><ul><li>content: foreach( i in [1..12] ) </li></ul><ul><li>Text { </li></ul><ul><li>var radians = Math.toRadians( 30 * i - 90 ) </li></ul><ul><li>transform: [translate( 70*Math.cos( radians ), 70*Math.sin( radians ) )] </li></ul><ul><li>content: &quot;{i}&quot; </li></ul><ul><li>valign: MIDDLE, halign: CENTER </li></ul><ul><li>} </li></ul><ul><li>}, </li></ul><ul><li>Group { </li></ul><ul><li>transform: translate(100, 100) </li></ul><ul><li>var hourHand = </li></ul><ul><li>Line {x1: 0, y1: 0, x2: 0, y2: -35, </li></ul><ul><li>strokeWidth: 4, stroke: black </li></ul><ul><li>transform: bind rotate(hrs*30, 0, 0) </li></ul><ul><li>} </li></ul><ul><li>var minuteHand = </li></ul><ul><li>Line {x1: 0, y1: 0, x2: 0, y2: -55, </li></ul><ul><li>strokeWidth: 2, stroke: black, </li></ul><ul><li>transform: bind rotate(mins * 6, 0, 0) </li></ul><ul><li>} </li></ul><ul><li>var secondHand = </li></ul><ul><li>Line {x1: 0, y1: 0, x2: 0, y2: -75, </li></ul><ul><li>strokeWidth: 1, stroke: red, </li></ul><ul><li>transform: bind rotate(t.seconds * 6, 0, 0) </li></ul><ul><li>} </li></ul><ul><li>content: [hourHand, minuteHand, secondHand] </li></ul><ul><li>}, </li></ul><ul><li>Circle {cx: 100, cy: 100, radius: 3, fill: black, stroke: black } </li></ul><ul><li>] </li></ul><ul><li>}; </li></ul><ul><li>} </li></ul>
  17. 17. La continuité de Sun <ul><li>JSR : Swing Application Framework & Beans Binding </li></ul><ul><li>Démos </li></ul><ul><ul><li>Joshua Marinacci : LightOut </li></ul></ul><ul><ul><li>Roman Strobl : NetBeans 6.0 </li></ul></ul><ul><li>Points Forts </li></ul><ul><ul><li>API ouvertes </li></ul></ul><ul><ul><li>API complètes </li></ul></ul><ul><ul><li>Communauté très importante </li></ul></ul><ul><ul><li>Historique </li></ul></ul><ul><ul><li>Sécurité </li></ul></ul><ul><li>Points Faibles </li></ul><ul><ul><li>Pénétration de la JVM </li></ul></ul><ul><ul><li>Temps de chargement, taille et installation du plugin </li></ul></ul><ul><ul><ul><li>Consumer JRE </li></ul></ul></ul><ul><ul><li>Outils de design pour Java FX Script </li></ul></ul><ul><ul><ul><li>Java FX Designer </li></ul></ul></ul>
  18. 18. La démarcation d’Eclipse <ul><li>Eclipse RCP </li></ul><ul><ul><li>Rich Client Platform </li></ul></ul><ul><ul><li>SWT+JFace </li></ul></ul><ul><ul><ul><li>Nebula Widgets </li></ul></ul></ul><ul><ul><li>Eclipse Data Binding </li></ul></ul><ul><ul><li>EXSWT </li></ul></ul><ul><ul><li>BIRT : Business Intelligence Reporting Tool </li></ul></ul><ul><li>Eclipse RAP </li></ul><ul><ul><li>Rich Ajax Platform </li></ul></ul><ul><ul><ul><li>&quot; build rich, Ajax-enabled Web applications by using the Eclipse development model &quot; </li></ul></ul></ul><ul><ul><li>RWT+JFace </li></ul></ul><ul><ul><ul><li>QOOXDOO (Inoopract) </li></ul></ul></ul>
  19. 19. EXSWT <ul><li>DEMO RCP & RAP </li></ul><ul><li>XSWT Dave J. Orme </li></ul><ul><ul><li>SWT en XML </li></ul></ul><ul><ul><li>30% de code en moins </li></ul></ul><ul><ul><li>Couplage lâche </li></ul></ul><ul><li>EXSWT Tom Shindl </li></ul><ul><ul><li>XBL </li></ul></ul><w:composite background=&quot;#82cff1&quot;> <a:layout x:class=&quot;gridLayout&quot; f:numColumns=&quot;2&quot; /> <w:label background=&quot;#82cff1&quot; text=&quot;Raison :&quot;> <a:layoutData x:class=&quot;gridData&quot; f:horizontalAlignment=&quot;GridData.END&quot; /> </w:label> <w:text w:style=&quot;SWT.BORDER&quot; x:id=&quot;callReason&quot; font=&quot;Arial,10,SWT.BOLD&quot;> <a:layoutData x:class=&quot;gridData&quot; f:widthHint=&quot;320&quot; f:horizontalAlignment=&quot;GridData.BEGINNING&quot; /> </w:text> <w:label background=&quot;#82cff1&quot; text=&quot;Type :&quot;> <a:layoutData x:class=&quot;gridData&quot; f:horizontalAlignment=&quot;GridData.END&quot; /> </w:label> <v:comboViewer x:id=&quot;missionType&quot; v:style=&quot;SWT.READ_ONLY&quot; font=&quot;Arial,10,SWT.BOLD&quot;> <a:combo.layoutData x:class=&quot;gridData&quot; f:widthHint=&quot;120&quot; f:horizontalAlignment=&quot;GridData.BEGINNING&quot; /> </v:comboViewer> </w:composite>
  20. 20. Eclipse Data Binding <ul><li>Design Pattern Observer </li></ul><ul><li>Conversion </li></ul><ul><li>Validation </li></ul><ul><li>Noyau indépendant d’Eclipse </li></ul><ul><ul><li>org.eclipse.core.databinding </li></ul></ul><ul><ul><li>Implémentation pour GWT </li></ul></ul>Realm.runWithDefault(SWTObservables.getRealm(Display.getCurrent()), new Runnable() { public void run() { DataBindingContext dbc = new DataBindingContext(); dbc.bindValue(SWTObservables.observeText((Text) controls.get(&quot;number&quot;), SWT.FocusOut), BeansObservables.observeValue(criterias, &quot;number&quot;), null, null); dbc.bindValue(SWTObservables.observeSelection((Button) controls.get(&quot;isGroup&quot;)), BeansObservables.observeValue(criterias, &quot;group&quot;), null, null); } });
  21. 21. La démarcation d’Eclipse <ul><li>Points forts </li></ul><ul><ul><li>RAD </li></ul></ul><ul><ul><li>Multi plates-formes </li></ul></ul><ul><ul><li>Formulaires / Wizards / Editeur </li></ul></ul><ul><ul><li>Modularité </li></ul></ul><ul><ul><ul><li>Equinox </li></ul></ul></ul><ul><ul><ul><li>Points d’extension </li></ul></ul></ul><ul><li>Points Faibles </li></ul><ul><ul><li>Visual Editor </li></ul></ul><ul><ul><ul><li>Instanciations WindowsBuilber </li></ul></ul></ul><ul><ul><li>Communauté stagnante </li></ul></ul><ul><ul><li>Richesse des composants </li></ul></ul>
  22. 22. La stratégie Google <ul><li>GWT : Google Web Toolkit </li></ul><ul><ul><li>Compilateur de code Java en Javascript </li></ul></ul><ul><ul><li>Masque la complexité de Javascript </li></ul></ul><ul><ul><li>Facilite le debug </li></ul></ul><ul><ul><li>Ouvre la porte de l’AJAX au développeur JAVA </li></ul></ul><ul><ul><li>Gère les incompatibilité entre navigateurs </li></ul></ul><ul><ul><li>Obfuscation de code => plus léger </li></ul></ul>
  23. 23. La stratégie Google <ul><li>Google Gears </li></ul><ul><ul><li>Plugin de navigateur permettant d’étendre la bibliothèque Javascript notamment pour gérer le mode déconnecté </li></ul></ul><ul><ul><li>Dion Almaer : «  Gears is mistakenly seen to be about &quot;offline&quot;, when that is just the surface  » </li></ul></ul><ul><ul><li>Extension du navigateur avec des API </li></ul></ul><ul><ul><ul><li>Image Manipulation </li></ul></ul></ul><ul><ul><ul><li>Desktop Shortcut </li></ul></ul></ul><ul><ul><ul><li>Location </li></ul></ul></ul><ul><ul><ul><li>WorkerPool </li></ul></ul></ul><ul><ul><ul><li>Messaging </li></ul></ul></ul><ul><ul><ul><li>Blob </li></ul></ul></ul><ul><ul><ul><li>Crypto </li></ul></ul></ul><ul><li>Android </li></ul><ul><ul><li>OS pour téléphone mobile </li></ul></ul><ul><li>Google Maps et Streets </li></ul><ul><li>Ne fournit pas de solution RIA mais offre des outils pour l’intégrer dans ses applications </li></ul>
  24. 24. Et les autres … <ul><li>OpenLazlo </li></ul><ul><li>XUL / Prism / XULRunner </li></ul><ul><li>Akrogen / Tk-UI </li></ul><ul><li>Wazaabi </li></ul><ul><li>Appcelerator </li></ul><ul><li>Widget Server </li></ul>
  25. 25. Communications client/serveur <ul><li>Web Services / SOAP </li></ul><ul><ul><li>WCF, JAX-WS, Axis2, Xfire </li></ul></ul><ul><ul><li>Client Javascript ? </li></ul></ul><ul><li>REST </li></ul><ul><li>Messaging (MOM) </li></ul><ul><ul><li>BlazeDS </li></ul></ul><ul><ul><li>Google Gears </li></ul></ul><ul><ul><li>Applet+JMS </li></ul></ul><ul><li>Sérialization </li></ul><ul><ul><li>WebObjects EODistribution framework </li></ul></ul><ul><ul><li>Spring HTTP Invoker </li></ul></ul><ul><ul><li>JSON/XML </li></ul></ul><ul><li>Push </li></ul><ul><ul><li>BlazeDS </li></ul></ul><ul><ul><li>Applet </li></ul></ul><ul><ul><li>Comet </li></ul></ul>
  26. 26. Mode Push : Comet <ul><li>Long lived HTTP request via XmlHttpRequest </li></ul><ul><ul><li>Pushlet démo </li></ul></ul><ul><li>Doit être supporté par le serveur </li></ul><ul><ul><li>Jetty, Apache2.2, Glassfish </li></ul></ul><ul><li>Gmail, Gtalk, Meebo utilisent déjà cette technique </li></ul>
  27. 27. Mode déconnecté <ul><li>Java DB </li></ul><ul><ul><li>Apache Derby </li></ul></ul><ul><li>Google Gears </li></ul><ul><li>DOJO offline </li></ul><ul><li>Firefox 3 </li></ul><ul><ul><li>Gestion du mode déconnecté </li></ul></ul><ul><li>! Synchronisation </li></ul>
  28. 28. Bilan <ul><li>Collaboration graphiste / développeur </li></ul><ul><ul><li>Format pivot : XAML, MXML, HTML/DOM, Java FX Script </li></ul></ul><ul><ul><li>Importance d’un langage de définition d’UI (script ou XML) </li></ul></ul><ul><li>Communication </li></ul><ul><ul><li>La notion de service n’a jamais été aussi importante </li></ul></ul><ul><ul><li>Toutes les formes de communication ont leur intérêt </li></ul></ul><ul><li>Mode déconnecté </li></ul><ul><ul><li>De plus en plus demandé </li></ul></ul><ul><ul><ul><li>Mode dégradé </li></ul></ul></ul><ul><ul><ul><li>Mobilité </li></ul></ul></ul><ul><li>Eléments prépondérant </li></ul><ul><ul><li>DataBinding client </li></ul></ul><ul><ul><li>Event Driven Programming </li></ul></ul>
  29. 29. Quelles technos pour quels besoins <ul><li>Aucune solution ne fait tout </li></ul><ul><li>Bien connaître les avantages et inconvénients </li></ul><ul><li>Avoir un minimum de retour d’expérience sur chaque </li></ul><ul><li>S’assurer de la pérennité </li></ul><ul><ul><li>Communauté </li></ul></ul><ul><ul><li>Opensource vs commercial </li></ul></ul><ul><li>Outils de développement et de design </li></ul><ul><li>Mixer les technologies </li></ul><ul><ul><li>IRIS démo </li></ul></ul>
  30. 30. L’importance du SOA <ul><li>Les échanges client / serveur </li></ul><ul><ul><li>Le client riche implique un nouveau mode d’échange sur le web </li></ul></ul><ul><li>La combinaison des technologies </li></ul><ul><ul><li>Du Flex avec du Java, du Rialto avec du PHP </li></ul></ul><ul><li>Les tests </li></ul><ul><li>La délimitation des fonctionnalités </li></ul><ul><li>La souplesse </li></ul><ul><ul><li>Meilleure évolutivité </li></ul></ul><ul><ul><li>Facilité de maintenance </li></ul></ul><ul><li>Le SOA devient une nécessité pour la pérennité des applications </li></ul>
  31. 31. Les technologies émergentes <ul><li>Orchestration des services : </li></ul><ul><ul><li>BPM : Business Process Model </li></ul></ul><ul><ul><li>Machines à états </li></ul></ul><ul><ul><li>Moteur de règles </li></ul></ul><ul><li>Intégration </li></ul><ul><ul><li>ESB : Enterprise Service Bus </li></ul></ul><ul><li>Facilité de déploiement et maintenance = modularité </li></ul><ul><ul><li>OSGi </li></ul></ul><ul><ul><ul><li>démo </li></ul></ul></ul><ul><ul><li>JSR 277 Java Module System & JSR 291 Dynamic Component Support </li></ul></ul><ul><li>Architectures </li></ul><ul><ul><li>EDA : Event Driven Architecture </li></ul></ul><ul><li>Langages </li></ul><ul><ul><li>Scripts : Groovy, Ruby, Python, JS … </li></ul></ul><ul><ul><li>DSL : Domain Specific Language </li></ul></ul>
  32. 32. Les nouveaux rôles <ul><li>La persistance du duo développeur/graphiste </li></ul><ul><ul><li>Plusieurs outils un format </li></ul></ul><ul><li>L’avènement de l’ergonome </li></ul><ul><ul><li>Riche mais comment ?! </li></ul></ul><ul><ul><li>Le médiateur entre l’utilisateur et le réalisateur </li></ul></ul><ul><li>Le nouvel architecte </li></ul><ul><ul><li>Penser service </li></ul></ul><ul><ul><li>Rester objet </li></ul></ul>
  33. 33. A surveiller … <ul><li>WebOS </li></ul><ul><ul><li>Exo Platform </li></ul></ul><ul><li>Virtualisation </li></ul><ul><ul><li>Virtual PC, VMWare, QEMU </li></ul></ul><ul><li>SaaS : Software as a Service </li></ul><ul><ul><li>Google Docs </li></ul></ul><ul><ul><li>Zoho </li></ul></ul><ul><li>Jeux, mondes virtuels et réseaux sociaux </li></ul>
  34. 34. A suivre ... <ul><li>Blogs </li></ul><ul><ul><li>www.itaware.eu </li></ul></ul><ul><ul><li>blog.improve.fr ? </li></ul></ul><ul><li>Xam Xamlé </li></ul><ul><ul><li>½ journée par mois </li></ul></ul>

×