jac java aspect components

17
14 novembre 2002 Julien CARSIQUE 17 diapositives 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

Upload: kyria

Post on 05-Jan-2016

73 views

Category:

Documents


2 download

DESCRIPTION

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. Sommaire. Introduction - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 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

Page 2: JAC Java Aspect Components

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

Page 3: JAC Java Aspect Components

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

Page 4: JAC Java Aspect Components

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

Page 5: JAC Java Aspect Components

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

Page 6: JAC Java Aspect Components

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

Page 7: JAC Java Aspect Components

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

Page 8: JAC Java Aspect Components

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

Page 9: JAC Java Aspect Components

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

Page 10: JAC Java Aspect Components

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

Page 11: JAC Java Aspect Components

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

Page 12: JAC Java Aspect Components

Julien CARSIQUE Titre de la page Page 12 sur 17

Développer en JAC

Architecture des applications JAC (Framework)Architecture

Page 13: JAC Java Aspect Components

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

Page 14: JAC Java Aspect Components

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

Page 15: JAC Java Aspect Components

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

Page 16: JAC Java Aspect Components

Julien CARSIQUE Titre de la page Page 16 sur 17

Encapsulation (Wrapping)

Chaîne d’encapsulation

Architecture

Page 17: JAC Java Aspect Components

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