So one of the problems with Java is that you wind up with duplicate libraries on the same system. Now that we have products like maven, I’ve been wondering why this still needs to be the case. For example, one might have a central final release-only repo for all running java applications on a particular machine or a particular application server. For app servers, if you created a singular dependency on something that handles dependencies programmatically, perhaps through a maven-like mechanism in the Spring configuration, couldn’t you have all of your dependencies just handled auto-magically? If it couldn’t be done in the Spring configuration, then perhaps the container could be extended? I suppose the trick might be building the Classpath but that really doesn’t seem insurmountable. Especially since the top 3 OS’s now all have symbolic links. Haven’t looked in quite a while but it appears there is now a way to handle and/or create them in Java:
http://docs.oracle.com/javase/tutorial/essential/io/links.html
Of course symbolic links might even be overkill.
I suppose what I am asking is, couldn’t you use these ideas to greatly simplify dependency management or deployment for all Java SE / Java EE applications?
According to this article:
http://www.infoq.com/news/2009/06/jigsaw
In summary, these ideas are part of Java 7. The JVM will have a dependency management sub-component called Jigsaw and the new requires keyword to grab what it needs.