NixCon 2020: Online Edition

Nix in the Java ecosystem
10-16, 17:00–17:25 (UTC), Main Stream

Java is one of the most popular languages (ranked 2nd by PYPL [1]), however there is a fragmented and incomplete solution when it comes to tooling available by NixPkgs.

This talk will go over the current state of affairs (what's available today), what's so difficult about Java compared to other supported languages in NixPkg and a proposed solution (mvn2nix [2]) aimed at filling the gap.


submission outline:
- discuss how other languages integrate with Nix; mainly by creating fixed-output derivations for their dependencies which are fetched to construct a build environment.
- communicate that Java's main build systems (Maven & Gradle) go beyond much more than simple dependency retrieval; generate sources or even bytecode weaving/
- touch on Maven specifically; whose initial release was in 2004. The tool is immensly complex and it is non-trivial to determine all the necessary dependencies.
- go over the "double invocation" pattern as a workable solution
- announce / release mvn2nix as a forward looking solution

I'm a software engineer, father and wishful amateur surfer.
I have over a decade of experience writing software and am currently employed by Google.
My prior experience has largely centered around building public cloud infrastructure for AWS & Oracle.
I am deeply passionate about reproducibility, developer tooling & ergonomics.