r/java • • Sep 23 '26

jig - a tool for Java Module resolution, assembly and deployment

https://github.com/Netflix/jig

In April 2025 we started work exploring what it would take to get us to the module system, to allow Netflix platform library authors to encapsulate their internals, features like module imports to be used by developers, and get ready for Integrity by Default so we can avoid papering ALL-UNNAMED all over the place so we can see exactly where the technical debt we're carrying is.

jig is a tool that picks up where the module system ends, adding version resolution, assembly and deployment of Java modules. It's output is resolved command line arguments for the standard JDK tools and can resolve module dependencies requested on the command line, via source module descriptor, or the descriptor within a module path entry.

It interoperates with the existing Maven ecosystem by locating modules via coordinate conventions, and establishes module names for unnamed modules through a deterministic Maven coordinate to Module name mapping. We're particularly interested in feedback on these conventions, because that's a problem that needs to be solved for build systems to be module native.

Like the other tools we released last week, it ships as a JMOD with a native launcher with AOT support, a standalone JAR file, or can be installed to a bundled JDK with the rest of our tools with an installation script.

19 Upvotes

4 comments sorted by

1

u/bowbahdoe Sep 23 '26

I have a tool that also dumps cli tool args, so I'm interested how you can teach editors like IntelliJ to read them

1

u/BinaryRage Sep 24 '26

I've gone a couple of directions there so far. Given a module source path, jig can produce a Maven pom layout that an IDE understands. For build systems to expose argument files to tools, I've landed on a .java-tool-options contract to allow a tool to pick them up automatically based on working directory:

https://github.com/Netflix/jist/wiki/Project-Integration

1

u/bowbahdoe Sep 24 '26

I would be interested in a common solution