JAC Java Aspect Components
description
Transcript of JAC Java Aspect Components
14 novembre 2002 Julien CARSIQUE 17 diapositives
JACJava Aspect Components
Serveur d’applications Java Open-Source (LGPL) basé sur la Programmation Orientée
AspectIHM de développement orienté Objet et
AspectModélisation UML et génération de code
http://www.jac.aopsys.comhttp://www.carsique.fr/JAC
Julien CARSIQUE Titre de la page Page 2 sur 17
Sommaire
Introduction POA – Programmation Orientée Aspect Le projet Java Aspect Components L’approche Java Aspect Concept
Le serveur d’applications JACL’architecture JAC, les interfaces fournies Framework, classes et méthodes, aspects… Développer en JAC, exemples
ConclusionSommair
e
Julien CARSIQUE Titre de la page Page 3 sur 17
Programmation Orientée Aspect
La POO identifie des problématiques (concern) d’un point de vue Objet implémentés en Classes
Caractéristiques: emmêlement et éparpillement du code Conséquences: mauvaise traçabilité, faible productivité,
faible réutilisation et pauvre qualité du code, évolution complexe.
Concept: modulariser l’implémentation des problématiques entrelacées, en trois étapes:
Décomposition par aspects Implémentation des besoins Recomposition en fonction des aspects (tissage)
Évolution logique de la POO, la POA pourrait être la prochaine grande étape en matière de méthodologie de développement.
Introduction
Julien CARSIQUE Titre de la page Page 4 sur 17
POA: les problématiquesDeux types de concern :
Problématique métier Fonctionnalités techniques
Analogie au prismeGains:
Interactions minimisées Évolutivité Planning de dev. aisé Réutilisation du code
POO POA
Besoins communs spécifiques métier implémentés par
modules
Modules séparés pour les problématiques
métier et les aspects techniques
Modules communs implémentés nommés:
« Classes »
Modules techniques implémentés nommés:
« Aspects »Introduction
Julien CARSIQUE Titre de la page Page 5 sur 17
POA: les applicationsDiverses approches dont JAC et AspectJ
AspectJ JAC
Extension du langage JAVA Framework POA, serveur d’applications
Nouvelle grammaire pour les aspects
Aspects écrits en Java pur
Utilise le code source. Chaque modif. nécessite une nouvelle compilation
Un bytecode permet l’ajout, la suppr. et la modification dynamique
des aspects
Ne gère pas la distribution Distribue automatiquement les aspects sur des serveurs distants
Ne permet que le développement d’aspects
Permet le développement d’aspects ou leur simple configuration
Atelier UML supportant les aspects S’intègre à JBuilder, Forte et Emacs
Pas d’aspects pré-développés Bibliothèque d’aspects pré-développés configurables
Version 1.0.5 Version 0.8.1
Open Source Mozilla Public License Disponible en licence LGPLIntroduction
Julien CARSIQUE Titre de la page Page 6 sur 17
Le projet JAC: « Java Aspect Components »
Projet coordonné par la compagnie AOPSYS (Renaud Pawlak, Laurent Martelli)Développé par le groupe CAOLAC du laboratoire CEDRIC-CNAM (Pr. Gerard Florin, R. Pawlak) et le projet AProDis du LIP6 (Lionel Seinturier)En collaboration avec le LIFL (Laurence Duchien)Application directe de la thèse du Pr. PawlakInitié en 2001Dans la continuité du projet « Tcl Object System »
Introduction
Julien CARSIQUE Titre de la page Page 7 sur 17
JAC, plus qu’un serveur – 1JAC intègre :
Un environnement de développement UML orienté POA et permettant de modéliser la logique métier des applications, de générer et de compiler le code JavaDes aspects prêts à l’emploi et configurablesUn conteneur léger et ouvert pour les classes métier et les aspects purement techniques. Ces derniers peuvent être ajoutés dynamiquement pour fournir de nouvelles caractéristiques techniques au conteneur. Un noyau capable de tisser les aspects à la logique métier au runtime. Une interface d’administration permettant de débuguer l’application et de modifier dynamiquement la configuration des aspects. Un tutorial, un guide du développeur et des exemples.
Introduction
Julien CARSIQUE Titre de la page Page 8 sur 17
JAC, plus qu’un serveur – 2Trois principales composantes:
Serveur d'applications Java orienté aspect
Interface d'administration
Atelier UML de développement
Introduction
Julien CARSIQUE Titre de la page Page 9 sur 17
Concept du serveur JAC
Contraintes de la POAExemple d’un serveur d’applications J2EE
Le conteneur JAC utilise des classes Java purement métier
Au runtime: configuration des aspects pour tisser le technique avec le métier Serveur
d’applications
Julien CARSIQUE Titre de la page Page 10 sur 17
Un serveur à part
Serveur d’applications
Serveur d’applications J2EE Serveur d’applications JAC
Conteneur pour EJBs Conteneur pour des classes Java pures et pour des aspects techniques
Services techniques hardcodés, ne peuvent être modifiés
Aspects techniques pré-développés : peuvent être modifiés
Les EJBs doivent être configurés pour appeler les services techniques :
entrelacement des préoccupations (concern)
Chaque aspect technique est configuré dans un fichier qui lui est propre et est tissé au
runtime : bonne modularisation
Lourd, intègre toujours tous les services techniques
Léger, chaque aspect technique n’est ajouté que si il est utile
Demande de nombreuses compétences Facile à apprendre et à utiliser. Nécessité d’appréhender la philosophie orientée aspect
Séparation des préoccupations seulement pour les services techniques pré-
développés
Les préoccupations nouvelles et spécifiques peuvent être modularisées et implémentées
par de nouveaux aspects
Coûteux à mettre en place Gratuit sous licence LGPL. Peu de formation nécessaire
Fiable et éprouvé Doit encore faire ses preuves, première applications pilotes en cours de
développement
JAC bénéficie des avantages de l’AOP : meilleures traçabilité, productivité, réutilisabilité du code, qualité du code, évolutivité de l’application
Julien CARSIQUE Titre de la page Page 11 sur 17
Exemples d’architectures JAC
Architecture de base:
Montée en charge et tolérance aux pannes:
Architecture
Julien CARSIQUE Titre de la page Page 12 sur 17
Développer en JAC
Architecture des applications JAC (Framework)Architecture
Julien CARSIQUE Titre de la page Page 13 sur 17
L’objet JACTrois concepts
techniques:Joinpoints: pointe une exécution du programmePointcuts: Recense les critères d’exécution des joinpointsMéthodes d’encapsulation (Wrapping): code à exécuter quand les joinpoints répondent aux critères spécifiés par les pointcuts
Architecture
Julien CARSIQUE Titre de la page Page 14 sur 17
Aspects purement techniques pré-développés
Persistance (SGBD et Systèmes de Fichiers)AuthentificationSessionUtilisateurTransactionsDéploiementLoad-balancingBroadcastingCohérence des donnéesSynchronisationAccès distantIntégritéGUI (SWING et Web)
JAC API Doc.
Architecture
Julien CARSIQUE Titre de la page Page 15 sur 17
Processus d’installation dynamique des aspects
JAC
Noyau JAC (objets systèmes)
Application
repository
AC managerComposition
aspect
JAC container
Chargeur JAC (BCEL)R.T.T.I
Classes métier
Aspect
Aspect configuration
Aspect Component
Object métier
Java loader
tags
génère metamodel
new
calls
Wrappers
creates
Pointcuts
creates
dispatches
calls
ordersApplication descriptor
(.jac) reads
JAC.propreads
load
Classes encapsulables
Traduit
Julien CARSIQUE Titre de la page Page 16 sur 17
Encapsulation (Wrapping)
Chaîne d’encapsulation
Architecture
Julien CARSIQUE Titre de la page Page 17 sur 17
Conclusion
Séparation du technique et du fonctionnel Facilité de déploiementGain de temps dans les développementsUtilisation simple de services techniquesRéutilisation facilitée du codeBonne montée en charge, évolutivité
Conclusion