[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
Re: Duas dúvidas: uma sobre classloaders sacanas e outra meio off-topic
- Subject: Re: Duas dúvidas: uma sobre classloaders sacanas e outra meio off-topic
- From: Giuliano Mega <megag@xxxxxxxxxxxx>
- Date: Mon, 20 Dec 2004 22:48:59 -0200
Oi pessoal,
Aproveitando para comentar um pouco sobre isso - esse problema é o
do schema evolution - a solução pode ser incrivelmente complexa. O
depurador até que se esforça - mantém uma lista de dependências e
objetos ativos e, quando você troca uma classe, ele até reseta as call
stacks dos métodos que estavam executando aquele código, presos em
breakpoints, para que o usuário possa visualizar as mudanças - é um
lance só prá você poder ir brincando com o código e vendo o que acontece.
Agora, se o programa tem instâncias ativas de objetos com a versão
antiga da classe e você detona alguma coisa muito feia (tipo um
atributo), e o código daquela classe já foi executado ou estiver
executando, a VM "sai de sincronia" - i.e. ele não atualiza a classe, ou
atualiza e arrebenta tudo (porque, ao contrário do que acontece no
JBoss, a JVMDI de fato arranca a classe antiga e substitui com uma nova
- rola uma substituição de bytecode *naquele* binding de tipo).
Então, o "hot-swap" do debugger com certeza não serve ao mesmo
propósito do hot-swap do JBoss - o primeiro serve para você poder
brincar com o código em modo debug, podendo inclusive arrebentar tudo e
derrubar a sua aplicação. O segundo serve ao propósito da flexibilidade,
da conveniência e da adaptação e, idealmente, não deve derrubar a sua
aplicação. :-)
Concluindo, o hot-swap da JPDA é bem conveniente para quem está
depurando, mas, certamente, não se trata de uma tentativa de resolver o
problema de schema evolution - ele não funciona e nem poderia funcionar
perfeitamente.
Abraços a todos e até amanhã,
Giuliano
>Isso e muito legal. Tambem fiquei curioso quando usei. Mas este "hot replace"
>nao funciona perfeitamente, depende das alteracoes feitas no codigo (se voce
>alterar algo consideravel ja para de funcionar). Tive tambem algumas vezes paus
>na JVM (ela caia, imprimindo umas mensagens meio loucas) devido a este "hot
>replace".
>
>Abracos.
>
>
>