- From: David Brownell <david-b@pacbell.net>
- Date: Tue, 26 Oct 1999 21:22:06 -0700
- To: "Box, Don" <dbox@develop.com>
- Cc: "'www-dom@w3.org'" <www-dom@w3.org>
"Box, Don" wrote:
>
> This makes it extremely hard to write Java code that:
>
> a) Allows users to link in their own XML parser that implements org.w3c.*
> b) Mixes Level 1 and Level 2 XML parsers in the same VM.
(Not that DOM is a parser API -- you can't feed it text and get a Document
back without using proprietary APIs -- but I know what you mean since I
recently tripped over this myself.)
I think the short answer is "use JDK 1.2 not JDK 1.1".
The semantics of interface evolution changed a bit in there. As of 1.2
it's OK to change an interface. (You're not damned for all time when you
goof, unless it's a _really evil_ goof :-) The error is only when someone
invokes interface methods that the implementation doesn't support.
I recently tripped over a similar problem. Using the Jakarta.Apache.ORG
servlet engine with a JDK 1.1.8 JVM, kablooie: some code that created
a DOM L1 "Document" object failed on startup because it wouldn't work when
the DOM L2 interface classfiles (and my DOM2 implementation) were before
it in the classpath. Wrong answer; I needed to use those L2 features,
and they weren't accessible that way!
Switch over to a 1.2 JVM, it started fine -- even with L2 classfiles first.
Just use DOMImplementation.hasFeature("XML","2.0") to see if it's safe
to call those new methods.
- Dave
p.s. This confirms what Ray said ("works on 1.2") but the twist is
that there was no bug in 1.1 -- it was a spec change, as
appropriate for a major relase. The marketers weren't
completely offbase to call it "Java 2" -- not 100% anyway!
Received on Wednesday, 27 October 1999 00:22:08 UTC