Title: 17 diapositives
1JACJava Aspect Components
- Serveur dapplications Java Open-Source (LGPL)
basé sur la Programmation Orientée Aspect - IHM de développement orienté Objet et Aspect
- Modélisation UML et génération de code
- http//www.jac.aopsys.com
- http//www.carsique.fr/JAC
2Sommaire
- Introduction
- POA Programmation Orientée Aspect
- Le projet Java Aspect Components
- Lapproche Java Aspect Concept
- Le serveur dapplications JAC
- Larchitecture JAC, les interfaces fournies
- Framework, classes et méthodes, aspects
- Développer en JAC, exemples
- Conclusion
Sommaire
3Programmation Orientée Aspect
- La POO identifie des problématiques (concern)
dun 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 limplé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
4POA les problématiques
- Deux types de concern
- Problématique métier
- Fonctionnalités techniques
- Analogie au prisme
- Gains
- 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
5POA les applications
- Diverses approches dont JAC et AspectJ
AspectJ JAC
Extension du langage JAVA Framework POA, serveur dapplications
Nouvelle grammaire pour les aspects Aspects écrits en Java pur
Utilise le code source. Chaque modif. nécessite une nouvelle compilation Un bytecode permet lajout, 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 daspects Permet le développement daspects ou leur simple configuration
Atelier UML supportant les aspects Sintègre à JBuilder, Forte et Emacs
Pas daspects pré-développés Bibliothèque daspects pré-développés configurables
Version 1.0.5 Version 0.8.1
Open Source Mozilla Public License Disponible en licence LGPL
Introduction
6Le 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. Pawlak
- Initié en 2001
- Dans la continuité du projet Tcl Object System
Introduction
7JAC, plus quun serveur 1
- JAC 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
Java - Des aspects prêts à lemploi et configurables
- Un 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 dadministration permettant de
débuguer lapplication et de modifier
dynamiquement la configuration des aspects. - Un tutorial, un guide du développeur et des
exemples.
Introduction
8JAC, plus quun serveur 2
Trois principales composantes
Interface d'administration
Serveur d'applications Java orienté aspect
Atelier UML de développement
Introduction
9Concept du serveur JAC
Contraintes de la POAExemple dun serveur
dapplications 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 dapplications
10Un serveur à part
Serveur dapplications J2EE Serveur dapplications 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 nest ajouté que si il est utile
Demande de nombreuses compétences Facile à apprendre et à utiliser. Nécessité dappré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 lAOP meilleures traçabilité, productivité, réutilisabilité du code, qualité du code, évolutivité de lapplication JAC bénéficie des avantages de lAOP meilleures traçabilité, productivité, réutilisabilité du code, qualité du code, évolutivité de lapplication
Serveur dapplications
11Exemples darchitectures JAC
Architecture de base
Montée en charge et tolérance aux pannes
Architecture
12Développer en JAC
Architecture des applications JAC (Framework)
Architecture
13Lobjet JAC
- Trois concepts techniques
- Joinpoints pointe une exécution du programme
- Pointcuts Recense les critères dexécution des
joinpoints - Méthodes dencapsulation (Wrapping) code à
exécuter quand les joinpoints répondent aux
critères spécifiés par les pointcuts
Architecture
14Aspects purement techniques pré-développés
- Persistance (SGBD et Systèmes de Fichiers)
- Authentification
- Session
- Utilisateur
- Transactions
- Déploiement
- Load-balancing
- Broadcasting
- Cohérence des données
- Synchronisation
- Accès distant
- Intégrité
- GUI (SWING et Web)
JAC API Doc.
Architecture
15Processus dinstallation dynamique des aspects JAC
Classes métier
Chargeur JAC (BCEL)
R.T.T.I
JAC container
Application descriptor (.jac)
Application repository
Composition aspect
AC manager
Noyau JAC (objets systèmes)
16Encapsulation (Wrapping)
Chaîne dencapsulation
Architecture
17Conclusion
- Séparation du technique et du fonctionnel
- Facilité de déploiement
- Gain de temps dans les développements
- Utilisation simple de services techniques
- Réutilisation facilitée du code
- Bonne montée en charge, évolutivité
Conclusion