1 1 Contributions de l’équipe ADAM dans le projet JOnES Mercredi 11Avril 2007 Revue de projet, Montbonnot - France Nicolas DOLET Philippe MERLE Equipe ADAM (ex Projet Jacquard) - INRIA Futurs, Laboratoire d‘Informatique Fondamentale de Lille (LIFL), Université des Sciences et Technologies de Lille (USTL), Villeneuve d’Ascq, France
2 2 Quatre contributions Le modèle de programmation Fraclet Annotations Java pour simplifier la programmation de composants Fractal Utilisé (entre autres) par PEtALS (EBM WS) et DREAM (INRIA SARDES) Le canevas GoTM Construction de services de transactions à la carte Utilisé dans un service de transactions pour WebServices Thread Management Framework Observation et contrôle des activités dans un serveur d’application Utilisé (entre autres) dans PEtALS Fractal Deployment Framework Déploiement de toute pile logicielle (OS, JRE, serveurs, conteneurs, applicatifs) Utilisé (entre autres) pour déployer la pile logicielle JBI (JRE, PEtALS, composants JBI)
3 3 Dissémination Le modèle de programmation Fraclet 5th International ECOOP Workshop on Fractal Component Model (Fractal'06) 11th International ECOOP Workshop on Component-Oriented Programming (WCOP'06) 5ièmes Journées Composants (JC'06) Thèse de doctorat Romain Rouvoy Le canevas GoTM 5th International ETAPS Symposium on Software Composition (SC'06) International ERCIM Workshop on Software Evolution (EVOL'06) 6th International IFIP Conference on Distributed Applications and Interoperable Systems (DAIS'06) Thèse de doctorat Romain Rouvoy Thread Management Framework Rien encore Fractal Deployment Framework Présentation à la réunion d'architecture ObjectWeb 2nd International OTM Symposium on Grid computing, high-performAnce and Distributed Applications (GADA'06) Soumission à EUROMICRO CBSE 2007
4 Le modèle de programmation Fraclet
5 5 Développement sans Fraclet public class Client implements Main, BindingController { private Service s; public void main (final String[] args) { s.print("hello world"); } public String[] listFc () { return new String[] { "s" }; } public Object lookupFc (final String cItf) { if (cItf.equals("s")) { return s; } return null; } public void bindFc (final String cItf, final Object sItf) { if (cItf.equals("s")) { s = (Service)sItf; } } public void unbindFc (final String cItf) { if (cItf.equals("s")) { s = null; }} <interface name="r" role="server" signature="Main"/> <interface name="s" role="client" signature="Service"/> <interface name="r" role="server" signature="Main"/> <interface name="s" role="client" signature="Service"/> Répétitif Redondant Propice aux erreurs
6 6 Développement avec Fraclet name=r */ public interface Main { void main (String[] args); } name=r */ public interface Main { void main (String[] args); } name=s */ public interface Service { void print (String msg); } name=s */ public interface Service { void print (String msg); } <definition name="HelloWorld" extends="ClientImplComposite"> <definition name="HelloWorld" extends="ClientImplComposite"> public class Client implements Main { name=s */ protected Service service; public void main (final String[] args) { service.print("hello world");} public class Client implements Main { name=s */ protected Service service; public void main (final String[] args) { service.print("hello world");} public class Server implements Service { */ protected String header ; value=1 */ protected int count ; public void print (final String msg) { for (int i = 0; i < count; ++i) System.err.println(header + msg);} public class Server implements Service { */ protected String header ; value=1 */ protected int count ; public void print (final String msg) { for (int i = 0; i < count; ++i) System.err.println(header + msg);}
7 7 Bilan sur Fraclet Simplification et fiabilisation du développement Intégration progressive du code technique Réduction de la taille du programme (~50%) Fortement utilisé JOnES – PEtALS, DREAM, GoTM, TMF et FDF ProActive: une plate-forme pour l’informatique sur grille COSMOS: un canevas pour la composition de ressources systèmes DACAR: un canevas pour le déploiement autonome FAC: une extension pour le support de l’AOP au niveau composant A venir refactoring outils Fractal ADL, Fractal RMI, etc.
8 Déploiement d’applications distribuées/hétérogènes : Fractal Deployment Framework
9 9 Motivation Déploiement classique Processus de déploiement scripté Difficile à maintenir en cas de changement dans la topologie du réseau Aucune représentation du système déployé Parallélisme impossible Gestion des dépendances « à la main » Déploiement avec FDF Description du système Un changement dans la topologie impacte seulement la description de l’élément modifié Représentation du système déployé dans l’IHM Parallélisme, quand c’est possible Dépendances techniques prises en compte dans la description du déploiement d’un programme (personnalité)
10 Exemple : une agence de voyages
11 Déploiement de la démo Plusieurs logiciels à déployer Java PEtALS Tomcat Les composants applicatifs Chaque logiciel possède sa propre procédure de déploiement Processus de déploiement décrits dans les personnalités Dépendances entre logiciels Dépendances techniques –Un composant JBI dépend de PEtALS –Une application Web (WAR) dépend de Tomcat –PEtALS et Tomcat dépendent de Java Dépendances métier –Les serveurs doivent démarrer avant les clients
12 Fonctionnement de FDF Bibliothèque de composants primitifs encapsulant les mécanismes système Composition de ces composants dans les personnalités
13 Description des dépendances
14 FDF Explorer Administration du déploiement via une console graphique
15 Bilan sur FDF Canevas générique permettant d’abstraire le processus de déploiement Gère l’hétérogénéité à tous les niveaux : Matériel Logiciel Applicable dans différents domaines : Informatique sur grille Informatique ubiquitaire / mobile (PDAs) FDF sait déjà déployer : JRE / PEtALS (+ applicatif) / Apache Tomcat (+ applicatif) / Java RMI Registry / Apache Ant / JOnAS (+ applicatif) / Geronimo / JBoss / JADE / MySql / Fractal – Julia – Fractal RMI Registry – Fractal RMI Server / OpenCCM (+ applicatif) / FDF lui-même ! Prototypes : Applicatifs pour Geronimo et JBoss / OSCAR / Apache Tuscany SCA (+ applicatifs) / BPEL (Orchestra) / Qemu (virtualisation d’OS)
16 Merci Et maintenant, la démo !
17 Dissémination Le modèle de programmation Fraclet [Rouvoy 2006a] Romain Rouvoy, Nicolas Pessemier, Renaud Pawlak et Philippe Merle. Using Attribute-Oriented Programming to Leverage Fractal-Based Developments. Dans Proceedings of the 5th International ECOOP Workshop on Fractal Component Model (Fractal'06), Nantes, France, Juillet [Rouvoy 2006b] Romain Rouvoy et Philippe Merle. Leveraging Component-Oriented Programming with Attribute- Oriented Programming. Dans Proceedings of the 11th International ECOOP Workshop on Component-Oriented Programming (WCOP'06), Nantes, France, Juillet [Rouvoy 2006c] Romain Rouvoy, Nicolas Pessemier, Renaud Pawlak et Philippe Merle. Apports de la programmation par attributs au modèle de composants Fractal. Dans Actes des 5ièmes Journées Composants (JC'06), Perpignan, France, Octobre Le canevas GoTM [Rouvoy 2006d] Romain Rouvoy, Patricia Serrano-Alvarado et Philippe Merle. A Component-based Approach to Compose Transaction Standards. Dans Proceedings of the 5th International ETAPS Symposium on Software Composition (SC'06), Volume 4089 de Lecture Notes in Computer Science (LNCS), pages , Vienne, Autriche, Mars Springer-Verlag. [Rouvoy 2006e] Romain Rouvoy et Philippe Merle. Using Microcomponents and Design Patterns to Build Evolutionary Transaction Services. Dans Proceedings of the International ERCIM Workshop on Software Evolution (EVOL'06), Lille, France, Avril [Rouvoy 2006f] Romain Rouvoy, Patricia Serrano-Alvarado et Philippe Merle. Towards Context-Aware Transaction Services. Dans Proceedings of the 6th International IFIP Conference on Distributed Applications and Interoperable Systems (DAIS'06), Volume 4025 de Lecture Notes in Computer Science (LNCS), pages , Bologne, Italie, Juin Springer-Verlag. [Rouvoy 2006h] Romain Rouvoy. Une démarche à granularité extrêmement fine pour la construction de canevas intergiciels hautement adaptables : application aux services de transactions. Thèse de doctorat. Université des Sciences et Technologies de Lille, Villeneuve d’Ascq, France, décembre Fractal Deployment Framework [Merle 2006] Philippe Merle. Towards a Generic Deployment Framework for J2EE, OSGi, Web Services (or Everything). Présentation à la réunion d'architecture ObjectWeb, Lille, France, Juin [Flissi 2006] Areski Flissi et Philippe Merle. A Generic Deployment Framework for Grid Computing and Distributed Applications. Dans Proceedings of the 2nd International OTM Symposium on Grid computing, high-performAnce and Distributed Applications (GADA'06), Lecture Notes in Computer Science, volume 4279, pages , Montpellier, France, Novembre Springer-Verlag.