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