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
The JAXB API
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.#
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:
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.
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.#
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.#
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.#