Automatic Differentiation of Java Classfiles: it transforms compiled Java classes so they also compute derivatives, in forward (scalar and vector) and reverse modes, building on the Soot framework.
ADiJaC was originally designed and implemented by Emil I. Slușanschi and Vlad Dumitrel, who wrote its source transformer (credits). It had been developed inside a closed research group. For my master’s thesis I took it open source:
- A licence, a Gradle build, and a Nix flake that pins the toolchain for reproducible builds.
- GitLab CI/CD that publishes every tagged version to a public Maven registry.
- A Gradle plugin shipped inside ADiJaC’s own jar, plus example projects for it and for calling ADiJaC at runtime.
- Documentation written from scratch as a book, published per branch.
- Fixes to the transformer.
- The logos and the organization’s website.