module-info.class spec and attributes
Alex Buckley
alex.buckley at oracle.com
Wed Jun 29 17:46:28 PDT 2011
In the context of Project Jigsaw, javac parses module declarations every
time a source file in a modular directory structure is compiled. That's
a powerful driver for Java-like source syntax and a class file form.
Projects which don't put module information so close to the compiler may
well choose other forms.
Alex
On 6/29/2011 5:24 PM, David M. Lloyd wrote:
> On 06/29/2011 07:07 PM, Alex Buckley wrote:
>> (Sent this mail yesterday but I think it got lost.)
>>
>> On 6/28/2011 2:24 PM, David Bosschaert wrote:
>>> I wonder why such a binary .class file for module declarations is
>>> really needed. Why not go for a textual file, for instance
>>> META-INF/module-info.jmod (or something like that) and declare the
>>> module declarations in there using a textual format of some sort?
>>
>> The arguments for a binary compiled form are given at:
>>
>> http://openjdk.java.net/projects/jigsaw/doc/draft-java-module-system-requirements-12#_C
>>
>
> All of which are trivially debunkable. Yes, it is *slightly* more
> efficient to read structured binary than a text format. It is an
> insignificant difference though. We actually parse ours as XML using
> StAX, which should be somewhat more expensive than a dedicated text
> parser, and it's so fast that I'm not even able to get a significant
> measurement of the time when booting up a 100+ module project. The
> performance argument is invalid.
>
> And constraining the module metadata to a Java-like syntax with a
> Java-like file name is just a dumb idea. There's no reason for it.
>
> Saying that requiring a tool to modify the metadata for a module is
> somehow a good thing is pretty off the wall too. I mean just crazy.
>
> Come down to Earth guys.
>
>>> IMO there are multiple benefits associated keeping the textual format.
>>> People using the jar can use a simple zip tool to look inside the jar
>>> to see what its dependencies are. Additionally tools can easily be
>>> written to read the module-info.jmod file without needing to resort to
>>> classfile parsing libraries. The module information can be of use to
>>> both developer as well as deployer tools.
>>>
>>> Finally it's probably easier to make the textual file extensible, as
>>> required by [1], without resorting to inefficient reflection-style
>>> operations.
>>
>> I think these points are also captured in Appendix C. Could not the same
>> points have been made in favor of a textual format for class and
>> interface declarations?
>
> Yup. But that ship has sailed. A binary format for module
> meta-information is going to be yet another annoying disaster.
More information about the jigsaw-dev
mailing list