[jsr294-modularity-eg] 294 EG conf call, 2009-04-08

Bryan Atsatt bryan.atsatt at oracle.com
Tue Apr 14 16:19:51 EDT 2009



Alex Buckley wrote:
> Bryan Atsatt wrote:
>>> javac will enforce a match between the immediate child of ModulePath 
>>> and its enclosed module-info.java/class. It is checked when 
>>> compiling module-info.java and when reading module-info.class. It 
>>> extends the current practice of enforcing a match between the 
>>> location at which a class is found on the SourcePath/ClassPath and 
>>> the fully-qualified name of that class.
>> Then doesn't it follow that the version number should be "required" 
>> in the directory name as well?
>
> When multiple modules of the same name are on the filesystem at once, 
> sure. When only one version of a module is present, I'm not sure 
> requiring a version literal is helpful. (Maybe a version isn't just a 
> number :-) Certainly it should not be mandatory to give a version when 
> declaring a module in the language.
>
> That said, let Jon and I discuss this some more.
>
>>>> IOW, is there some lookup logic assumed here, allowing the compiler 
>>>> to search for the module-info for "com.bar.app" without cracking 
>>>> open the module-info files?
>>>
>>> In all cases I can think of, if the compiler needs the module-info 
>>> for com.bar.app, then it needs to open com.bar.app/module-info. The 
>>> check is somewhat auxiliary.
>> Right, so the compiler can simply check all of the -modulepath 
>> entries for a child directory called "com.bar.app", then expect 
>> module-info under that.
>
> Yes. I should have said that javac's regular enforcement does make 
> this expectation reasonable.
>
>> What if a user really wants to keep their existing source directory 
>> structure, *and* use module-info? More compiler options (e.g. 
>> pointing directly to module-info files), or "sorry"?
>
> Oh, then you're on slide 3. Just set SourcePath/ClassPath as today and 
> make sure module-info is in the root. The limitation is that you can't 
> compile multiple modules in a single javac invocation. This is 
> basically slides 6 and 7. To overcome that limitation, javac would 
> have to find the right module-info on the SourcePath/ClassPath by 
> either having module name in source or realizing which SourcePath 
> entry (src/classes1 v. src/classes2) encloses the file being compiled. 
> javac would also have to redefine -d to allow multiple output 
> directories, and slide 7 shows why that's undesirable.
Ah, I interpreted the slides as a progression towards a solution; as 
long as javac will also look in SourcePath/ClassPath for module-info, 
this case is covered.
>
> Alex
> _______________________________________________
> jsr294-modularity-eg mailing list
> jsr294-modularity-eg at cs.oswego.edu
> http://cs.oswego.edu/mailman/listinfo/jsr294-modularity-eg
>


More information about the jsr294-modularity-eg mailing list