Friday, January 10, 2003
Apology to Crazy Bob
Are these object systems? I dunno--it depends on your definition of the term, and lo, we are back to the fundamental crux of this debate: What is AOP? Or, to succinctly summarize Rickard's and Bob's positions, Does an AOP tool have to be a language?.

Interesting. I'd say no. AOP isn't a paradigm shift. The gap between OOP and AOP is a lot smaller than the gap between OOP and procedural programming. In fact, I'd go as far to say there is no real gap between OOP and AOP. Instead of being presented as a paradigm shift, AOP should be presented as what it is (IMO): an object behavior extension mechanism not unlike implementation inheritance. (I know some people who believe AOP is implementation inheritance done right). The point is, AOP, while being tremendously powerful, is not a paradigm shift--it's well grounded in the OOP world. #

Thursday, January 09, 2003
JAXB consists of two parts. First, JAXB contains a compiler that reads a schema and produces the equivalent Java object model. This generated object model captures the structure of XML better than general-purpose APIs like DOM or SAX, making it a lot easier to manipulate XML content.

The second part is an API, through which applications communicate with generated code. This API hides provider-specific implementation code from applications and also provides a uniform way to do basic operations, such as marshalling or unmarshalling.

Object-Relational Mapping with Apache Jakarta OJB
Three of the most popular persistence frameworks in the open source community are Hibernate, Castor, and OJB. In this article, we will focus on OJB. OJB integrates smoothly into J2EE containers with full support of JTA and JCA, and is a viable alternative to EJB entity beans. Since OJB does not modify your source code or byte code in any way, you can make an object persistent even without access to the original source code. This article introduces OJB and focuses on its component-inheritance capabilities. The Appendix presents some best practices to show you how to decouple your application from the specifics of a persistence layer.

XmlHelper - XML Utility Classes
XmlHelper is a series of Java classes that simplify using XML in Java applications. There are two main classes:

XMLWriter is a class for writing XML data.

XMLDocument is a class for constructing an object tree from XML data. Note that the XMLDocument class uses the Java API for XML Parsing library from Sun for parsing XML data.

XmlHelper is free software. It is distributed using a BSD style license. This means that you can do whatever you want with it, provided you follow a few simple rules about distribution.


The xmlenc library is a fast stream-based XML Encoding Library for Java. Main design goals are performance, simplicitity and pureness. As far as known, xmlenc is the fastest Java-based XML output library around.

Check out the example program.

Common API for XML Pull Parsing
Common API for XML Pull Parsing (XmlPull) is an effort to define a simple and elegant pull parsing API that will provide a standardized way to do pull XML parsing from J2ME to J2EE.

It is a minimalist API: very easy to implement standalone or on top of existing parser. The API allows both fast high level iteration (using next() method) and low level tokenizing (using nextToken() token) and is designed for easy building on top of it SAX, XML pull parsers that uses iterators with event objects, or even DOM implementations. To to support J2ME and real small implementation parsing of DOCDECL is optional (but DOCDECL can be reported if requested).

The aim is to provide a similar but orthogonal pull parsing basis to widely successful push parsing SAX API. The XmlPull API is in public domain in hope that it will be embraced by Java developers (conformance tests are under LGPL license to minimize risk of incompatible implementations).

Pull Parsing in C# and Java
But pull parsers are not unique to the .NET world. The Java Community Process is currently working on a standard called StAX, the Streaming API for XML. This nascent API is, in turn, based upon several vendors' pull parser implementations, notably Apache's Xerces XNI, BEA's XML Stream API, XML Pull Parser 2, PullDOM (for Python), and, yes, Microsoft's XmlReader.

So how would we implement this same program in yet another pull parser, the Common API for XML Pull Parsing, or XPP? Let's take a look.

Wednesday, January 08, 2003
Learning and Using Jakarta Digester
The Jakarta Digester framework grew out of the Jakarta Struts Web toolkit. Originally developed to process the central struts-config.xml configuration file, it was soon recognized that the framework was more generally useful, and moved to the Jakarta Commons project, the stated goal of which is to provide a "repository of reusable Java components." The most recent version, Digester 1.3, was released on August 13, 2002.

The Digester class lets the application programmer specify a set of actions to be performed whenever the parser encounters certain simple patterns in the XML document. The Digester framework comes with 10 prepackaged "rules," which cover most of the required tasks when unmarshalling XML (such as creating a bean or setting a bean property), but each user is free to define and implement his or her own rules, as necessary.

Tuesday, January 07, 2003
Caching in Servlets
Pregeneration and caching of content can be key to providing your site visitors with a quality experience. With the right pregeneration and caching, web pages pop up rather than drag, and loads are reduced--sometimes dramatically--on the client, server, and network. In this section I'll provide advice for how best to pregenerate content and cache at the client, at the proxy, and at the server. By the end of this section you'll feel compelled to generate new content during request handling only in worst-case scenarios.

Sunday, January 05, 2003
Building Web Services the REST Way
I will first provide a brief introduction to REST and then describe how to build Web services in the REST style.


the server side
dotnet junkies
sam gentile
sam ruby
paul prescod
.net guy
jon udell
john robb
blogging roller
desktop fishbowl
cafe au lait
be blogging
kevin burton
james strachan
the truth is out there
brett morgan
blogging roller #2
joe's jelly
psquad's corner
rickard oberg
the saturn times
russel beattie
gerhard froelich
pete drayton
clemens vaster
ingo rammer
ken rawlings
simon fell
bit working
justin rudd
chris sells
john lam
jim murphy
brian jepson
john burkhardt
matt pope
better living through software
loosely coupled
understanding software engineering
rest lst,rdf-interest lst,tag lst ucapi lst

A man, his puppy, and a double barreled shotgun.

Powered by Blogger