Ce projet de recherche doctorale est publié a été réalisé par gilles MULLER
Description d'un projet de recherche doctoral
Java Virtual Machine Optimizations for Constraint Solvers
Résumé du projet de recherche (Langue 1)
Optimally placing applications on devices in a pervasive computing environment is a challenge, since many applications with differing requirements share a common infrastructure. Therefore, optimal application placement requires resolving a number of conflicting constraints about resource usage and availability. The context of this PhD is to implement constraint solving within a pervasive computing infrastructure as close as possible to the information about resources. Since modern pervasive middlewares are typically implemented using Java, this implies the implementation of an efficient constraint solver on top of the JVM. However, constraint solvers have specific characteristics that are not appropriately supported by current JVMs, leading to poor performance. Solving constraints requires searching through a state space, which is typically implemented using a backtracking algorithm that induces frequent saving and restoring of memory. This induces a significant usage of memory that stresses the GC. Additionally, copying objects in Java can only be implemented at the field level, which prevents the use of well known low-level optimizations.
Résumé du projet de recherche (Langue 2)
The topic of the PhD is first to develop monitoring techniques for understanding the precise sources of inefficiency of a constraint solver on top of a JVM. This information will then be used to improve the constraint solver either at the application level, or by proposing new extensions at the JVM level. The context of this PhD is the Infra-JVM research project founded by the ANR (French NSF). Developments will be based on the Choco constraint solver , which is a reference implementation of the JSR 331 that defines a Java runtime API for constraint programming, and VMkit , a research substrate for the implementation of managed runtime environments.