Thomas Bonderup is building a Java platform around an existing audit engine written in Scala with ZIO, an effects and concurrency library. The engine already runs probes, collects evidence, and evaluates rules. Java 21 and Spring Boot take on the control plane: APIs and workflows for managing that work.
- Preserve the working core. Audit execution and rule evaluation stay in Scala. Asset and tenant management, scheduling, reporting, and integrations belong in the Java platform.
- Choose the stack for its maintainers. Bonderup cites Java’s familiarity in Denmark’s backend market, alongside operational conventions and integration needs.
- Stabilize the contract first. The Java side should call the engine through an explicit interface. Contract tests and output comparisons protect execution behavior as the surrounding platform changes.
- Check operational behavior, too. A migration can change timeouts, concurrency, serialization, connection pools, and observability even when business logic looks equivalent.
Draw the migration boundary around the capability that needs to change. A shared language has limited value if reaching it means rebuilding the subsystem that already expresses the domain well.
Bonderup describes an incremental direction with a first implementation slice, a certificate-management API. The engine transport remains open; the essay offers a design rationale rather than measured results from a completed cutover.