jvm bytecode engineering 101

Post on 10-Nov-2014

417 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Kees Jan Kosterkjkoster@java-monitor.com

JVM bytecode engineering 101

Wednesday, November 6, 13

Wednesday, November 6, 13

• 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

java-monitorserver

java-monitorprobe

java-monitorprobe

java-monitorprobe

java-monitorplugin

java-monitorprobe

java-monitorprobe

Wednesday, November 6, 13

Wednesday, November 6, 13

Wednesday, November 6, 13

Wednesday, November 6, 13

Wednesday, November 6, 13

• workflow and toolchain

• JVM architecture

• instruction set basics

Wednesday, November 6, 13

write in java

compile to .class

decompile

tweak

debug

recompile to .class

bootstrap

Wednesday, November 6, 13

CA FE BA BE 00 04 AD 00 DA 00 .. .. ..

JVM

class loader class

verifier

Wednesday, November 6, 13

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

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

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

http://www.slideshare.net/tcurdt/no-dark-magic-byte-code-engineering-in-the-real-world

AspectJ

Spring

Wednesday, November 6, 13

• operand stack

• local variables• this pointer

• stack frames and invoking methods

• constant pool

• atomic vs object types

• exceptions

Wednesday, November 6, 13

• push 1

• push 2

• iadd

...

...

Wednesday, November 6, 13

• push 1

• push 2

• iadd

...

...

Wednesday, November 6, 13

• push 1

• push 2

• iadd1

...

...

Wednesday, November 6, 13

• push 1

• push 2

• iadd1

2

...

...

Wednesday, November 6, 13

• push 1

• push 2

• iadd3

...

...

Wednesday, November 6, 13

write in java

compile to .class

decompile

tweak

debug

recompile to .class

bootstrap

javapASMifier

bytecode plugin

Wednesday, November 6, 13

write in java

compile to .class

decompile

tweak

debug

recompile to .class

bootstrap

ASM CheckClassAdapter

Wednesday, November 6, 13

nobody forced you

Wednesday, November 6, 13

top related