Saturday, November 10, 2007

Naked Objects Pattern

I am sitting here early on a Saturday morning at a local Honda dealer waiting for my vehicle to be serviced. While online and drinking a good cup of java (coffee), I had not written to this blog in a while (been quite busy) so decided to discuss a new Java technology that I have been researching lately which is quite impressive and ground breaking in my opinion.

While researching Java technology, I encountered a new pattern to which I was previous unexposed. It is called the Naked Objects pattern. What was surprising to me is just how little coverage this design or architectural pattern receives in the popular cyberspace. What started me down this path was the What is the Matter with JMatter? article I read last week. After reading that article and doing quite a bit of exprimentation with JMatter, it was the Naked Object architectural pattern that is most interesting.

I will not go into too much detail about JMatter, but in a nutshell it implements the Naked Objects architectural pattern and throws in some domain-driven design concepts to provide a very capable Java application engineering framework. The result is an extremely agile development environment for Java technologists. At first I thought JMatter was for the average user. After experimenting with it for a week, I have come to the viewpoint that JMatter is for the exprienced Java developer that understands design patterns, Ant, Hibernate, Spring, dependency-injection, XML, Swing and a few other best of breed Java frameworks that it leverages. The result is a several order of magnitude increase in application development productivity. What would have taken weeks or months to build can now be engineered in days or weeks.

The JMatter applications are currently client/server and leverage Java Web Start for deployment. What is on the drawing board is better usage of WingS and Echo2 to generate AJAX capable applications based on the JMatter application. I tested this capability that is integrated into JMatter today and it requires a bit more maturity before I would recommend using it. For now, if you an experienced Java developer, JMatter is worth a look. It changed my entire perspective on Java application development which I now call application engineering. Using JMatter and its capabilities allows you to engineer applications vice developing them in the traditional sense, lots of coding.