EAI and Clojure
Sunday, July 4th, 2010I had the good fortune to attend the latest VanDev meetup on EAI tools versus custom build solutions. David Dossot gave a high-level overview of Enterprise Application Integration tools and how they compare to the ad-hoc chunks of scripting and home-grown glue that are used to integrate systems. David covered several aspects that might affect whether you pick on or the other. His presentation is online at Prezi (which I think is a very fancy presentation system).
Update: David actually blogged on this too: http://blogs.mulesoft.org/presentation-eai-when-tools-can-help/
The big thing for me about this presentation was that it finally tripped a switch in my brain: Enterprise Application Integration patterns don’t have to be about asynchronous queues and such, it’s about all the different ways systems integrate. That includes simply copying files around, for example. I honestly wish I’d realised this a few months ago, it would have given me the insight to stop a strange project using rails and leverage an existing EAI engine/framework. Despite the learning curve we would now have a less custom, and more tested, system. Better late than never?
I’m also currently on a mild clojure kick. Having done the Bowling Game Kata in Groovy and then followed it up with a clojure version (thanks to this link for some hints) I thought I’d try to get a simple Apache Camel example up and going in clojure. The first hit on Google proved very useful for guidance.
Simply trying to get that (and the bowling) example up and running made me have to dig into so many different things:
- leiningen - a clojure wrapper for maven
- Polyglot Maven - a wrapper for maven in several different languages so XML can be shunned
- test-is – a simple unit testing library in clojure-contrib
- AOT – ahead-of-time class creation, amongst other things this allows clojure to run in a binary form (no need for source in production).
- Counterclockwise - an Eclipse plugin that adds support for clojure editing and running (with very pretty, and effective, rainbow bracketing)
- Clojars.org - a maven repo for clojure jar files
- Cloduino can be used to allow clojure to interact with Arduino boards
- Getting started with clojure - this link has a bunch of detail on getting started with clojure.
- labrepl - a learning environment for clojure
- I fired up Idea for the first time in ages and install La Clojure just to try it out.
Obviously, I have only scratched the surface of these things, but at least I know about them now and have a better overall handle on clojure and EAI.
I really do love learning new things and the VanDev meetup triggered more of this than normal. So I encourage you all to come to VanDev or find a similar meetup near you which covers things that you really enjoy (I’ve got my eye on the local Erlang group next).

