Contexte
Depuis environ deux ans, l'équipe SLOOP est très fortement impliquée dans
un groupe de travail européen: Europa Working Group on Parallel C++
(Esprit Reference Number 9502). Proposer et définir un standard
pour la programmation parallèle en C++ constitue le but principal
de ce projet européen.
Des résultats très encourageants ont été obtenus; une proposition
préliminaire est diffusée ( http://www.dcs.kcl.ac.uk/Future_Directions/ et
http://www.inria.fr/sloop/europa/),
et une version synthétique a été publiée dans une conférence
internationale dédiée à la programmation parallèle et distribuée [4].
Le langage C++// [3] actuellement développé
par le projet SLOOP (Projet commun CNRS/INRIA/UNSA, resp. scientifique J.-C. Bermond) est conforme au standard proposé par Europa.
Le sujet de DEA que nous proposons s'intègre dans une action parallèle et coordonnée avec l'effort de standardisation mené sur C++.
Le but étant bien sûr de disposer de standards de programmation parallèle similaires pour C++ et Java, et d'augmenter ainsi leur diffusion.
Europa est structuré en deux parties'' Level 0 et Level 1. Level 0 constitue le coeur du standard. C'est une générateur de proxy/meta-objet protocol (MOP) indépendant de tout modèle de programmation parallèle. Level 1, un ensemble de bibliothèques standards pour la programmation parallèle, se construit au dessus de Level 0 -- C++// est en fait une bibliothèque construite au dessus d'Europa Level 0.
Dans le cadre de ces activités, des relations étroites ont été établies avec le groupe nord américain HPC++ (regroupant une trentaine de chercheurs, coordonné par Dennis Gannon), et un projet du consortium Japonais RWCP mené en collaboration avec des Universités japonaises et notamment l'Université de Tokyo, MPC++ (dirigé par Yutaka Ishikawa). Ces deux groupes poursuivent un but similaire à Europa. L'équipe SLOOP est impliquée dans la mise en oeuvre sur des réseaux nationaux et intercontinentaux d'applications parallèles et distribuées (meta-computing). Dans le cadre de tels projets, nous souhaitons utiliser l'interopérabilité de plate-forme apportée par Java.
Existant:
Les travaux antérieurs ont permis de définir
l'architecture de base et les techniques de mise en oeuvre
du système Java// (
http://www.inria.fr/sloop/javall/)
qui permet la programmation parallèle et distribuée en Java, et
répond aux objectifs présentés ci-dessus.
L'absence d'héritage multiple, les contrôles de type très stricts de Java, ainsi que ses mécanismes de protection mémoire, nous ont amenés à concevoir des mécanismes originaux, liés en particulier à la réification et à l'utilisation du concept d'interface du langage.
Parmi les principes introduits ou utilisés dans la bibliothèque Java//, on peut citer :
Notons que Java// ne nécessite aucune extension du langage Java: le système est écrit en Java pur, et l'utilisateur programme lui aussi en Java standard.
Recherches à mener:
Dans le cadre de ce sujet de DEA,
l'étudiant s'intégrera dans l'équipe SLOOP afin de
poursuivra les travaux déjà réalisés.
Mais plus particulièrement, il devra étudier et proposer
des solutions originales pour les deux points suivants:
Tout d'abord la sécurité. Java et sa machine virtuelle incorporent des contrôles qui permettent d'assurer une (certaine) sûreté de fonctionnement, en particulier lors de son utilisation sur des réseaux tel qu'Internet. Le problème sera de réussir à conserver une grande flexibilité lors de l'utilisation du système Java//, tout en intégrant des contrôles standards, basés sur le SecurityManager Java.
Le deuxième point concerne l'étude de la compatibilité et des interactions avec le standard des Beans de Java. On abordera en particulier l'utilisation de Java// pour les interactions en mode asynchrone, l'utilisation du pattern ``Adapter'' avec files d'attente et filtres. Ces études déboucheront sur des aspects méthodes et patterns pour la programmation parallèle et distribuée.
A court ou moyen terme, les points suivants pourraient également être abordés:
Bibliographie:
[1] F. Baude, F. Belloncle, D. Caromel,
N. Furmento, P. Mussi, Y. Roudier, G. Siegel,
``Parallel Object-Oriented Programming for Parallel Simulations''.
Information Sciences Journal, Informatics and
Computer Science, Volume 93, Number 1-2, August, pp. 35-64,
Special issue on ``Object-Oriented Programming'',
North-Holland, Elsevier Publishing Co., 1996.
[2] D. Caromel,
``Towards a Method of Object-Oriented Concurrent Programming", CACM,
Communications of the ACM, September 1993, Volume 36, Number 9, pp. 90-102.
[3] D. Caromel, F. Belloncle, Y. Roudier,
``The C++// System",
in G. Wilson and P. Lu editors,
``Parallel Programming Using C++", MIT Press, 1996,
ISBN 0-262-73118-5, pp. 257-296.
[4]
Caromel D., Dzwig P., Kauffman R., Liddell H., McEwan A.,
Mussi P., Poole J., Rigg M., Winder R.,
``EC++ - EUROPA Parallel C++ : A Draft Definition'',
proceedings High-Performance Computing and Networking (HPCN'96),
pp. 848-857, Brussels, Belgium, April 1996,
Springer, Lectures Notes in Computer Science (LNCS), No 1067,
ISBN 3-540-61142-8.
[5] D. Caromel, Y. Roudier,
``Reactive programming in Eiffel//", pp. 125-147,
in ``Object Based Parallel and Distributed Computing'',
Jean-Pierre Briot and Jean-Marc Geib and Akinori Yonezawa editors,
Springer Verlag, Lectures Notes in Computer Science (LNCS), No 1107,
1996.
[6] D. Caromel, Y. Roudier,
``Programmation parallèle et réactive à objets'',
à paraître dans
```Langages et modèles à objet'',
``Collection Didactique'', INRIA, 1997.
[7] Emmanuel Léty,
``Etude de techniques réflexives pour la programmation
d'applications Internets'',
Rapport de stage DEA,
Université de Nice Sophia Antipolis, DEA RSD,
Juin, 1997.
[8] Julien Vayssiere
``Programmation parallèle et distribuée en Java'',
Rapport de stage DEA,
Supélec Paris et DEA MISI (Méthodes Informatiques des Systèmes Industriels) de l'Université de Versailles,
Septembre, 1997.