Friday, February 13, 2009

FactoryFactories

Something somewhere went terribly wrong and we ended up with APIs like this.

http://ws.apache.org/xmlrpc/apidocs/org/apache/xmlrpc/server/RequestProcessorFactoryFactory.html?rel=html

The default RequestProcessorFactoryFactory is the RequestProcessorFactoryFactory.RequestSpecificProcessorFactoryFactory. It creates a new processor instance for any request. In other words, it allows the request processor to have some state. This is fine, if the request processor is a lightweight object or needs request specific initialization. In this case, the actual request processor is created and invoked when calling RequestProcessorFactoryFactory.RequestProcessorFactory.getRequestProcessor(XmlRpcRequest).

The really sad part is that in the Java world this specific example cannot be considered that extreme any more.

FactoryFactories indeed.

The Emacs of the future

Maybe Steve Yegge was right after all when he wrote last April:

Developers are starting to wake up and realize that the best "mainstream" extensible platform (which excludes Emacs, on account of the Lisp) is Firefox or any other non-dead browser (which excludes IE). [...] And now the browsers are starting to sprout desktop-quality apps and productivity tools. It won't be long, I think, before the best Java development environment on the planet is written in JavaScript.

And the Bespin prototype is proof that the future is maybe arriving earlier than many of us expected.


Introducing Bespin from Dion Almaer on Vimeo.