Jigsaw prototype, take 2

Gregg Wonderly greggwon at cox.net
Fri Aug 30 06:48:21 PDT 2013


What I dislike the most about tightly bound modularization systems, is 
deployment and dependency analysis and "requirements" which create a giant slow 
down in development because things have to be "structured" in particular ways, 
in order for thing to meet the "systems" requirements.   In particular, I 
dislike anything which mandates non-circular dependencies and other "structural" 
requirements.  There are all kinds of concerns about not being able to compile 
separate modules with circular dependencies when you start from nothing but 
source.  That's my problem as a developer to resolve, not a modularization 
system.  .Net has this kind of nonsense deeply ingrained and there are all kinds 
of separate issues that this creates in and of itself.

Java has always supported doing something like

mkdir classes
javac -d classes `find . -name '*.java'`

and then using that 'classes' directory as your classpath for subsequent 
builds.  For super massive source trees, that find could of course, be a 
filtered, smaller list of interfaces, abstract classes and super classes which 
have the circular dependency issue.  And in fact tools can be used to find such 
circular dependencies, and to then create the "base.jar" needed to remove the 
circular dependency issue from the rest of the code base.

Please, oh please, let us keep the power of the classpath, the power of dynamic 
loading, and the flexibility of "roll your own classloader", and focus on 
providing a meta data approach that allows tools to help organize your needs 
into the use of the things which are the POWER of Java.

Gregg Wonderly


On 8/29/2013 10:55 PM, mark.reinhold at oracle.com wrote:
> 2013/8/28 15:50 -0700, Tim Boudreau <niftiness at gmail.com>:
>> On Wed, Aug 28, 2013 at 12:27 PM, <mark.reinhold at oracle.com> wrote:
>>> I've created a new forest, http://hg.openjdk.java.net/jigsaw/jake, where
>>> we're going to explore a simplified approach to achieving the goals of
>>> this Project.
>> Simplified how?
> That's partly answered in the very next paragraph:
>
>    Among other things, we're going to see whether we can get away without
>    introducing a distinct "module mode" as we have in the current prototype
>    (which is incompatible, in some narrow yet deep ways, with long-standing
>    behavior) and without doing dependence resolution (since build tools like
>    Maven, Ivy, and Gradle already do that well enough).
>
> That is, I admit, somewhat cryptic.  I'm writing up a longer note that
> will explain the background and the new approach in more detail.
>
> - Mark
>



More information about the jigsaw-dev mailing list