Si le transport des données est une question bien maîtrisée, il n’en va pas de même du code ?” encore moins au cours de son exécution. Pourtant, cela permettrait de résoudre bien des problèmes ?” en particulier, pour l’équilibrage de charge ou la tolérance des pannes. La technologie Jini est, par exemple, utilisée par Macromedia dans son serveur d’applications pour répartir la charge entre différentes instances de machines virtuelles.
Capturer un processus
Une équipe de l’Inria est allée plus loin. Elle propose des classes Java supplémentaires et une machine virtuelle (JVM) légèrement modifiée pour les prendre en compte, permettant d’agir au niveau du processus (“thread”) en cours d’exécution. Cette approche s’appuie sur deux fonctions de Java : la sérialisation, qui permet d’encoder un objet Java sous forme d’un flux d’octets à des fins de transmission ou de persistance ; et le chargement dynamique de classes. “Toutefois, ces fonctions ne permettent pas de conserver l’état de l’exécution de l’objet”, explique Sara Bouchenak, membre de l’équipe de l’Inria.Le principe général est simple : il s’agit de “capturer” un processus, c’est-à-dire son état, et de l’envoyer vers une autre JVM. Celle-ci dispose des fonctions pour créer un processus et le lancer avec les informations capturées. Ces actions peuvent être initialisées par le thread ou par un autre programme. Mais les difficultés ne manquent pas. Les processus Java ne sont pas accessibles aux programmes. De même, les variables locales pour chaque méthode exécutée contenues dans la “pile” Java doivent être identifiées à la volée. Malgré tout, les mesures n’indiquent pratiquement aucune baisse de performances de la JVM ainsi modifiée.
🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.