Requires, Exports, and Provides

Tim Ellison Tim_Ellison at uk.ibm.com
Fri Nov 27 16:49:43 UTC 2015


... and yet in type declarations we use "extends" and "implements"  ;-)

I agree that readability, and thereby comprehension, is not enhanced by 
naming modules in the same way we name packages.

Tim


Paul Benedict <pbenedict at apache.org> wrote on 27/11/2015 14:01:57:
> You made an interesting analogy regarding the "import" syntax. I was
> thinking about it... If you really want the module syntax to fit 
> with current syntax, the keywords should be in the imperative form: 
> require, export, provide. The ending "s" should be dropped.
> Cheers,
> Paul
> On Nov 27, 2015 4:22 AM, "Tim Ellison" <Tim_Ellison at uk.ibm.com> wrote:
> Hello Paul,
> 
> Being explicit would help if there were any ambiguity about the 
> declaration, and I'm not convinced that adding the additional syntax
> would be helpful here.
> 
> In particular, the current pattern, e.g. "exports java.sql;" fits 
> with the existing syntax for an import statement.  That is, we write
> 
>    import java.sql.Timestamp;
> or
>    import java.sql.*;
> 
> and not "import class" and "import package"
> 
> As for the service provider, I guess it is a matter of taste, but 
> I'm comfortable that the service interface is more prominent than 
> the implementation type.
> 
> Regards,
> Tim
> 
> 
> Paul Benedict <pbenedict at apache.org> wrote on 25/11/2015 22:48:42:
> > Dear EG members, are you still refining syntax? If so, I would like 
you to
> > consider making the keywords a bit more explicit regarding "requires",
> > "exports", and "provides/uses" by adding "module", "package", and 
"class"
> > respectively.
> > 
> > Personally, I find the explicitness to be much more instantly 
readable.
> > WDYT?
> > 
> > module java.sql {
> >     requires module java.logging;
> >     requires module java.xml;
> >     exports package java.sql;
> >     exports package javax.sql;
> >     exports package javax.transaction.xa;
> >     provides class java.sql.Driver with com.mysql.jdbc.Driver;
> > }
> > 
> > module java.base {
> >     ...
> >     exports package to
> >         module java.corba,
> >         module java.logging,
> >         module java.sql,
> >         module java.sql.rowset,
> >         module jdk.scripting.nashorn;
> > }
> > 
> > I also think you could replace "with" with "for" if you flip the 
ordering:
> > provides class com.mysql.jdbc.Driver for java.sql.Driver;
> > 
> > Cheers,
> > Paul
> > 

Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU



More information about the jpms-spec-comments mailing list