Java Aspect Components (JAC) http://jac.objectweb.org



Documents pareils
Plan. Department of Informatics

JOnAS 5. Serveur d application d

Vulgarisation Java EE Java EE, c est quoi?

Web Tier : déploiement de servlets

Java pour le Web. Cours Java - F. Michel

Introduction à la plateforme J2EE

Composants Logiciels. Le modèle de composant de CORBA. Plan

JOnAS Day 5.1. Outils de développements

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Cours en ligne Développement Java pour le web

Editing and managing Systems engineering processes at Snecma

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Java et les bases de données

Les processus métiers : concepts, modèles et systèmes

Patrons de Conception (Design Patterns)

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

FOURNIR UN SERVICE DE BASE DE DONNÉES FLEXIBLE. Database as a Service (DBaaS)

Projet gestion d'objets dupliqués

C-JDBC. Emmanuel Cecchet INRIA, Projet Sardes.

Java Naming and Directory Interface

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

RMI le langage Java XII-1 JMF

Architecture Orientée Service, JSON et API REST

1. Installation d'un serveur d'application JBoss:

L Orchestration de Services Web avec Orchestra. Goulven Le Jeune Orchestra Project Manager

Architecture à base de composants pour le déploiement adaptatif des applications multicomposants

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Remote Method Invocation en Java (RMI)

Création d une application JEE

SOA Open Source Intégration des services et business process dans une architecture SOA Open Source. Bruno Georges JBoss, a Division of Red Hat

Remote Method Invocation (RMI)

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

CORBA. (Common Request Broker Architecture)

Création d un service web avec NetBeans 5.5 et SJAS 9

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

OWASP Open Web Application Security Project. Jean-Marc Robert Génie logiciel et des TI

Applications distribuées: le retour du client "riche"

OpenStack Le cloud libre. Thierry Carrez Release Manager, OpenStack

Tutoriel d installation de Hibernate avec Eclipse

Un serveur d'archivage

JOnAS 5 Enterprise OSGi javaee compliant

Projet de développement

UML : Unified Modeling Language

Cedric Dumoulin (C) The Java EE 7 Tutorial

10. Base de données et Web. OlivierCuré

Alfstore workflow framework Spécification technique

2 Chapitre 1 Introduction

Refonte front-office / back-office - Architecture & Conception -

Description de la formation

Application Web et J2EE

Instructions Mozilla Thunderbird Page 1

Master Informatique et Systèmes. Architecture des Systèmes d Information. 03 Architecture Logicielle et Technique

Les nouvelles architectures des SI : Etat de l Art

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Compte Rendu d intégration d application

Le passage à l échelle de serveur J2EE : le cas des EJB

Environnements de Développement

Introduction aux intergiciels

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

Valorisez vos actifs logiciels avec Rational Asset Manager. Jean-Michel Athané, Certified IT Specialist IBM Rational Software

SITE WEB E-COMMERCE ET VENTE A DISTANCE

Cours 1: Java et les objets

Intégration d'applications à "gros grain" Unité d'intégration : le "service" (interface + contrat)

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Open Source Job Scheduler. Installation(s)

Java et les annotations

Application web de gestion de comptes en banques

NSY102. Conception de logiciels Intranet Introduction

Intergiciel - concepts de base

Le modèle client-serveur

Formation en Logiciels Libres. Fiche d inscription

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

J2EE - Introduction. Développement web - Java. Plan du chapitre

Prise en compte des ressources dans les composants logiciels parallèles

NFP111 Systèmes et Applications Réparties

Iyad Alshabani SysCom - CReSTIC Université de Reims 17/02/2011 1

ECLIPSE ET PDT (Php development tools)

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

IBM WebSphere Application Server 5.0 : Administration avancée

Datalift. + + Architecture Modularité Déploiements. d j = 09/04/2015 Laurent BIHANIC

TP1 : Initiation à Java et Eclipse

Auto-évaluation Aperçu de l architecture Java EE

Serveur d'application à la juste taille

Logiciel de gestion de caisse et d ardoises

Vers l urbanisation agile d un client mobile ios/android natif, économique, flexible et pérenne

Projet Java EE Approfondi

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

Composants logiciels Exemples : Java Beans, Enterprise Java Beans

Ré-architecture et migration d une application standalone vers un serveur applicatif multi-tiers dans un contexte JAVA-SAP

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Java Enterprise Edition

Transcription:

Java Aspect Components (JAC) JAC http://jac.objectweb.org 2 Lionel Seinturier Lionel.Seinturier@lip6.fr Université Pierre & Marie Curie 23/2/06 Un framework de programmation par aspect pour Java Projet LIP6/CNAM/INRIA du consortium ObjectWeb Objectifs disposer d'un environnement pour la construction orientée aspects de plates-formes et d applications middleware dynamique, reconfigurable sans extension syntaxique (Java pur) permettant d adapter du bytecode proposant des outils pour gérer la composition d aspects JAC Open container 3 JAC 4 business + aspect code: 100% Java API for aspects definition dynamic chains of aspects JAC weaver class loader business + aspects code bytecode manipulator JAC weaver accessibility locally remotely (RMI & CORBA itfs) Tisser un aspect = déployer un ensemble d'objets (implantant un aspect) sur les objets d'une application de base Librairie d aspects disponibles dans JAC (19) déploiement/communication distantes (RMI & CORBA) persistance des données (JDBC, fichiers, Hibernate) transaction (JOTM) cache réplication, équilibrage de charge authentification, gestion de profils utilisateur GUI (Swing & HTML)

5 6 JAC Aspect GUI Swing JAC Aspect GUI HTML But : séparer le code de présentation du code métier architecture MVC «aspectisée» 7 8 JAC IDE Development process UMLAF project management extended UML notation for aspects aspect developer development of configurable aspects (persistence, transaction, ) integrator write configurations development of Business components business developer set of aspect components set of aspect configurations set of business components deployment JAC container

Support pour la distribution 9 Notion de coupe distribuée 10 - notion de coupe distribuée - aspect de communication distante - aspects pour la programmation répartie - réplication, cohérence, diffusion, cache, équilibrage charge - ensemble de points de jonctions localisés sur +sieurs hôtes - gérée par un AspectManager - répliqué - maintenu en cohérence Aspect de communication distante 11 Modèle de programmation de JAC 12 - gestion des communications distantes (2 versions : RMI, CORBA) - déploiement (instantiation à distance) - objets et d aspects - souches clientes et squelettes serveurs wrapper stub/skel o1 o2 remote o2 JAC host 1 JAC host 2 Une classe d aspect Objets métiers inchangés étend org.objectweb.jac.core.aspectcomponent définit des coupes (appel méthode pointcut héritée) définit des méthodes d aspect définit des méthodes de configuration Méthodes d aspects dans des classes dites Wrapper étend org.objectweb.jac.core.wrapper 3 «catégories» de méthodes wrappantes (before/after) de rôle (augmentation de l interface des objets métiers) de traitement d exceptions

Modèle de programmation de JAC 13 Aspect definition & Pointcut descriptor 14 aspect definition pointcut descriptor advice code metadata aspect configuration application description import org.objectweb.jac.core.aspectcomponent; public class MyTraceAC extends AspectComponent { public MyTraceAC() { pointcut( // define a pointcut ".*", // object regexp "my.myclass", // class regexp "get():int", // method regexp "foo.jac.com", // host regexp method regexp eg: get.* set.* keywords: SETTERS, MODIFIERS, } } MyWrapper.class ); // wrapping class Mots-clés pour les expressions régulières de méthodes 15 Expressions régulières d objets 16 Classes analysées par JAC au chargement (parsing du bytecode) Stockage de l information dans un référentiel propre à JAC STATICS CONSTRUCTORS Objets métiers dans un conteneur JAC nommés automatiquement (nom de classe + indice auto-incrémenté) par un aspect de nommage Exemple d utilisation MODIFIERS ACCESSORS SETTERS( ) GETTERS( ) ADDERS( ) REMOVERS( ) modification de l état (champs public) lecture de l état écrivains d un champ lecteurs d un champ méth. qui ajoutent un champ dans une collection idem retrait classe Account avec champ String owner tissage aspect de nommage sur tous les objets de la classe Owner récupération par introspection valeur de owner nom de l objet utilisable dans l expression de coupe (ex. Bob S.*)

Advice code 17 Metadata 18 Chains of wrappers around pointcuts define before/after code can be added removed dynamically import org.aopalliance.intercept.methodinvocation; import org.objectweb.jac.core.wrapper; public class MyWrapper extends Wrapper { public Object invoke( MethodInvocation mi ) throws Throwable { //... before code... Object ret = proceed(mi); // next wrapper // or business object //... after code... return ret; } } Runtime structural reflection of the business code API to navigate add/remove tag on elements (class, method, field) import org.objectweb.jac.core.rtti.classrepository; import org.objectweb.jac.core.rtti.classitem; import org.objectweb.jac.core.rtti.methoditem; ClassItem ci = ClassRepository.get().getClass("my.MyClass"); MethodItem[] mi = ci.getmethods("foo"); mi[0].setattribute( "persistent", new Boolean(true) ); Aspect configuration 19 Application description 20 Scripting the configuration of aspects application independant (eg JDBC URL for persistence) application dependant (eg which field is persistent) sequence of calls to the aspect methods Example : gui.acc settitle mygui "DEMO"; setsubpanesgeometry mygui 2 HORIZONTAL {false,false}; setpanecontent mygui 0 Object {invoices0}; addreferencetopane mygui invoices.invoices invoices 1; addreferencetopane mygui invoices.invoices clients 1; setposition mygui 0 0 60 60; setsplitterlocation mygui 0 0.6; lauching code aspects initially woven Example : bank.jac applicationname: distransbank launchingclass: org.objectweb.jac.samples.distransbank.account aspects: distrans distrans.acc true

Lancement d'une application avec aspects 21 Comparaison JAC/AspectJ 22 1. Ecriture des classes de base 2. Ecriture des classes d'aspect 3. Ecriture des fichiers (texte) de configuration d aspects 4. Ecriture d'un descripteur d'application (fichier texte) 5. Lancement de l'application JAC AOP framework, application server Aspects written in pure Java Working on bytecode allowing to add, remove or modify aspects dynamically Automatically distributes aspects on distant servers Allows aspect developement and aspect configuration UML IDE supporting aspects Set of pre-developed configurable aspects AspectJ Java language extension New grammar to express aspects Working on source code Each modification needs compiling Does not handle distribution Only allows aspect developement IDE support for Eclipse, JBuilder, Forte, Emacs No pre-developed configurable aspects Current version 0.12.1 LGPL Current version 1.2.1 CPL Conclusion 23 JAC vs others 100% Java, no syntax extensions dynamic & remote deploy/undeploy UMLAF RAD tool (IDE, library of aspects) GUI aspect (Swing or HTML/servlet) Current developments integrating JAC-technology with component models (Fractal)