Java et ses aspects concurrents : sémantique formelle, visualisation et propriétés
Institution:
NiceDisciplines:
Directors:
Abstract EN:
Java is a concurrent object-oriented programming language. These two features, already complex when isolated, become even more difficult to understand when they are mixed. A formal semantics of Java is essential in order to formally define each language characteristic. Such a specification becomes a reference for programmers who can refer to it when writing programs. It is also a formal basis for proofs of languages properties. We choose to define a dynamic semantics which specifies Java program execution (in contrast to a static semantics which specifies the language typing aspects). The Typol formalism, available in the Centaur system, enables us to get semantics that it directly executable. Therefore we have developed a visualization environment for Java program execution, which presents the object-oriented mechanisms, and the features related to concurrency and synchronization graphically. Finally we examine some properties of the Java language related to the concurrency and synchronization mechanisms and we study their expression and verification in our semantic definition.
Abstract FR:
Java est un langage à objets concurrent. Ces deux facettes, déjà complexes prises isolément, deviennent très difficiles à appréhender quand elles sont réunies. Une sémantique formelle de Java est alors quasiment indispensable afin de pouvoir définir de façon formelle chaque caractéristique du langage étudié. Cette spécification devient alors une référence à laquelle le programmeur peut se reporter en cas de problème lors de la mise au point de programmes. Elle constitue aussi une base formelle au développement de preuves de propriétés. Nous avons fait le choix de définir une sémantique dynamique qui spécifie l’exécution de programme Java (par opposition à une sémantique dynamique qui spécifie l’exécution de programme Java (par opposition à une sémantique statique qui spécifierait les aspects typage du langage). L’utilisation du formalisme Typol disponible au sein du système Centaur pour exprimer cette sémantique nous a permis de la rendre directement exécutable, ce qui nous a amené à développer un environnement de visualisation de l’exécution de programmes Java mettant graphiquement en évidence les mécanismes liés à l’orientation objet, à la concurrence et à la synchronisation. Dans un dernier temps, nous avons examiné des propriétés du langage Java portant sur la concurrence et la synchronisation et nous avons étudié leur expression et leur vérification u sein de notre sémantique.