Requires, Exports, and Provides

Paul Benedict pbenedict at apache.org
Fri Nov 27 14:01:57 UTC 2015


Tim,

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
> >
>
>



More information about the jpms-spec-comments mailing list