terça-feira, 6 de maio de 2008

Manipuladores de Bytecode

Olá pessoal! É meu primeiro post aqui no blog e eu já vou falar sobre um assunto meio "barra pesada": manipulação de bytecode. Estou trabalhando com um aluno em uma ferramenta para medida dinâmica de reuso e precisaria instrumentar o código para que ele chame minhas classes a cada linha de código executada. A solução seria inserir bytecode no carregamento da classe, para que a cada linha de código fosse chamado um método da ferramenta.

Minha primeira tentativa foi utilizar o framework BCEL. O resultado foi um desastre! Além de não haver uma documentação muito boa, apareceu um problema que eu não consegui resolver (as vezes funcionava e as vezes não funcionava). Em uma conversa com o Michael Nascimento, o MisterM, ele me recomendou utilizar o ASM.

Me surpreendi como o ASM possuia uma API simples baseada em eventos e como ele é bem documentado. Consegui rapidamente fazer o que precisava e não tive nenhum problema por parte do framework. Além disso ele ainda é bem mais rápido que o BCEL. Recomendo totalmente!!! Talvez o ASM faça alguma aparição em uma das próximas edições da MundoJava...

Nenhum comentário: