¿Qué es exactamente la inyección de bytecode de Java y por qué la usaría uno?¿Qué es la inyección de código byte de Java?
Respuesta
código Java se compila en código de bytes (Foo.java ->> Foo.class
). La inyección de Bytecode está modificando Foo.class
en tiempo de ejecución para inyectar código justo antes de cargarse y ejecutarse.
imaginar un escenario en el que yo quiero averiguar cuántas veces método
public void bar();
se invoca en Foo.class
. Podría escribir un agente usando java.lang.instrument
que intercepta Foo.class
durante la carga de la clase, lo modifica usando ASM para que bar()
llame a en la entrada del método.
Ahora puedo correr mi programa:
$java -javagent:MyAgent Foo //assuming Foo has a main() defined
y en tiempo de ejecución, Foo.class
no sólo hacer su trabajo normal, se hará también trabajar he definido en MyAgent
cada vez que se invoca bar()
.
Para obtener un puntero al escribir un agente desde cero, inicie here.
En primer lugar la búsqueda de google da una interesante leer Java Programming: Bytecode Injection
Para abordar la segunda parte de su pregunta. Lo uso porque soy perezoso y no quiero gastar la mitad de mi vida (laboral) escribiendo getters y setters. En su lugar, puse una anotación @Data antes de la definición de mi clase y todo está hecho.
Vea la demostración de video de 3 minutos en Project Lombok.
- 1. ¿Es posible la inyección de código en Java?
- 2. Descompilación de código de byte ofuscado java
- 3. ¿Qué es la Inyección de Dependencia?
- 4. Java - Byte [] a byte []
- 5. Cómo traducir código Byte a código nativo de la máquina
- 6. Java: byte [] a Byte []
- 7. ¿Por qué la inyección de código posterior a la compilación es una mejor idea que la inyección de código de precompilación?
- 8. ¿Qué es una matriz byte []?
- 9. Java Byte Code Visualizer
- 10. java datos de tipo byte
- 11. ¿Qué hay de malo en hacer la configuración de Inyección de Dependencia en el código?
- 12. Inyección de código con C#
- 13. ¿Es seguro este hilo de código de cifrado de Java?
- 14. ¿El tipo de byte de Java es extraño?
- 15. es el byte de Java el mismo que el byte de C#?
- 16. cómo comparar la matriz Java Byte []?
- 17. Escribiendo el código de byte de llvm
- 18. LRU byte Cache java
- 19. ¿por qué byte + = 1 compilar pero byte = byte + 1 no?
- 20. ¿Qué es el archivo de byte-caché de GWT?
- 21. Inyección Dll - ¿Qué es posible con eso?
- 22. ¿Qué es la optimización de código?
- 23. "loop:" en código Java. ¿Qué es esto? ¿Por qué compila?
- 24. Formas de dificultar la piratería/inyección/manipulación de código Javascript
- 25. Convirtiendo de byte a int en java
- 26. inyección de CSS: ¿qué es lo peor que puede pasar?
- 27. ¿Por qué no hay byte o literales cortos en Java?
- 28. Conversión de Java Byte Array Problema
- 29. ¿Cuál es la explicación de este código java?
- 30. ¿Por qué es necesario compilar el código Java pero el código JavaScript no?