[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



        Oi, Danilo,

>Olá,
>
>      Primeira dúvida: eu lembro que, quando estávamos tendo aulas sobre
>ClassLoaders, eu perguntei ao professor o que poderia acontecer se eu
>tivesse um classloader que fizesse alguma modificação no bytecode das
>classe mas não delegasse o carregamento das classe para seus ancestrais. A
>pergunta em si pode ser reformulada como: fazendo um classloader que não
>delega para os seus ancestrais o carregamento das classes, conseguiria eu
>fazer alterações maliciosas em classes como String, ArrayList, etc. ? Pra
>ser sincero, não me lembro perfeitamente da resposta. Mas estava pensando e
>acho que o que consigo fazer é que as classes que forem carregadas pelo meu
>classloader, ao usarem as classes String, ArrayList etc. acabem usando
>outras classes na verdade (com mesmo nome completo, no entanto). Imagino
>que a consequência disso é que eu tomaria  ClassCastException quando
>tentasse chamar métodos que esperam um String de verdade. É isso mesmo ?
>  
>
    É isso mesmo.

>      O outro assunto, o off-topic, diz respeito ao hot code replace do
>Eclipse/Jboss IDE. Caras, que troço bacana é isso. Estou curioso pra saber
>como o dito cujo funciona. Ainda não pesquisei nada a respeito, mas se
>alguém souber como ele funciona e estiver disposto a explicar ou indicar
>links, ficaria muito grato.
>  
>
>      O que eu achei de interessante nele é que aparentemente ele consegue
>atualizar os métodos de instâncias "vivas" de objetos no JBoss (não sei se
>ele serializa o objeto, recarrega a classe e desserializa o objeto, mas o
>efeito é que parece que ele troca o bytecode mesmo.) E uma dúvida minha é:
>esse tal de "hot code replacement" é introduzido por alguma especificação
>Java, pelo Eclipse, ou pelo JBoss IDE ?
>  
>
    Isso é uma feature da Java Platform Debugger Architecture, mais 
especificamente da Java Debug Interface (JDI).
    Você pode dar uma olhada em http://java.sun.com/products/jpda/index.jsp