Title: P' CointeT' LedouxJ'M Menaud
1ESLO/OCM Infrastructure réflexive à composants
répartis
- P. Cointe/T. Ledoux/J.M Menaud
- ._at_emn.fr
2Classtalk un MOP pour Smalltalk
Classtalk
Smalltalk-80 Goldberg Robson 83
- métaclasses explicites
- réification de lenvoi de messages
ClassTalk Briot Cointe 89
CodA McAffer 1995
Sina Composition filters Aksit al. 1992
NeoClasstalk Rivard 97
- contrôle de lémission et de la réception des
messages - contrôle des accès à la structure
- contrôle de lémission et de la réception des
messages
- encapsulateurs des méthodes
- changement dynamique de classe
MetaClassTalk Bouraqadi 99
- compatibilité de métaclasses
- composition des métaclasses/aspects
OpenCorba Ledoux 98
3Java
- Compilateur Java pour IBM/VisualAge (OTI, P.
Mulet) - MOPs Java
- Expérimentations avec java.lang.reflect (JDK
1.1/1.3) - Reflex migration (E. Tanter)
- RAMeur mobilité/sécurité (N. Bouraqadi/M.
Sudholt) - ORBs adaptables
- Réflexion et Jonathan
- Evaluation partielle et Java (thèse de M.
Braux/J. Noyé) - Applications à la serialization et à
l invocation des méthodes distantes - Idiomes et Patterns Java (H. Albin/Amiot, Y.G.
Gueheneuc) - Comment les réifier au niveau du langage
4Objectifs dans ARCAD
- MOP Java incluant migration et sécurité
- middlewares réflexifs
- Compilation par assemblage/tissage basé sur
- AOP pour la méthodologie
- refléxivité et évaluation partielle pour
l implémentation - Réalisation d une application adaptable mettant
en uvre les PDA - Réalisation d une plate-forme de composition
(projet IST EASYCOMP)
5Three kinds of MOPs for Java
- Compile time
- reflect language constructs and based on source
to source transformations - in general per class basis
- OpenC/OpenJava, Reflective Java
- Load time
- reflect on the byte code and based on
ClassLoaderA specialization - in general per class basis
- wrappers and the Self problem
- does not go against the late binding semantics of
Java - Dalang/Kava, JavaAssist
- Run time
- modification of the VM (with a dynamic library)
to intercept message sends - can be per object basis
- MetaJava/MetXa, Guaraná(Kaffe), Iguana, RJava,
ProActive
6Architectures ouvertes pourquoi et comment ?
- Adaptabilité/Extensibilité/Flexibilité
- Late binding/Choix tardifs
- Forme vs Ouverture
- Ouverture vs Efficacité
- Efficacité vs Généricité
- Interopérabilité
7Luvre ouverte/Opera Aperta(Umberto Eco62)
- L uvre d art est un message fondamentalement
ambigu, une pluralité de signifiés qui coexistent
en un seul signifiant. - Pour réaliser l ambiguïté comme valeur, les
artistes contemporains ont souvent recours à l
informel, au désordre, à l indétermination des
résultats. On est ainsi tenté d établir une
dialectique entre forme et ouverture, qui
déterminerait dans quelles limites une uvre
dart peut accentuer son ambiguïté et dépendre de
l intervention active du spectateur sans perdre
pour autant sa qualité duvre. Il faut entendre
par uvre un objet doté de propriétés
structurales qui permettent, mais aussi
coordonnent, la succession des interprétations,
l évolution des perspectives.
8Architectures ouvertes pourquoi et comment ?
- Réflexion et programmation
- Langages à objets
- Protocoles de méta-objets
- Base vs Meta
- Programmation par aspects
- Architectures à méta-niveaux
- Crosscutting concerns
- Intelligence collective
- Granularité des composants
9B.C. Smith canonical definition of reflection
- A processs integral ability to represent,
operate on, otherwise deal with itself in the
same way that it represents, operates and deals
with its primary subject matter. - La capacité illimitée dun processus à se
représenter et se manipuler lui-même de la même
façon quil représente et manipule les entités de
son domaine dapplication premier.
10Definitions à la P. Maes (PhD thesis 87)
- A Computational System is something that reasons
ans acts upon some part of the world, called the
domain of the system. The CS is implemented in
the language defining its program. - A CS is causally connected to its domain if the
system and its domain are linked in such a way
that if one of the two changes, this leads to an
effect upon the other. - A Meta System is a CS that has as its domain
another CS, called its object-system. - Reflection is the process of reasoning about
and/or acting upon oneself. - A Reflective System is a causally connected
meta-system that has as object-system itself.
11A causally connected computational system
Causally connected representation
SOME PART OF THE WORLD
Reasons about
and acts upon
12A meta system
SOME PART OF THE WORLD
13A reflective system
SOME PART OF THE WORLD
14Recurrent questions when building a reflective
system (Ferber OOPSLA89)
- What entities should be reified, transformed into
something which can be manipulated at the
meta-level ? - How is the causal link implemented ?
- When does the system shift up to the meta-level?
- How to deal with potential infinite regression
(infinite tower of meta-levels) ?
15Reflection and Object Oriented Languages
- Encapsulating every pair (data, program) as an
object, - Reifying program elements and state as first
class objects, - Associating a metaobject (an executer or
interpreter) to every object.
16Questions ?
- MVV et interopérabilité?
- Encapsulateur/wrapper vs metaobject
- Programmation par aspects
- Comment trouver les aspects
- Comment tisser les aspects