[jdom-interest] Fast Factory

Elliotte Rusty Harold elharo at metalab.unc.edu
Fri May 23 02:33:44 PDT 2003


At 9:03 PM -0700 5/22/03, Dennis Sosnoski wrote:

>Users of a library should be able to take off the training wheels 
>when they want to. Most users will probably leave them on anyway, 
>but insisting on keeping them welded in place is condescending to 
>your target developers.

Verification checks, i.e. preconditions and postconditions and class 
invariants, aren't training wheels. They are fundamental aspects of 
an API.  Removing the requirement for well-formedness is like 
removing the requirements to emit correct TCP/IP packets from a 
sockets API. Sure there are reasons why a programmer might want to 
emit bad TCP/IP data, but I'll be damned if my sockets API is going 
to help you write denial of service attacks.  Similarly, I see no 
reason for an XML API to allow malicious developers to pollute the 
XML space with malformed documents.

Of course, outright maliciousness is far less common than simple 
mistakes. However, the effects of a mistake can be equally 
devastating. That's why a good sockets API doesn't allow you to 
create malformed IP packets, and why a good XML API doesn't allow you 
to create malformed documents.

I am OK with not redoing the well-formedness checks if the parser is 
doing them. (I do wonder if perhaps we should check whether we've got 
a real parser in place rather than a hacked up XMLFilter) However, 
someone's got to do them.

I do strongly recommend that before any work takes place on this, you 
first carefully benchmark the actual Document building process to see 
where the bottlenecks are. Two people who did this in the last six 
months have reported on this list that turning off verification did 
not give them significant performance gains.  That's a little 
surprising. In XOM, I found that turning off verification did speed 
things up noticeably. However, possibly JDOM is currently stuck in 
some other hole like the flyweight pattern for namespaces that XOM 
doesn't share.  It's also possible that XOM's Verifier is more 
expensive than JDOM's. For instance, XOM's handles surrogates 
correctly which I don't think JDOM's yet does.
-- 

   Elliotte Rusty Harold
   elharo at metalab.unc.edu
   Processing XML with Java (Addison-Wesley, 2002)
   http://www.cafeconleche.org/books/xmljava
   http://www.amazon.com/exec/obidos/ISBN%3D0201771861/cafeaulaitA



More information about the jdom-interest mailing list