![]()
Précédent : Outils de manipulation
structurée Remonter : Résultats nouveaux Suivant :
Spécification à
l'ordre supérieur
Mots clés : programmation parallèle à objets, sémantique, interprétation abstraite, environnement interactif, compilation, Java .
Nous avons continué notre travail sur l'environnement interactif de programmation Java en nous intéressant plus spécialement aux aspects syntaxiques et en adaptant notre définition du langage aux spécifications publiées par Sun (en particulier l'affichage respecte les conventions de Sun).
La notion de continuation automatique a été généralisée et formalisée dans un style opérationnel [[13]]. Deux stratégies ont été proposées : la première consiste à ne retourner que des réponses complètes, la seconde, plus asynchrone par l'utilisation de réponses partielles, permet d'éviter les situations de deadlocks. D'autre part, nous avons pu montrer formellement des propriétés du modèle Eiffel// comme l'absence d'objets partagés ou la séquentialité des sous-systèmes [[12]].
Dans le cadre du langage Java, nous proposons, par des techniques d'interprétation abstraite, et des analyses de formes sur la structure du graphe d'objets un moyen de détecter comment rendre certains objets actifs, et donc de paralléliser certaines activités. Ces techniques peuvent également servir pour optimiser la compilation Java en exploitant par exemple des informations sur la durée de vie des variables, ou en supprimant des appels virtuels (inférence de type).
Nous avons apporté de nouvelles fonctionnalités aux outils de mise au point de programmes Java et nous avons défini formellement la gestion des exceptions.
Nous avons également développé en ML un vérificateur de code pour l'assembleur de la machine virtuelle Java.