...
- Interop
- To consume a Java API
- Concrete derivation (gen-class)
- Naming/packaging conventions
- To expose an API to Java code
- deftype/record/protocol/interface
- Deployment environments
- Special classloaders, e.g. OSGi, Eclipse
- To consume a Java API
- Application delivery
- Main method (gen-class)
- Mitigated by "-m" option to clojure.main
- Bytecode post-processing
- Android/Dalvik
- Faster startup
- Only an issue in constrained environments like Android
- Hide source code from consumers
- Main method (gen-class)
- Vet Syntax check & reflection warnings
- Not necessary, but Doesn't require writing files to disk
- But still a common use case for invoking the compiler
- Some tools support emitting .class files to temp dir
- e.g. Mark Derricutt's clojure-maven-plugin
What do we want to AOT-compile?
...