Julien CARSIQUE

publicité
JAC
Java Aspect Components
Serveur d’applications 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
14 novembre 2002
Julien CARSIQUE
17 diapositives
Sommaire
Introduction



POA – Programmation Orientée Aspect
Le projet Java Aspect Components
L’approche Java Aspect Concept
Le serveur d’applications JAC
L’architecture JAC, les interfaces fournies


Framework, classes et méthodes, aspects…
Développer en JAC, exemples
Conclusion
Julien CARSIQUE
Sommaire
Titre
de la page
Page 2 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.
Julien CARSIQUE
Introduction
Titre
de la page
Page 3 sur 17
POA: 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 »
Julien CARSIQUE
Introduction
Titre
de la page
Page 4 sur 17
POA: les applications
Diverses 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 LGPL
Julien CARSIQUE
Introduction
Titre
de la page
Page 5 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. Pawlak
Initié en 2001
Dans la continuité du projet « Tcl Object System »
Julien CARSIQUE
Introduction
Titre
de la page
Page 6 sur 17
JAC, plus qu’un 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 à l’emploi 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 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.
Julien CARSIQUE
Introduction
Titre
de la page
Page 7 sur 17
JAC, plus qu’un serveur – 2
Trois principales composantes:
Interface d'administration
Serveur d'applications Java orienté aspect
Atelier UML de développement
Julien CARSIQUE
Introduction
Titre
de la page
Page 8 sur 17
Concept du serveur JAC
Contraintes de la POA
Exemple 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
Julien CARSIQUE
Serveur
Titre d’applications
de la page
Page 9 sur 17
Un serveur à part
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
Serveur
Julien CARSIQUE
Titre d’applications
de la page
Page 10 sur 17
Exemples d’architectures JAC
Architecture de base:
Montée en charge et
tolérance aux pannes:
Julien CARSIQUE
Architecture
Titre
de la page
Page 11 sur 17
Développer en JAC
Architecture des applications JAC
(Framework)
Julien CARSIQUE
Architecture
Titre
de la page
Page 12 sur 17
L’objet JAC
Trois concepts
techniques:
Joinpoints: pointe
une exécution du
programme
Pointcuts: Recense
les critères
d’exécution des
joinpoints
Méthodes
d’encapsulation
(Wrapping): code
à exécuter quand
les joinpoints
répondent aux
critères spécifiés
par les pointcuts
Julien CARSIQUE
Architecture
Titre
de la page
Page 13 sur 17
Aspects 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)
Julien CARSIQUE
Architecture
Titre
de la page
JAC API Doc.
Page 14 sur 17
Processus d’installation
dynamique des aspects JAC
R.T.T.I
Aspect
Aspect
configuration
Java
loader
génère metamodel Chargeur JAC
(BCEL)
tags
Classes encapsulables
new
Pointcuts
Object
métier
creates
load
dispatches
calls
orders
Wrappers
calls
reads
Application
repository
Julien CARSIQUE
JAC container
Traduit
Aspect
Component
creates
Application
descriptor
(.jac)
Classes
métier
AC manager
Noyau JAC
(objets
Titre de
la page systèmes)
Composition
aspect
reads
JAC.prop
Page 15 sur 17
Encapsulation (Wrapping)
Chaîne
d’encapsulation
Julien CARSIQUE
Architecture
Titre
de la page
Page 16 sur 17
Conclusion
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é
Julien CARSIQUE
Conclusion
Titre
de la page
Page 17 sur 17
Téléchargement