Andres_D est de droite, on peut très bien le faire à l'aide personnalisée de chargement de classe, voici un guide détaillé sur la façon de le faire: http://www.javaworld.com/javaworld/jw-06-2006/jw-0612-dynamic.html?page=1
L'article explique comment écrire dynamique de code Java. Il traite d'exécution compilation du code source, la classe de rechargement, et l'utilisation du Proxy modèle de conception pour apporter des modifications à une classe dynamique transparente à son appelant.
En fait, chercheur en Autriche ont écrit une JVM qui permet même de recharger les classes avec différents type de hiérarchies. Ils ont atteint cet objectif par l'utilisation de thread existant enregistrer des points de générer un état complet du côté de l'univers " d'un objet et toutes ses références relatives et référencé le contenu, puis une fois entièrement remanié avec toutes les modifications nécessaires il suffit de remplacer dans tous changé de classe. [1] Voici un lien vers leur projet http://ssw.jku.at/dcevm/ l'oracle de parrainage rend certainement pour d'intéressantes spéculations sur les projets d'avenir.
Moins intrusif des changements à la méthode organes et les champs sont d'ores et déjà possible dans le standard de la machine virtuelle java à l'aide de l'échange à Chaud des capacités de la JPDA introduit dans Java 1.4:
docs.oracle.com/javase/1.4.2/docs/guide/jpda/enhancements.html#hotswap
Je ne suis pas sûr de savoir si c'était la première mais ce Soleil employé du papier à partir de 2001 semble être l'une des premières propositions de mentionner les capacités de ce dernier à la Hot-Swap. [2]
RÉFÉRENCE
[1] T. Würthinger, C. Wimmer, et L. Stadler, "Code Dynamique de l'Évolution de Java", présenté lors de la 8e Conférence Internationale sur les Principes et la Pratique de la Programmation en Java, Vienne, 2010.
[2] M. Dmitriev, "Vers flexible et sûre de la technologie pour l'exécution de l'évolution du langage java applications", dans OOPSLA Atelier sur l'Ingénierie Complexe de Systèmes Orientés Objet pour l'Évolution, 2001.