Download - JVM bytecode engineering 101
![Page 2: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/2.jpg)
Wednesday, November 6, 13
![Page 3: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/3.jpg)
• http://java-monitor.com/livedemo.html
• free, on-line service
• up and running in 5 minutes
• access server stats from your mobile
• get help in the integrated forum
Wednesday, November 6, 13
![Page 4: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/4.jpg)
java-monitorserver
java-monitorprobe
java-monitorprobe
java-monitorprobe
java-monitorplugin
java-monitorprobe
java-monitorprobe
Wednesday, November 6, 13
![Page 5: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/5.jpg)
Wednesday, November 6, 13
![Page 6: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/6.jpg)
Wednesday, November 6, 13
![Page 7: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/7.jpg)
Wednesday, November 6, 13
![Page 8: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/8.jpg)
Wednesday, November 6, 13
![Page 9: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/9.jpg)
• workflow and toolchain
• JVM architecture
• instruction set basics
Wednesday, November 6, 13
![Page 10: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/10.jpg)
write in java
compile to .class
decompile
tweak
debug
recompile to .class
bootstrap
Wednesday, November 6, 13
![Page 11: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/11.jpg)
CA FE BA BE 00 04 AD 00 DA 00 .. .. ..
JVM
class loader class
verifier
Wednesday, November 6, 13
![Page 12: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/12.jpg)
0xCAFEBABE version #
constant poole.g. strings
constant poole.g. strings
access flagsaccess flags
class infoclass info
fieldsfields
methodsmethods
attributesattributes
CA FE BA BE 00 04 AD 00 DA 00 .. .. ..
Wednesday, November 6, 13
![Page 13: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/13.jpg)
0xCAFEBABE version #
constant poole.g. strings
constant poole.g. strings
access flagsaccess flags
class infoclass info
fieldsfields
methodsmethods
attributesattributes
CA FE BA BE 00 04 AD 00 DA 00 .. .. ..
Transformer
static final Logger __log = new ...
__log.info(…);
__log.info(…);
Wednesday, November 6, 13
![Page 14: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/14.jpg)
JVM
class loader class
verifier
CA FE BA BE 00 04 AD 00 DA 00 .. .. ..
Transformer
CA FE BA BE 00 04 AD 00 BE 45 76 .. .. ..
Wednesday, November 6, 13
![Page 15: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/15.jpg)
http://www.slideshare.net/tcurdt/no-dark-magic-byte-code-engineering-in-the-real-world
AspectJ
Spring
Wednesday, November 6, 13
![Page 16: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/16.jpg)
• operand stack
• local variables• this pointer
• stack frames and invoking methods
• constant pool
• atomic vs object types
• exceptions
Wednesday, November 6, 13
![Page 17: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/17.jpg)
• push 1
• push 2
• iadd
...
...
Wednesday, November 6, 13
![Page 18: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/18.jpg)
• push 1
• push 2
• iadd
...
...
Wednesday, November 6, 13
![Page 19: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/19.jpg)
• push 1
• push 2
• iadd1
...
...
Wednesday, November 6, 13
![Page 20: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/20.jpg)
• push 1
• push 2
• iadd1
2
...
...
Wednesday, November 6, 13
![Page 21: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/21.jpg)
• push 1
• push 2
• iadd3
...
...
Wednesday, November 6, 13
![Page 22: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/22.jpg)
write in java
compile to .class
decompile
tweak
debug
recompile to .class
bootstrap
javapASMifier
bytecode plugin
Wednesday, November 6, 13
![Page 23: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/23.jpg)
write in java
compile to .class
decompile
tweak
debug
recompile to .class
bootstrap
ASM CheckClassAdapter
Wednesday, November 6, 13
![Page 24: JVM bytecode engineering 101](https://reader038.vdocument.in/reader038/viewer/2022102813/54623f4faf7959f84e8b4e04/html5/thumbnails/24.jpg)
nobody forced you
Wednesday, November 6, 13