SysML : un profil UML2 pour la modélisation de systèmes complexes

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

« Les Mercredis du développement » Gestion de la navigation avancée
1 1 Projet doption Réalité Virtuelle Simulation dun habitat domotisé Florent Renault Xiaoyu Gao Mercredi 27 mai 2009.
- Formation Flex (Introduction)‏ - Formation Flex 1 1.
CASTEL Dennis SARZEAUD Floriane TAKAHASHI Atsushi.
Première expérience d’utilisation des Web Services dans SmartTools Didier Parigot Projet OASIS INRIA Sophia www-sop.inria.fr/oasis/SmartTools Journée.
Eclipse Plug-ins Factory
Au programme du jour …. Ce que vous navez pas encore vu Constantes et variables de classe Main et Tests Utilisation de lAPI Existence des packages Existence.
Au programme du jour …. Introduction à lhéritage Un concept important de la programmation objet Livraison de code Organisation des répertoires et packages.
Architecture. Architecture Enjeux Les Enjeux Trouver une solution e-Business Accessible à partir d’un navigateur Web Accédant au système via un Portail.
Exposé de Système - Informatique et Réseau
Introduction à Java - les paquetages -
Directeur de Thèse : Pr. Witold Litwin
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
1 Les technologies XML Cours 4 : Les Web Services et XML- RPC Février Version 1.0 -
Projet Webase. I. La définition du projet 1. Lexistant : Webase 4 2. Cahier des charges 3. La répartition des données 4. Le modèle de données 5. Le choix.
Google Web Toolkit Introduction Didier Girard – 04 juillet 2007.
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – 04 juillet 2007.
HTML Les types de balises
JOME, un Composant Logiciel pour le Télé-Enseignement des Mathématiques via le WEB, Compatible OpenMath et MathML Laurent DIRAT OVE / I3S-UNSA.
Présentation des frameworks pour Java EE
Injection de dépendances
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Etude des Technologies du Web services
XML-Family Web Services Description Language W.S.D.L.
UNIVERSITE CHOUAIB DOUKKALI Département des mathématiques
Principes de persistance dans les applications orienté objet
Ecole Supérieure Privée de ingénierie et de technologie année universitaire :2013/2014 Cross-Plateform Cours JavaScript.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Classes abstraites et Interfaces
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
22 Intéropérabilité Silverlight & PHP Le 8 février 2010 GIACOPINO Cyril Directeur pôle technologie TEQUILARAPIDO.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Veille Technologique : Étudier les avantages et inconvénients du typage statique et du typage dynamique pour des applications interactives Sujet proposé.
Introduction au paradigme orienté-objet (suite)
Clients riches RIA (Rich Internet Application) / RDA
An Introduction to distributed applications and ecommerce 1 1 Les services Web, XML et les places de marchés.
Chapitre 3 Syntaxe et sémantique.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Séminaire Service Interoperability on Context Level in Ubiquitous Computing Environments Davide Bazzi IIUF Etude de larticle: Service Interoperability.
Projet de Master première année 2007 / 2008
Adaptée du cours de Richard Grin
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
2 Développer, tester et déployer un site web avec WebMatrix (RIA101) Christine Dubois 9 février 2011.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
‘‘Open Data base Connectivity‘‘
LES CLIENTS WEB RICHES Tuteur : Olivier CARON LEFEBVRE Benoit
Presentaion Projet IA.
1 PLAN I. Eclipse Modeling Framework  Présentation  Le modèle Ecore  Code généré  Utilisation de template II.Graphical Modeling Framework  Présentation.
Objectifs À la fin de ce cours, vous serez capables de :
AngularJS.
Réalisé par : Mr IRZIM Hédi Mr JRAD Firas
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
Metro Web Services Ben Yaflah Marouen Dhrif Mohamed Hbib Hajlaoui Nader.
Acquisition d’information sur internet
Schéma de conception Factory Method Exemple Sylvain Giroux.
Présentation du framework JSF (Java Server Faces) dans le modèle événementiel MVCII
Présentation ESTRABOX
Introduction à la programmation objet avec java
Les Servlets Présentation Cycle de vie Principe de fonctionnement
Apports des clients riches dans le monde du WEB 2.0
SOAP et les RPC XML SOAP WSDL RPC. Rappels sur le XML Langage avec des balises Très lisible Pour stocker des données Séparation entre contenu et présentation.
Tuteur : Jean-Philippe Prost Soutenance de Projet Licence Professionnelle Assistant de Projet Informatique Développement d’Applications E-Business Année.
Modèle à objets et sérialisation Olivier ChamlaFrançois Chastanet.
Parquet Geoffrey 3 ARIL EXIA.CESI ARRAS. Présentation du MLD Présentation de la persistance Présentation récapitulatif du projet JSP/SERVLET MVC Cycle.
GWT Google Web Toolkit Yves Bekkers 1GWT - Yves Bekkers.
DWR Jean-Jacques LE COZ. Introduction Projet DWR Framework AJAX Projet Open Source commencé en 2004 Licence GPL (Apache Software License v2) Sponsorisé.
Architecture J2EE Web Jean-Jacques LE COZ. J2EE Web Container JSP Page Servlet J ava 2 Standard Edition APIs EJB Container EJB JDBCJMS JNDI JTA JavaMail.
Transcription de la présentation:

SysML : un profil UML2 pour la modélisation de systèmes complexes La face cachée de GWT Sami Jaber Webmaster du site DotNetGuru.org (DNG) Architecte Valtech Toulouse Developpez.com Tv4it.com Sfeir, SmartTrade

SysML : un profil UML2 pour la modélisation de systèmes complexes Programme SysML : un profil UML2 pour la modélisation de systèmes complexes Introduction Les différentes phases du compilateur GWT Le modèle RPC Conclusion

SysML : un profil UML2 pour la modélisation de systèmes complexes Introduction SysML : un profil UML2 pour la modélisation de systèmes complexes GWT se décompose en deux grandes briques Le Framework de composants Le compilateur Java vers Javascript Le compilateur GWT incarne les racines du Framework Peu ou pas d’articles traitent de cette face cachée de GWT Les performances de GWT découlent directement du fonctionnement du compilateur

Le packaging GWT Didier gwt-user.jar gwt-dev-[platform].jar Le Framework Sami Les outils

SysML : un profil UML2 pour la modélisation de systèmes complexes Le compilateur SysML : un profil UML2 pour la modélisation de systèmes complexes Application Java Site HTML/JavaScript GWTCompiler com.myApplication.MyApplication -out c:\website\com.my….

Les phases de compilation Chargement du module (méta-données, règles) Préparation des règles de permutation Pour chaque permutation, compilation Java vers JavaScript Génération des fichiers

Chargement des modules Le chargeur de module (ModuleDefLoader) effectue un parcours récursif de l’arbre des modules Extrait les informations des schémas Binding Generators Extends, Properties, …

Les permutations Chargement du module (méta-données, règles) Préparation des règles de permutation Pour chaque permutation, compilation Java vers JavaScript Génération des fichiers

Principe général Un seul code Java Télécharge uniquement la version nécessaire au navigateur client Un seul code Java … puis le met en cache indéfiniment

La compilation Chargement du module (méta-données, règles) Préparation des règles de permutation Pour chaque permutation, compilation Java vers JavaScript Génération des fichiers

SysML : un profil UML2 pour la modélisation de systèmes complexes Qu’est-ce qu’un AST ? SysML : un profil UML2 pour la modélisation de systèmes complexes GWT s’appuie intensivement sur les AST (Abstract Syntax Tree) Un arbre syntaxique est une représentation arborescente d’un code source (généralement) compilé Expressions Blocks Types Stmt AssignStmt Block IfStmt IdUse Exp Exp Stmt

Compilateur : Eclipse JDT IfStmt :: “if” Exp “then” Stmt Class ASTNode{ protected ASTNode[] children; } class IfStmt extends ASTNode{ final protected Token token_if, Exp exp, Token token_then, Stmt stmt; IfStmt(Token token_if, Exp exp, Token token_then, Stmt stmt){ // parse tree construction this.token_if = token_if; this.exp = exp; this.token_then = token_then; this.stmt = stmt; // IR tree construction children[0] = exp; children[1] = stmt;

Fusion des arbres AST GWT s’appuie sur Eclipse JDT pour compiler les classes et sur TypeOracle son parseur maison pour les sources AST JDT Java AST GWT (JProgram) ICompilationUnit IField JClassType JavaDoc IType JSNI

Pourquoi cette fusion ? Optimisation et gestion native !

Optimisations du compilateur 1 Pruner Supprime les classes, les champs et les méthodes inutilisées Method and class finalizer Finalise les méthodes et les champs MakeCallsStatic Réécrit le code non-polymorphique en appel statique TypeTightener Le compilateur infère les types les plus spécifiques pour éviter d’utiliser des types abstraits MethodCallTightener Réalise la même opération que TypeTighener, mais pour les appels de méthodes (appels polymorphiques transformés en appels spécifiques) DeadCodeElimination Elimination de code mort (jamais appelé) MethodInliner 2 3 4 5 6 7

La théorie des compilateurs appliquée à JavaScript (il fallait oser !) S T A T I Q U E ! L’optimisation induite par le compilateur peut réduire potentiellement par 10 la taille du code JavaScript Possible uniquement grâce au fait que le chargement dynamique est impossible Pas d’eval() JavaScript ou de newInstance() Java Même dans un contexte purement JavaScript (non AJAX), le compilateur GWT a du sens ! La théorie des compilateurs appliquée à JavaScript (il fallait oser !)

Le modèle de communication Toute communication avec la couche serveur s’opère via le protocole RPC Le service s’appuie sur l’API JEE Servlet Les appels sont asynchrones (classe AsyncCallback) Le code serveur n’est pas converti en Javascript Possibilité d’utiliser le JDK 1.5 et toutes les classes du Framework Java Les types sont sérializés automatiquement par GWT suivant un format spécifique RPC

Le développeur implémente 3 classes Le Framework RPC Le développeur implémente 3 classes ServiceDefTarget (Interface) RemoteService (Interface) RemoteServiceServlet (class) hérite hérite MyServiceAsync (Interface) MyService (Interface) implémente MyServiceImpl (class) relation Classes importées du Framework implémente MyServiceProxy (class) Classes à implémenter Générées automatiquement Client Serveur

Le service RPC côté serveur L’implémentation du service package com.mycompany.project.server; import java.util.Date; import com.google.gwt.user.server.rpc.RemoteServiceServlet; import com.mycompany.project.client.MyOrderService; import com.mycompany.project.client.Person; public class MyOrderServiceImpl extends RemoteServiceServlet implements MyOrderService { public String getOrderByName(String name) { return name; } public Person getPersonByID(int id) { Person p = new Person(); p.setAge(new Date()); p.setName("Martin"); p.setId(1); p.setSalary(100); return p; HttpServlet Interface de Service Remote JavaBean Serializable public class Person implements java.io.Serializable { private int id; private float salary; private String name; private Date age; // setters/getters }

Le service RPC côté client Définir l’interface de service package com.mycompany.project.client; import com.google.gwt.user.client.rpc.RemoteService; public interface MyOrderService extends RemoteService { public String getOrderByName(String name); public Person getPersonByID(int id); } L’interface asynchrone cliente est générée par les outils MyOrderServiceAsync orderService = (MyOrderServiceAsync) GWT.create(MyOrderService.class); // Converti le proxy en ServiceDefTarget pour lui assigner l’URL ServiceDefTarget endpoint = (ServiceDefTarget) orderService; String moduleRelativeURL = GWT.getModuleBaseURL() + "MyOrderService"; endpoint.setServiceEntryPoint(moduleRelativeURL); Instancie le bon service et récupère un proxy Asynchrone

Attention à la sérialisation des types Quelques remarques GWT 1.4 a sensiblement revu son architecture RPC pour la rendre plus extensible Possibilité d’utiliser tout type de moteur d’injection POJO compatible : Spring Guice, EJB 3, RMI, Corba … Attention à la sérialisation des types GWT donne l’impression que le couplage client et serveur est faible : c’est une illusion !! Oubliez côté client les protocoles tels que Soap ou RMI… Le client reste en JavaScript et JavaScript même masqué par Java reste du bon vieux JavaScript interprété RPC is the way to go

10 raisons d’investir dans GWT Communauté Marge de progression Productivité Richesse fonctionnelle (AJAX) Pérennisation des compétences (JAVA) Extensibilité Intégration avec l’existant Standards ouverts (XML, JSon, J2EE) Open Source Simplicité attention : « simple » pas « simpliste »

Quelques liens Sites Livres Formations GWT Groups http://www.onGWT.com http://www.gwtpowered.com Livres GWT en Action Formations 3 jours sur GWT 1.4 Me contacter : sami.jaber@gmail.com (formation, conseil, séminaires, mariages, baptême...)