-
Die Java Virtual Machine dient als Abstraktionsschicht zwischen Betriebssystem und der Anwendung.
| Quellcode |----> Compiler --->| Bytecode |---> JVM --->| Assembler |
Beispielsweise durch: JAXB, Template based e.g. Freemarker, Velocity
- run
mvn clean generate-sources -Pxjc - view resulting Person.java in
target\generated-sources
Beispielsweise durch: ASM, BCEL, CGLib, ByteBuddy Bytecode einsehen: http://www.javadecompilers.com/
- run
mvn clean install(this jar is the annotation processor) - run
mvn clean compile -Papt(to apply annotation processor) - copy
target/generated sourcesinde.bk.codegen.aptand run Main class
src\main\java\de\bk\codegen\lombok\Person.java- compile and inspect resulting class file
src\main\java\de\bk\codegen\bytebuddy\InstantiationExample.java- run main method, see instance getting created and toString method being called
- run
mvn clean install - run
mvn clean compile exec:exec -Pagentand view log for javaagent out print
+ Der Quellcode ist einsehbar. leichter zu debuggen Der Generator ist leicht zu schreiben.
- Ein Compiler ist erforderlich. Die Übersetzung kostet Zeit und Speicher.
+ Bytecode sehr performant Es ist kein Java-Compiler nötig. sinnvoll bei Bytecode-zu-Bytecode-Transformationen.
- Der Bytecode ist schlecht einsehbar. Das Debugging ist schwierig. Der Generator ist schwer zu schreiben, da Wissen über Bytecode nötig ist.