JAXP JEP: Update Xerces implementation in the JDK
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
Discussion: core dash libs dash dev at openjdk dot java dot net
Reviewed-by: Alan Bateman, Roger Riggs, Lance Andersen
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