Anyone who follows my blog knows that I am passionate about cfml and so when I got the chance to review the new Railo book "Railo 3: Beginners Guide" I jumped at the chance.
Disclaimer: I freely admit that I am very biased towards Railo. In fact I have run this site on Railo for over two years now. In addition I scored the book in electronic format free so that I could review it.
Finally if you think I am a bit harsh in my criticism please remember that I am reviewing the book NOT the product. Railo Rocks!
So what does this book cover. Well on the publishers website (Packt Publishing) they state the following list:
What they forget to mention is that you also learn about working with cloud resources, compiling to redistributable packages, virtual files systems, setting up a MySQL database and much more.
So now we know what it covers lets talk about some of the good points.
Although the authors don't go into exhaustive details on every single topic, they manage to strike a good balance between covering all the major points of Railo while going into enough detail to get you started. This book wont make you an expert cfml programmer but it gives you a solid coverage of the basic concepts and enough detail to be able to build a simple functioning web app, which is exactly what a beginners book should do.
As this book was written by the product developers there is no ambiguity about function or errors in assumptions. This has allowed the authors to compress a lot of information into very concise chucks. In particular there is a very simple yet effective diagram on the request life cycle that comes to mind.
Although I have used Railo for a long time now I must admit I have tended to stick with what I know and only go looking for a feature if I have a particular need. This book has opened my eyes to several slick features in Railo I did'nt even know existed and I now intend to use for future development.
At around $45 for the print version this book is about on par with similar books in terms of price if you look at it purely by page count. However once you get into reading the book you realize that the authors have packed a huge volume of information into a small space.
For the cost of this book you learn everything you need in download, install, configure, maintain the server and start programming with the cfml language. That sounds like a bargain to me.
This is the part that I am loath to write but as with all things in life, nothing is perfect and I do have some complaints.
This was the first thing that struck me as odd. The opening chapter mentions how Railo can be installed and configured with the Apache httpd webserver but then never covers how to do it. The fact that installation against IIS a non open source webserver is covered but not httpd is disappointing and puzzling to me especially when you consider that httpd is the dominant webserver.
Update: I want to add that Railo has an excellent installer tool. If you follow the tomcat config section then it is fairly self evident. However I would still like to have seen apache used vs IIS although I understand the reasoning.
This is more of a critique of how the publishers display code then the actual content. As cfml is a tag based language I would have liked to see better distinction made between cfml and html code. For example if the cfml tags had a background color on the page so that it was easier to see where the cfml was when mixed in with html.
The fact that the authors have attempted to cover so much about Railo in this book is both a positive and negative. While they have crammed a hell of a lot into it they have at times skimmed over some of the more basic concepts.
For example the topic of component scopes is poorly covered. I did not find a single mention of the var scope outside the extending Railo chapter and the variables scope being private was mentioned as an afterthought as opposed to directly against discussed when the "this" scope was first used.
Also while there are examples of comments in the book, they should be mentioned explicitly (new programmers should always be told to comment their code) and the first examples are actually incorrectly formed. (see cfswitch example).
As this is a first edition you would expect a few rough edges and indeed there are. While the content was good I would have like to see some more work on organizing eg chapters separated out, for example ORM and caching should be distinct chapters in my mind. Also a couple of small sections were a bit repetitive.
As an introduction to Railo (which is its main focus) this book is excellent, however as an introduction to cfml programming it needs a little polishing in a few places due to the sheer volume of information it tries to cover.
A solid addition to an aspiring cfml developers bookshelf, but it should not be the only one if you wish to master cfml programming.