# Internals

The move to J2SE 5 has enabled a number of internal changes:

- It has enabled simplification of the code in a number of areas; Saxon can now assume the existence of classes such as `javax.xml.namespace.QName` and other newer features of JAXP, and it can exploit methods in `BigDecimal` that were not available in JDK 1.4.

- The JDK 1.4 regular expression handler has been dropped.

- Many uses of the Java collection classes within the Saxon code have been converted to use generics.

- Saxon no longer includes its own tables of character sets. Instead, if an encoding other than ASCII, UTF8, UTF16, or ISO-8859-1 is requested for serialization, Saxon relies on the character encoding data in the `java.nio` package to determine which characters are available (unavailable codepoints are represented as character references if they appear in element or attribute values, and cause serialization errors if they appear in comments, element or attribute names, etc.). As a consequence of this change, the configuration interfaces to add additional character encodings have been dropped.

- There is no longer a need to support multiple versions of the DOM interface, which means that it has become possible to bring the DOM support code back into the main JAR file.

- The s9api interface code was always compiled under JDK 1.5, and was shipped in a separate JAR file to enable the rest of the code to work with JDK 1.4. This separation is no longer necessary, so s9api is available in the same JAR file as everything else.

Next