Project Jigsaw: Modularization Dashboard

This page contains the list of outstanding work required to modularize the JDK.

See the module-system dashboard for tasks related to the module system itself.

Static Modularization

This table lists the areas where changes are required to allow the desired modules to be packaged appropriately, essentially the module graph.

Many of the items in this table also need to be addressed as part of the Compact Profiles (JEP 161) proposal.

Area Description Status Last Update
Core Libraries

java.util.logging.LogManager dependency on java.beans.PropertyChangeListener

java.util.jar.Pack200 dependency on java.beans.PropertyChangeListener

The plan is to (a) Deprecate the 6 methods in JDK 8 with a warning that they will be removed, and (b) Remove the methods in JDK 9.

Status: Problematic methods have been deprecated in JDK 8.

2012/10/19
Management JMX Remote API dependency on RMI-IIOP protocol.

The IDL Mapping specification requires that the CORBA Tie classes be in javax.management.remote.rmi. The result is that remote management (without CORBA) is not possible without splitting this package between two modules (management and management-iiop in the current Jigsaw prototype).

For JDK 8 the tentative plan is to change the JSR-160 specification so that the RMI-IIOP transport is optional. The JMX Remote API is proposed to be included in compact3 without CORBA. RMI-IIOP will be present in the full JRE along with CORBA.

Further discussion is required for JDK 9, options include

  • Drop support for RMI-IIOP from this API (removes problematic tie/stub classes)
  • Leave problematic tie/stub classes in the management module and make use of scopes so the management module "requires corba for reflection"
  • Allow for alternative implementations of the management module

Status: Spec changes to the JMX Remote API to allow the IIOP transport be optional have been pushed to JDK 8.

2013/01/07
Networking java.net.SecureCache dependency on javax.net.ssl.SSLPeerUnverifiedException.

This causes a dependency from the base module to the jdk.tls module.

Potential solution is to include TLS in the base module. An alternative proposal is to use a scoped declaration so that the base module has a compile time dependency on the TLS module. 2012/9/19
Core Libraries java.util.Properties dependency on XML parser

Status: A small footprint XML parser based on the JSR-280 RI has been pushed to JDK 8 for use by java.util.Properties.

2013/01/07
Security sun.security.provider.ConfigSpiFile dependency on com.sun.security.auth.login.ConfigFile

This dependency forces com.sun.security.auth.login to be split between modules.

Status: A proposal to add an "implies" method to java.security.Principal is currently in review on security-dev. As part of this then the dependency on com.sun.security.auth.PrincipalComparator has been removed. 2013/01/07
Security com.sun.security.auth.callback.DialogCallbackHandler dependency on Swing classes The tentative plan for this one is:
  • Deprecate com.sun.security.auth.callback.DialogCallbackHandler in JDK 8.
  • Remove this class in JDK 9.

Status: DialogCallbackHandler has been deprecated in JDK 8.

2012/10/19
Management

DefaultMXBeanMappingFactory dependency on java.beans.ConstructorProperties

This dependency has been eliminated in JDK 8, see 7193302

2012/10/19
Client javax.swing BeanInfo classes in dt.jar

See 7179078 for more details.

2012/9/11
JAXP Change JAXP specification to allow the API be used without requiring validating parsers, xpath, etc. installed.

Preliminary changes to the specification prepared but there is a lot of implementation work required.

In light of the Profiles work with JAXP in compact2 then we need to re-evaluate whether this effort is absolutely necessary as it is a significant project.

2012/9/7
Tools

All debugging, serviceability and profiling tools are currently in the jdk.tools module. This is too coarse grain for embedded environments.

The main work required here is likely to be in SA due to the GUI tools.

2012/9/7

Dynamic Modularization

This table lists the areas where more in-depth analysis and changes are required to allow these areas run in module mode.

A complete audit of all code and specifications that relate to dynamic class loading needs to be done. That audit will likely result in additional areas being added to this table.

See JDK Modularization Tips for issues to consider.

Area Description Status Last Update
JMX

Requires a detailed analysis but MBean class loading, default loader repository and all class loading usages (both spec and implementation) need to be examined.

Auditing of spec/implementation under way 2012/9/7
Serialization

An analysis of the Java Object Serialization Specification, and the APIs for serialization defined in java.io, is required in order to determine if and how Java Object Serialization can or should work with modules.

See Serialization Notes with some initial notes on this topic.

Not assigned 2012/11/8
RMI

RMI is based on Java Object Serialization and furthermore supports dynamic class loading. An in-depth analysis is required to understand if and how RMI will work in module mode.

Not assigned 2012/11/8
CORBA/RMI-IIOP

CORBA needs to be analyzed to see if any changes will be required to work in module mode. Minimally we know that ORB.create_impl requires changes to load the ORB implementation will the appropriate class loader.

RMI-IIOP also requires in-depth analysis to determine if anything beyond support for serialization in module mode is required.

Not assigned 2012/11/8
JAXP

Update JAXP to use ServiceLoader. This will require a JCP MR as there are small specification changes required.

This work has been split into six areas and is currently in review on the core-libs-dev list.

2013/01/07
JAX-WS

Update JAX-WS, JAXB and SAAJ to use ServiceLoader; will likely require MR for all 3.

JAX-WS project has plans to do this 2102/9/7
Client area

This includes AWT, 2D, Swing, JavaBeans JavaSound, image I/O and all other areas in "client". This is mostly an audit of code that uses Class.forName, ServiceLoader or otherwise makes assumptions on class loading with fixes so that this code works in module mode. Some small specification changes are expected.

Not assigned 2012/9/7
JDBC

JDBC will likely require API changes, in particular for cases such as using a system property to specify the JDBC driver class. Some other minor changes expected, for example the code assumes that the rowset RI is loaded by the same class loader as the rowset API.

Not assigned 2012/9/7