Summary of new and revised requirements

mark.reinhold at oracle.com mark.reinhold at oracle.com
Mon Mar 9 21:07:18 UTC 2015


For convenient reference, here are all of the new and revised
requirements suggested, so far.

Fundamentals
------------

  - _Exports_ --- A module's definition must be able to indicate which of
    its packages are _exported_ for use by other modules, and which are
    not.  ADD: Multiple modules may export packages of the same name.

  - _Non-interference_ --- The Java compiler, virtual machine, and
    run-time system must ensure that modules that contain packages of the
    same name do not interfere with each other.  ADD: If two distinct
    modules contain packages of the same name then, from the perspective
    of each module, all of the types and members in that package are
    defined only by that module.  Code in that package in one module must
    not be able to access package-private types or members in that
    package in the other module.

  - _Selective binding (NEW)_ --- It must be possible to control the
    binding process so that specific services are provided only by
    specific providers, and in a specific order.

Development
-----------

  - _Annotation digests (NEW)_ --- When packaging a module into an
    artifact it must be possible to augment its definition with a summary
    of all of the type- and package-level annotations that are present in
    the module, together with an indication of the types and packages to
    which each annotation applies.  This digest must be easily readable
    from module artifacts, and at run time those parts of it related to
    annotations retained for run time must be available through an
    appropriate reflective API.

  - _Access to class files and resources (NEW)_ --- If a module is
    defined by an artifact that contains class files and resources then
    it must be possible, once that module is added to a configuration,
    for suitably-privileged code to access those class files and
    resources.

Dynamic Configuration
---------------------

  - _Control of class loaders (NEW)_ --- An application that loads a
    module into a dynamic configuration must be able to specify the class
    loader to be used to load that module.  That loader need not be the
    same as the loader used to load any other module in the
    configuration.

  - _Isolated dynamic configurations_ --- An application must be able to
    isolate the code in different dynamic configurations at least as well
    as is possible today, where this is typically done by using multiple
    class loaders.  ADD: An application must be able to ensure that code
    in a dynamic configuration does not modify other configurations.

- Mark


More information about the jpms-spec-observers mailing list