Analyseur syntaxique de bytecode Java
Matériel : PowerPC-Unix
Langage : C et/ou Lisp (ou Java)
Outils : VVM et bibliothèque graphique
Prérequis : programmation Unix, systèmes d’exploitation, systèmes répartis
Nombre d'étudiants par projet : 2-3
But : Obtenir une expérience par la pratique de la réalisation effective de mécanismes de systèmes
répartis dans le cadre d'un projet de recherche du LIP6.
Sujet :
Le projet Machine Virtuelle Virtuelle définit une plate-forme d'exécution minimale, extensible et
dynamiquement adaptable, appelée microvm. Elle peut être enrichie par des scripts (appelés VMLets) ou
des bibliothèques existantes (des .so sous Linux) qui définissent un environnement de programmation et
d'exécution dédiés pour une application. Par exemple, la VMLet JnJVM enrichit la microvm avec un
environnement Java standard capable d'exécuter n'importe quelle application Java (1.0 à 1.5). D'autres
VMLets peuvent ensuite être ajoutés à chaud pour adapter dynamiquement l'exécution des applications
(ajout de migration, monitoring, etc).
Une VMLet de migration de bytecode Java a été développée pour distribuer l'exécution d'une application
Java dynamiquement et de manière transparente. Pour connaître ce qu'il est intéressant de migrer, la
VMlet effectue un monitoring basique de l'application.
La migration de bytecode nécessite de connaître ce qui peut être migré avant d'appliquer la VMLet: Il
n'est par exemple pas possible de migrer l'exécution de méthodes utilisant des ressources locales (thread,
fenêtre graphique, descripteurs de fichiers). Il faut aussi connaître certaines informations sur l'exécution
d'une méthode, par exemple les paramètres qu'elle modifie, ou les variables globales qu'elle utilise.
Mise en oeuvre :
Les objectifs des travaux sont:
1) Effectuer une recherche sur les analyseurs statiques de bytecode Java existants, quels sont leurs
objectifs, et quels parseurs ils utilisent,
2) Proposer puis implanter un algorithme qui permettra de connaître quels bytecodes peuvent être
migrés. L'implantation pourra utiliser un analyseur syntaxique de bytecode Java existant.
Compétences espérées: Compilation, Lexeur/Parseur, Java
Informations sur la VVM: http://vvm.lip6.fr