Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1474 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java] Remplacer une classe pdt l'execution

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] Remplacer une classe pdt l'execution

n°700606
Threep
I'm a mighty pirate!
Posté le 15-04-2004 à 22:57:16  profilanswer
 

Bonjour, est-il possible de remplacer une classe par une autre pdt l'execution de la jvm ?
 
Par exemple, je lance une classe, j'édite le fichier .java qui lui est associé, je le recompile, et je remplace la classe initiale par la nouvelle.

mood
Publicité
Posté le 15-04-2004 à 22:57:16  profilanswer
 

n°700608
darklord
You're welcome
Posté le 15-04-2004 à 22:58:36  profilanswer
 

ca s'appelle du hot redeployment. C'est possible mais il n'y a rien de prévu en standard pour faire ça à ma connaissance. La plupart des applications servers ont une implémentation cela dit.

n°700611
the real m​oins moins
Posté le 15-04-2004 à 23:05:21  profilanswer
 

hot swap(swapping?), ça s'appelle quand on parle d'une classe. les debuggers un peu avancés le permettent (idea, eclipse), donc à priori c'est aussi faisable "soi meme"


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°700612
the real m​oins moins
Posté le 15-04-2004 à 23:05:42  profilanswer
 

cela dit, vu comment la question est posée, je soupçonne une mauvaise idée:D


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°700614
darklord
You're welcome
Posté le 15-04-2004 à 23:07:08  profilanswer
 

+1 [:joce]

n°700616
Threep
I'm a mighty pirate!
Posté le 15-04-2004 à 23:08:48  profilanswer
 

Nan nan du tout, c'est dans le cadre d'un projet permettant de simuler une pile OSI (pile réseau).
Chaque couche est implémentée dans un fichier java, qu'il est possible d'éditer et de recompiler depuis le programme.
Ce que j'aimerai, c'est ensuite intégrer cette nouvelle classe à la place de la classe initiale, pour permettre de voir en temps reel les impacts des modifs faites au code source.

n°700617
darklord
You're welcome
Posté le 15-04-2004 à 23:10:40  profilanswer
 

euh je ne suis pas sur de comprendre. Pq il faudrait modifier le code source?

n°700627
Threep
I'm a mighty pirate!
Posté le 15-04-2004 à 23:25:51  profilanswer
 

C'est une plateforme à destination d'étudiants.
 
Typiquement, le prof leur file une copie de la pile préalablement créée, en foutant des trous à certains endroits (là où y a des algos simples qu'il veut que les étudiants écrivent).
L'étudiant doit boucher les trous.
Donc, dans le meilleur des cas, ce serait bien de pouvoir voir en temps reel ce qui se passe à chaque compilation d'une couche, sans avoir à relancer toute la plateforme.

n°700635
nraynaud
lol
Posté le 15-04-2004 à 23:48:29  profilanswer
 

the real moins moins a écrit :

hot swap(swapping?), ça s'appelle quand on parle d'une classe. les debuggers un peu avancés le permettent (idea, eclipse), donc à priori c'est aussi faisable "soi meme"

nan, ce sont des appels de l'API de debug de la JVM.


---------------
trainoo.com, c'est fini
n°700638
the real m​oins moins
Posté le 15-04-2004 à 23:50:19  profilanswer
 

ha oui. mais ça sert bien à ça nan?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
mood
Publicité
Posté le 15-04-2004 à 23:50:19  profilanswer
 

n°700653
nraynaud
lol
Posté le 16-04-2004 à 00:07:32  profilanswer
 

heu uniquement à des fins de debug, la sémantique du langage, elle est pas trop faite pour ça (tu fais quoi quand une variable disparaît ?).


---------------
trainoo.com, c'est fini
n°700655
Threep
I'm a mighty pirate!
Posté le 16-04-2004 à 00:09:37  profilanswer
 

Bon en effet, c'était pourtant évident que ce mécanisme serait bcp trop complexe, surtout pour un gain finalement pas si génialissime dans mon cas.
 
Merci en tout cas pour les pistes

n°700659
the real m​oins moins
Posté le 16-04-2004 à 00:12:06  profilanswer
 

nraynaud a écrit :

heu uniquement à des fins de debug, la sémantique du langage, elle est pas trop faite pour ça (tu fais quoi quand une variable disparaît ?).  

euh oui, juste [:joce]
 
cela dit, on peut faire du dynamic class loading, et de la compil. j'avais d'ailleurs fait ça pour le code contest machin si je me souviens bien. mais bon, de là à dire que ça pourrait reloader une classe qui etait déjà loadée, là je sais pas


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°700660
R3g
fonctionnaire certifié ITIL
Posté le 16-04-2004 à 00:14:42  profilanswer
 

Et c'est possible de dire explicitement au class loader de "décharger" une classe ?


---------------
Au royaume des sourds, les borgnes sont sourds.
n°700663
the real m​oins moins
Posté le 16-04-2004 à 00:17:10  profilanswer
 

ptet ché pas[:spamafote]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°700664
nraynaud
lol
Posté le 16-04-2004 à 00:19:30  profilanswer
 

the real moins moins a écrit :

euh oui, juste [:joce]
 
cela dit, on peut faire du dynamic class loading, et de la compil. j'avais d'ailleurs fait ça pour le code contest machin si je me souviens bien. mais bon, de là à dire que ça pourrait reloader une classe qui etait déjà loadée, là je sais pas

non, on peut pas faire n'importe quoi. La règle c'est qu'il faut que la classe que tu charges hérite d'un "Truc" (donc Object au minimum) et tu n'auras pas accès (statiquement) plus bas dans la hiérarchie que "Truc". Pour la simple raison que pour charger la classe qui ferait appel à la classe dynamique chargée, il faudrait charge la classe qui sera chargée dynamiquement (oui c'est tordu).
 
 
Bon, j'arrive pas à expliquer clairement, mais non, on peut pas faire n'importe quoi en chargeant dynamiquement une classe (mais on doit pouvoir faire des chaines de chargements dynamiques mais je me lance pas là-dedans).


---------------
trainoo.com, c'est fini
n°700667
the real m​oins moins
Posté le 16-04-2004 à 00:24:31  profilanswer
 

[:gordon shumway]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°700673
nraynaud
lol
Posté le 16-04-2004 à 00:35:26  profilanswer
 

R3g a écrit :

Et c'est possible de dire explicitement au class loader de "décharger" une classe ?

non, jamais (même principe que l'allocation des objets). Mais dans les JVM modernes, il existe un garbage collector de classes


---------------
trainoo.com, c'est fini
n°700675
nraynaud
lol
Posté le 16-04-2004 à 00:44:15  profilanswer
 

c'est quoi ça ? (j'ai que la dernière frame des gif animés, c'est trop saoulant sinon)


---------------
trainoo.com, c'est fini
n°700676
the real m​oins moins
Posté le 16-04-2004 à 00:45:14  profilanswer
 

je ne sais pas trop comment le décrire. y'a que 2 frames cela dit ;)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°700799
Threep
I'm a mighty pirate!
Posté le 16-04-2004 à 10:16:31  profilanswer
 

Bon, je pense pouvoir m'y prendre autrement puisque de toute façon, tous mes objets dynamiques héritent d'une seule et même classe
 
Couche1 extends ObjetCommunicant
 
ObjetCommunicant test1 = new Couche 1();
Donc, à l'execution je peux éditer le fichier Couche1.java, lui donner un autre nom temporaire (exemple Couche1-1564156), le compiler, le charger en utilisant Class.forName(Couche1-1564156), puis faire pointer test1 vers ce nouvel objet en le castant en ObjetCommunicant.
Class c = CLass.forName(Couche1-1564156);
test1 = (ObjetCommunicant) c.newInstance(args);
 
Faut savoir que je me fous d'avoir une perte de précision sur les objets, puisque de toute façon les objets ne communique entre eux qu'au moyen de méthodes abstraites héritées de la super classe commune.
 
C'est censé marcher ?

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java] Remplacer une classe pdt l'execution

 

Sujets relatifs
[Java] Java, GL4Java etc.utiliser des fichiers wav dans une appli java.
Java et C interaction ...????lancer l'exécution d'un script VB distant
[Java] Jeu en JFrame[JAVA] [SWING] Affichage affreux de couleurs et de composants
appli Java pour Palm peut-elle lire un fichier XML ?appli Java pour Palm peut-elle lire un fichier XML ?
Durée d'execution en millisecondes[JAVA] Question con: Quel est le plus optimal?
Plus de sujets relatifs à : [Java] Remplacer une classe pdt l'execution


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR