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