JooFlux : modification de code à chaud et injection d'aspects directement dans une JVM 7
Abstract
Changing functional and non-functional software implementation at runtime is useful and even sometimes critical both in development and production environments. JooFlux is a JVM agent that allows both the dynamic replacement of method implementations and the application of aspect advices. It works by doing bytecode transformation to take advantage of the new invokedynamic instruction added in Java SE 7 to help implementing dynamic languages for the JVM. JooFlux can be managed using a JMX agent so as to operate dynamic modifications at runtime, without resorting to a dedicated domain-specific language. We compared JooFlux with existing AOP platforms and dynamic languages. Results demonstrate that JooFlux performances are close to the Java ones --- with most of the time a marginal overhead, and sometimes a gain --- where AOP platforms and dynamic languages present significant overheads. This paves the way for interesting future evolutions and applications of JooFlux.
Modifier les portions fonctionnelles et non-fonctionnelles des applications au cours de leur exécution est utile et parfois critique tant lors des phases de développement que de suivi en production. JooFlux est un agent JVM qui permet à la fois de remplacer dynamiquement des implémentations de méthodes que d'appliquer des aspects. Il fonctionne en opérant des transformations de bytecode pour tirer parti de la nouvelle instruction invokedynamic apparue dans Java SE 7 pour faciliter l'implémentation de langages dynamiques au-dessus de la JVM. JooFlux peut être piloté à l'aide d'un agent JMX afin de conduire les modifications à l'exécution, et ce, sans s'appuyer sur un langage dédié. Nous avons comparé JooFlux à d'autres plates-formes d'AOP et des langages dynamiques. Les résultats montrent que les performances de JooFlux sont proches de celles du code Java non modifié. Le sur-coût est généralement négligeable, et nous observons même parfois de légers gains, tandis que les plates-formes d'AOP et langages dynamiques montrent des performances significativement dégradées. Ceci ouvre de prometteuses perspectives tant pour les évolutions futures de JooFlux que pour des études de cas.
Domains
Operating Systems [cs.OS]Origin | Files produced by the author(s) |
---|
Loading...