This JSR begins to address a well known problem in Java development—dealing with jars and versioned resources. Specifically, the JSR attempts to define “a distribution format and a repository for collections of Java code and related resources. It also defines the discovery, loading, and integrity mechanisms at runtime.”
I say it’s a well known problem because there are numerous attempts to reduce jar-hell and bring order to Java resources, either during build time or runtime. For example, Maven uses central repositories to organize build resources. Java Web Start and JNLP use an XML configuration file to determine runtime resources and handle versioning. OSGi and Eclipse use bundles and plugins and their corresponding manifest or plugin configuration files. Apache Avalon created a repository API that has evolved into DPML’s Transit project (worth a look if you haven’t heard of it before). And there are other approaches.
All these emerged because jars just don’t provide ‘metadata’ for versioning and dependency resolution. A “module system” could go a long way to solving this problem, but at the same time the Java community has a lot of investment in the current attempts. If nothing else, I hope the expert group will be cognizant of the work that’s already been done in this area.
Commentary