-
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 sources
inde.bk.codegen.apt
and 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 -Pagent
and 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.