JavaTM API for XML Processing Release Notes
Reference Implementation (RI) Version: 1.6.0
March 3, 2014
The updates in JAXP 1.6 are primarily motivated by the JDK 8 effort Prepare for Modularization. To allow for future modularization of the Java SE platform where service providers may be deployed by means other than JAR files and perhaps without the service configuration files, the JAXP 1.6 specification requires the use of the service provider loader facility defined by java.util.ServiceLoader to load services from service configuration files. This change has been incorporated into JDK 8. Please read below for more details about this update.
Changes and bug fixes:
- Locating and loading Service Providers
JAXP performs a 4 step procedure to locate and load service providers. In JAXP 1.6, the manual process of reading the service files in the 3rd step is replaced by using the service provider loader facility defined by java.util.ServiceLoader. For compatibility, please see the compatibility section below.
JAXP 1.6 RI includes the relevant security fixes that were included in JDK 7 update 51 please refer to JDK 7 update 51 release notes for more details.
Please refer to:
The JAXP 1.6.0 Change Log
- Custom ClassLoaders
Service providers across JAXP will now be located consistently following the process as defined in java.util.ServiceLoader. The changes may result in some subtle differences from implementations of prior releases where the provider-configuration file may have been located differently, for example, by using a different getResourceXXX method of the ClassLoader than ServiceLoader. Applications that implement their own Classloaders shall therefore make sure that the ClassLoaders' getResourceXXX methods are implemented consistently so as to maintain compatibility.
- StAX API
The StAX API 1.2, JSR 173 MR3, defined newInstance/newFactory methods that take two parameters: a factoryId and classLoader. The first parameter (factoryId) did not constrain what the value could be in the StAX specification, it implied it could be any arbitrary string. With JAXP 1.6 specification change, in the context of JAXP, the value of factoryId must be the name of the base service class if it is intended to represent the name of the service configuration file, that is, if it is not the name of a System Property.
The second parameter (classLoader) was ignored by the factories when looking up and instantiating the services. This is no longer the case in JAXP 1.6 and JDK 8. JAXP 1.6 now loads implementations with the specified classLoader when it is not null.
- JDK Source Level
Previous versions of JAXP implementation supported JDK 5. Starting from JAXP 1.6, JDK 6 and later are required due to the use of java.util.ServiceLoader.
End of JAXP Standalone distribution
JAXP 1.6 will be the final standalone release. All future revisions to the JAXP API
will be part of the Java SE specification, starting with Java SE 9.
Future JAXP development will be done solely within the