| ||||
Comparing XB1 to JDOM ...This is mini review of "A Design Review of JDOM (A Conversation with Elliotte Rusty Harold, Part III)".
Let see how Xml Pull Builder a.k.a. XB1 (for more details on XB1 see its home page) compares to JDOM based on points raised in article. A Short History of JDOMBefore we do this few word about XB1. XmlPull Builder Version 1 a.k.a. XB1 is lightweight document object model to represent XML tree that is implemented on to Common API for XML Pull Parsing and alpha version is in XPP3/MXP1. JDOM Offers Many Convenience MethodsXB1 is currently rather modest API and do not have lot of methods (except for obvious overloading of methods) and that makes API quite simple (at least for now). JDOM Allows Malformed DocumentsXB1 implementation also allows creation of malformed documents or let put it this way: the implementation does not do extensive checks but XB1 API allows implementations that will do those checks (XB1 API is composed of interfaces). BTW: example with control characters is not good as XML allows to have control characters but escaped as numerical entities AFAIR ... JDOM Ignores Setter Method ConventionsI do not see problem here: JDOM is not Java Bean and chaining methods may be sometimes convenient (but should not be overused). This looks like rather weak complaint ... JDOM Uses Java CollectionsXB1 goes one step even further and it uses Generics for even more natural iterators than mentioned NodeList (currently moving to use future java.lang SimpleIterator interface so idiomatic for(XmlElement el: node.elements()) will work in JDK 1.5) . JDOM Uses Too Many Checked ExceptionsXB1 has only one exception (at least for now) and it is runtime exception for all reasons mentioned in the article and i woould add one more reason: RuntimeException makes it easier to integrate XB1 into existing code. Will JDOM Remain Class-Based?I agree that interface based API is more versatile as it allows to abstract form implementation and allow creating XML tree models directly from other data sources that XML event stream from parser (like databases) ConclusionI was disappointed that XPath integration (and good performance of it) was not mentioned. Also I would like to see some tests that compared memory footprint and how easy is to build partial tree: this is very easy with XML pull parsing but quite difficult with push parsing (in SAX it requires provide way to overwrite endElement() callback and in general is as much fun as writing SOAP deserializer with SAX). And as far as future of XML Tree APIs: I would like to see how easy is to annotate XML infoset items with additional information (needs for it emerges with data bindings and PSVI) But after all what makes and breaks APIs is how programmers feel about them, and I feel good about XB1 when I am using it (nothing to do with the fact that I am author of it of course ..)
created Wed July 30, 2003 8:06 PM EST [2003/7/30 20:6 EST] permalink Xydra: easy way to add Web Services to your portalXydra is a library that uses servlet to provide XHTML based WSDL invoker. Xydra servlet takes WSDL with XML Schema complex types as input, generates XHTML form to allow user to fill content of input message, gathers submitted input values and converts form name-value pairs into XML message that is sent it to Web Service and then finally displays result message.
One could ask: there are other WSDL invokers so what makes Xydra unique? Here is couple reasons:
Sample installation is available online to test drive Xydra. It is open source so anybody can play with it, improve it, and give us feedback, patches are gladly accepted, we may even fix some bugs when reported (good bug report that contains all information necessary to reproduce problem and/or unit test greatly increases chances of getting problem fixed ...) created Sun July 27, 2003 11:55 PM EST [2003/7/27 23:55 EST] permalink WSE2 younger brother of WSIF?
this desription of WSE2 sounds like what WSIF except that WSIF has support for industry standards such as CORBA/IIOP and does not require to send SOAP envlopes. However the problem with WSIF that it is only client side ...
created Wed June 25, 2003 10:20 PM EST [2003/6/25 22:20 EST] permalink Echo Arrives?As soon as Echo (aka Pie) is well defined microBlog will add support for it.
created Wed June 25, 2003 9:48 PM EST [2003/6/25 21:48 EST] permalink good xml performance must be verifiable to matter
Google found for me this
interesting report
(local copy)
on performance of XML object models. created apr 6 sun 2003 8:40pm cst [2003/4/6 20:40 CST] permalink order is importantthis is old joke but still funny and good conclusion:"OK, you're up," the Genie says to the manager. The manager says, "I want those two back in the office after lunch." created sat dec 28 2002 9:30am cet [2002/12/28 9:30 CET] permalink Grid, workflows, and other observationsBunch of observations:
created sun nov 3 2002 1:45pm cst [2002/11/3 13:45 CST] permalink why including XML APIs in JDK is bad ideaXML is not about APIs it is about processing XML. if XML was finished and there was no work on standards (DOM3 comes to mind) and implementations were finished and abandoned (Xerces2, Xalan etc.) than maybe it would make sense ... actually that brings another point: java badly needs library (JAR) dependency mechanism in use right now ... created sun oct 27 2002 cst [2002/10/27 CST] permalink XML API that is between DOM and SAXwhat is between DOM and SAX? of course KHR, KHS, LHR or LHS by looking up ASCII codes D=68 S=83 so average is 75.5= K=75 or L=76, then second letters O=79 A=65 so average 72=H and finally M=77 X=88 so average 82.5 R=82 or S=83 :-) created oct 9 2002 cst [2002/10/9 CST] permalink XML and APIsAPIs that are doing essentially the same things are bad ... Corba: why PL independent XML integration ... components as Web Services will help life easier ... cost of monolithic applications ... what is API XML schemas (what is target) SOAP acronym ... no Simple ... no Object ... so what is left ... CORBA has no abstract protocol created oct 9 2002 cst [2002/10/9 CST] permalink XML and abstractiontoo much abstraction is not good ... how to keep close to XML infoset? created oct 9 2002 cst [2002/10/9 CST] permalink streaming and incremental building of XML node treeHow to combine best of SAX and DOM when working on SOAP motivation DOM API (or one of its alternatives) is easier to use for document/literal encoding but streaming is essential for good performance ... solution: two different modes of operation
one goal: have uniform API for both cases (stream is parsed as much as needed to walk tree) second goal: expose enough information in API so app can control tree creation skipping parts of it or using XmlPullParser directly (no tree nodes created) parts of tree can be detached for later GC handling fragments transparently add all ancestro namespace-prefix declarations XmlPullNode
isFinished()
finishParsing()
XmlPullParser asPullParser
XmlPullNodeWalker asNodeWalker
XmlPullNodeWalker
Object nextNode(),
Object nextNodeChild(),
String nextNodeText(),
XmlPullNode nextNodeTag()
XmlPullParser asPullParser();
DOM working as front partial tree - mirrors what is in XmlPullNode however operations directly on XmlPullNode are _not_ mirrored to DOM!!! Possibly related: PullDOM http://www.prescod.net/python/pulldom.html created sept 20 2002 cst [2002/9/20 CST] permalink |
This blog is about: Find more
about
Blogroll:
Projects::
RSS
Filter Entries: |
Disclaimer: personal opinions and observations that may or may not be taken seriously, or even based on shared reality and generally are very unreliable and personal and snapshots of volatile writer mind ...
NOTE: THIS PAGE IS UNDER CONSTANT DEVELOPEMENT