| Regarding Clojure, while compojure is popular, a compojure centric view of web programming is misguided. Compojure is part of a growing ecosystem of libraries built on top of ring[1][2]. Firstly this ecosystem is not analogous to rails or django. The closest is that Compojure is similar to Sinatra i believe. If you are looking at getting started with web programming in Clojure you need to get familiar with ring (the http abstraction) and look at Compojure and Moustache (routing and handler composition), and Enlive[4] and Hiccup[5] (templating/html generation). Compojure and Moustache are fairly similar, but Enlive and Hiccup are extremely different. A web application will consist of ring plus one of each layer. As has been mentioned by others in this thread, the depth, breadth and currentness of documentation for these libraries varies. David Nolen has a great tutorial for enlive[6] that i would encourage anyone looking at these libs to work through. Enlive is one of the most compelling aspects of the clojure web ecosystem at present. These libraries provide the core pieces you would expect to see in any web framework, but a lot of the smaller details are missing. Of note there is no ORM for clojure (for obvious reasons) - If you are looking for a good SQL abstraction you should look at ClojureQL[7] - and aspects such as form generation, validation and processing is still in early days. My day job has me building web apps with Django. I wouldnt suggest that my coworkers and I jump to clojure / ring et al yet. The breadth of libraries and out of the box stuff in django is still a huge advantage for the day to day rapid web site / web app development, however clojure's story is improving rapidly and i think that the functional model is a particularly good fit for web applications. I cannot compare clojure's story with the other languages and frameworks mentioned. [1] https://github.com/mmcgrana/ring/
[2] This is true of compojure 0.4 and newer. compojure existed prior to ring (with hiccup as part of it).
[3] https://github.com/cgrand/moustache
[4] https://github.com/cgrand/enlive
[5] https://github.com/weavejester/hiccup
[6] There is a link in the enlive readme
[7] https://github.com/LauJensen/clojureql/
|