Proposal: #VersionsInModuleNames

Mark Reinhold mark.reinhold at oracle.com
Mon Sep 12 15:11:01 UTC 2016


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

Make two small changes:

  - Revise the automatic-module naming algorithm implemented by `javac`
    at compile time and the `ModuleFinder::of` method [2] at run time.
    It will now strip any trailing digits and period characters that
    remain after removing the version component, if any, from the name
    of the original JAR file.  Thus `foo-bar-1.2.3.jar` becomes the
    automatic module named `foo.bar` with the version string `1.2.3`,
    and `foo-bar42.jar` becomes the automatic module named `foo.bar`
    with no version string.

  - Revise `javac` to emit a lint warning, enabled by default, when a
    module-declaration compilation unit mentions a module name that
    ends with one or more digit characters, whether it is the name of
    the module being declared or the name of a module referenced in a
    `requires` directive or a qualified `exports` directive.


[1] http://openjdk.java.net/projects/jigsaw/spec/issues/#VersionsInModuleNames
[2] http://download.java.net/java/jigsaw/docs/api/java/lang/module/ModuleFinder.html#of-java.nio.file.Path...-


More information about the jpms-spec-experts mailing list