I'm a software developer with around 25 years in the business, working for everybody from startups to blue-chips mainly on web and network applications. I've been using Java since the 1.0 days but like trying different languages and am currently into Functional Programming. I'm working right now as a Software Architect for Elluminate Inc in Calgary, Alberta. Paul has posted 3 posts at DZone. View Full User Profile

Clojure In Action MEAP

  • submit to reddit
Published by: Manning Publications
ISBN: 9781935182597

Reviewer Ratings




Buy it now

One Minute Bottom Line

The MEAP copy is less than half-finished (at least by chapter count) but still gives an introduction to the Clojure language in a way which helps understanding and adoption rather than just being of academic interest, and chapters to come promise practical information for programmers who want to use Clojure in the real world.


Earlier books on Clojure, such as Programming Clojure by Stuart Halloway, suffered at the time from the fact that the language had only just attained a stable 1.0 release and was still in flux. Clojure In Action suffers far less from that problem, with Clojure now having a stable 1.1 release and a soon-to-be-released 1.2 the book is likely to endure change better than its predecessors.

Only 9 of the proposed 20 chapters were completed at the time of review, and these early chapters focus more on the Clojure language than the "in action" part of the book will. The language description chapters are concise but informative, often taking time to explain the background to some of the more esoteric design choices in the language and commenting on why something is the way it is rather than just presenting the facts. With Lisp (and Clojure by association) being a difficult language for many from an imperative background to adjust to, this extra information helps a lot in understanding how to use the language effectively. Clojure basics - program structure, program flow, defining clojure functions and data are covered in the first three chapters. Clojure's approach to polymorphism (multi-methods), interoperation with Java, and macros in the next few.

Of particular interest to anyone learning Clojure as a new language is the chapter on state management and concurrency. The Clojure language introduces a variety of new and different ways of handling state in concurrent applications, enough that trying to decide which to use under what circumstances can be a difficult choice to understand - again, particularly if you come from the Java threads and locks world. While the explanations and examples of the various state & concurrency management constructs are as effective as any, it's the first few sections of this chapter - explaining the problems with state, identity, time & values - that make the chapter stand out. As with a lot of the rest of the book, if you understand the problem first then the solution doesn't seem contrived when it is presented, and this is where the book, as a whole, scores in its approach.

From Chapter 8 onwards, we start to move into more practical applications of Clojure with details of the clojure.test TDD library and data storage using clj-record. Later chapters will cover topics such as building web-based applications, using messaging, scalable data storage, web services, DSLs and event stream processing. They will be reviewed as and when they become available.
Published at DZone with permission of its author, Paul Umbers.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Senthil Balakrishnan replied on Wed, 2010/07/07 - 8:45am

Looks like clojure is yet another language like scala, that runs on JRE. Not sure how it ease the development compared to java/j2ee, hopefully it does...

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.