Liferay User Interface Development
The last 6 months were extremely busy for me. A lot had happened in both private and professional aspects. Having that in mind I'm quite happy I manged to deal with completely new experience - being a technical reviewer of "Liferay User Interface Development" - a new book published recently by Packt Publishing. Despite the lack of spare time I was somehow able to read and comment on drafts of 10 chapters covering things like theme development, layout templates, velocity templates, tag libraries, AlloyUI, and much more. Hopefully my comments and opinions ware useful for the authors and help them improve the book.
I still don't have the published book (I'm about to receive my copy soon) but based on what I have read in the drafts I can say it's worth recommendation. The book puts together most of the peaces related to UI development in Liferay. Of course it does not cover all the details (no book can do this) but it often goes beyond the basics. In fact one of the chapters I found very informative and well organized is freely available on-line (http://www.packtpub.com/sites/default/files/2626OS-Chapter-5-Advanced-Theme.pdf) so you can check for yourself. There is also quite good chapter about AlloyUI - especially useful if you have to move form Liferay 5.2 to Liferay 6.0 and replace JQuery with AlloyUI. The migration and upgrade process is also one of the subjects in the final chapter "User Interface in Production" which among others covers things like workflows, social UI and friendly URLs.
Of course, there are too many options when it comes to UI development (JSF, Struts & Tiles, Vaadin, JQuery, AlloyUI, Liferay UI taglib, Velocity, Freemarker to mention just a few) and it's not possible to describe them all in details. This book concentrates on Liferay's approach to UI development which (in version 6) is a powerful mix of Velocity templates, tag libraries and AlloyUI. And yes, if you use Vaadin or JSF or Freemarker for your day to day work, it may not be a book for you as all you'll find in it about this technologies is references to online recourses. But going back back to "standard" UI approach, the authors really try to teach the reader by providing many examples, mini tutorials and references to portal's and portlet's source code.
One thing I was pointing out while reviewing the book was the lack of good reference documentation in two areas: tag libraries and Velocity variables and macros . One may argue whether such a book is the best place to provide such documentation. Maybe not, I'm not sure. On the other hand comparing the number of questions posted on Liferay's forums about what tags are available and what their parameters mean with briefness of documentation available at http://docs.liferay.com/portal/6.0/taglibs, makes me thing that more in depth information on the subject would make this book more attractive for wider group of Liferay users. Same thing about Velocity macros and variables. Event the most advanced reference about velocity variables in Liferay I know about - http://www.myoffice24x7.com/web/manual/howto/explore-velocity-variables/-/velocity-explorer/journal - seems to be incomplete and sometimes inaccurate. I don't know if my suggestions were taken into account. Honestly, I doubt the authors had enough time and room to be able to dig deeply into those subjects. But hopefully at least those tags, variables and macros used in the examples and better described.
But please don't get me wrong. The fact that I will always point out something that in my opinion can be done better does not mean the book is bad. Assuming one don't need to get deeply into Liferay's internals and do not worry too much about what exactly any particular line in the sample code does, this book provides complete information about Liferay UI development. I personally learned a lot of new things although I've been using Liferay for a few years. The bottom line is: whether you have been mastering Liferay portal for a while or just entering the world of Liferay, this book will help you understand how to develop complex and user friendly user interfaces in Liferay Portal 6.0