Proposal (revised): #VersionsInModuleNames

mark.reinhold at oracle.com mark.reinhold at oracle.com
Thu Mar 23 18:15:24 UTC 2017


Issue summary
-------------

  #VersionsInModuleNames -- Some have argued that library maintainers
  will be tempted to encode major version numbers, or even full version
  numbers, in module names.  Is there some way we can guide people away
  from doing that?  [1]

Proposal
--------

Based on extensive feedback, from EG members and others, make two
changes:

  - Abandon the current proposal [2] to mandate that module names used
    anywhere in source-form module declarations both start and end with
    "Java letters".

    (This restriction was never implemented in the prototype RI.)

  - Revise the algorithm that computes the names of automatic modules so
    that it preserves digits at the end of module names [3].  The name
    for `commons-lang3-3.0.jar`, e.g., will now be `commons.lang3`.

    (Whether that algorithm is changed in other ways, or automatic
     modules are abandoned altogether, is the subject of the separate
     #AutomaticModuleNames issue [4].)

In order to discourage the encoding of version numbers in module names a
Java language compiler may issue a lint warning when a module with such
a name is compiled, but whether or not a compiler does so is beyond the
scope of this specification.


[1] http://openjdk.java.net/projects/jigsaw/spec/issues/#VersionsInModuleNames
[2] http://mail.openjdk.java.net/pipermail/jpms-spec-experts/2016-December/000516.html
[3] http://cr.openjdk.java.net/~mr/jigsaw/spec/api/java/lang/module/ModuleFinder.html#of-java.nio.file.Path...-
[4] http://openjdk.java.net/projects/jigsaw/spec/issues/#AutomaticModuleNames


More information about the jpms-spec-experts mailing list