JAXP JEP: Update Xerces implementation in the JDK

huizhe wang huizhe.wang at oracle.com
Mon Feb 3 19:19:48 UTC 2014


We'd like to propose a JEP to update the Xerces implementation in the 
JDK and bring it to up to date to the current Xerces release. Please 
review the draft.


-------------- next part --------------
Title: Updating JAXP to Xerces 2.11.0
Author: Joe Wang
Organization: Oracle
Created: 2014/01/24
Type: Feature
State: Draft
Exposure: Open
Component: core/libs
Scope: SE
Discussion: core dash libs dash dev at openjdk dot java dot net
Start: 2014/Q1
Effort: L
Duration: L
Template: 1.0
Internal-refs: Oracle:A360:
Reviewed-by: Alan Bateman, Roger Riggs, Lance Andersen
Release: 9
Target: 06/01/15


Upgrade the Xerces implementation in the JDK to Xerces 2.11.0, which synchronizes 
the JDK with the current code base of Apache Xerces.


The JDK contains an older Xerces implementation, version 2.7.1. Although there were 
updates in JDK 7 to bring in some changes, we did not bring it completely up to date 
to any later release. The goal of this JEP is to complete the update and bring the JDK 
to Xerces' latest release, 2.11.0.


The Xerces implementation in the JDK contains many changes and improvement that
are JDK specific on top of version 2.7.1. It is not a goal to completely synchronize 
the JDK codebase with that of Apache Xerces.


Upgrading to the latest Apache release would greatly improve the quality of the
JDK implementation as demonstrated by JDK7 during which the most important bug
fixes in Xerces and all of changes in Xalan were brought over.

The JDK currently has all of the critical fixes up to Xerces 2.10. However,since 
the update was partial, we were unable to update the implementation version. 
Completing the update would allow us to do so, eliminating any confusion while
keeping JDK up to date.


Upgrade JAXP to the following standards that Xerces 2.11.0 support:
    - W3C XML Schema 1.1 (Working Drafts, December 2009)
    - W3C XML Schema Definition Language (XSD): Component Designators 
      (Candidate Recommendation, January 2010)
    - Element Traversal Specification (part of DOM Standards, recommendation in 2008)
    - OASIS XML Catalogs 1.1

Update JAXP with following changes from Xerces 2.11.0:
    - Implementation of the above standards;
    - All of the bug fixes since Xerces 2.7.1. Between Xerces 2.7.1 and 2.10.0,
      All of the blockers and critical fixes along with some major and minor fixes 
      have been integrated into JDK 7. What is left are 97 major, 90 minor, and 14
      trivial bug fixes;
    - Numerous revisions that were not recorded in the Xerces issue tracker.


Relevant tests from Xerces will be brought over.

New tests related to the standards described above will need to be added to JCK 9.

New tests will need to be developed to ensure sufficient coverage of the changes 
so that there is good confidence in the compatibility.

Significant testing will be required to ensure that the update described above
will introduce no regressions in the existing implementation.

Risks and Assumptions

The addition of the standard support, as listed above, was achieved by adding
new properties. There were no significant changes to the API.

Since the integration of Xerces 2.7.1 in JDK6, there have been many changes, 
improvement and feature additions made independent of the original Xerces Implementation,
including the incorporation of the StAX implementation that shared and modified
the scanner implementation from Xerces. Bringing over changes from Xerces therefore 
may introduce conflicts in the existing implementation. Some Xerces patches therefore, 
may need to be modified to resolve any conflicts that may arise.

The assumption is that we will find relevant tests from the Xerces repository. 
However, there may not be sufficient tests for some changes, and there were changes 
that went directly into the repository without a bug id associated with them. 
There may be significant effort needed to add new tests.
The update will be done in batches that will contain a number of bug fixes and
revisions. Not every revision may have a corresponding test. Verification will 
in such cases be done by running all existing tests.


  - Other JDK components: Components such as JAX-WS may be affected. Intermediate
    JDK builds should be tested to assess any impact on these components.

  - Java EE components: Java EE components such as JAX-WS may be affected. Intermediate
    JDK builds should be made available for EE to run compatibility tests.

  - Compatibility: New standard support, such as W3C XML Schema 1.1, will added
    with the update. However, the implementation will remain compatible with 
    older standard such as W3C XML Schema 1.0. Full verification will be done
    periodically to ensure compatibility. 

  - I18n/L10n: Some new error messages will need to be translated.

  - JCK: New tests will need to be added.

More information about the core-libs-dev mailing list