Ajax in Oracle JDeveloper. By Deepak Vohra, Springer, 2008, ISBN 978-3540775959, 224 pages.
Before diving into the book, I should say a little about Oracle's Integrated Development Environment (IDE) JDeveloper . It is free to use , but there are some licensing restrictions if you make use of Oracle's libraries. The book is in part about how to set up AJAX development in this IDE. As a regular user of Eclipse, I was quite excited about trying out something new. JDeveloper is prettier than Eclipse and quite intuitive.
Obtaining the software, however, proved a little difficult. The download weighs in at 1Gb (with an installed footprint of 2Gb including its own copy of Java) and requires an account with Oracle. This account proved remarkably difficult to set up (and this was not the first time I had experienced trouble with these accounts). Having found the download location, I dutifully signed up, only to be told that my email domain (ouls.ox.ac.uk) was invalid! 'Tell that to Oxford University Library Services,' I thought, before locating a help page and sending an email. To Oracle's credit, support responded in two days and fixed the issue, but the whole experience suggests that this book would benefit from the inclusion of a CD-ROM holding the software.
With JDeveloper installed, I dived into the book. It takes a different approach to the learning books I have used in the past. Instead of building an increasingly more complex application chapter-by-chapter, the author presents different AJAX frameworks (Prototype, Google Web Toolkit, Direct Web Remoting, AjaxTags, Ajax4jsf and Xajax) in order to achieve a single goal, namely to validate a Web form as users fill it in (rather than once they have submitted the entire thing), which provides benefits to the user. Some chapters start with a summary of the technology in question, and these sections are probably the most useful in the book. They provide quick references, including, for example, a very useful outline of methods available on the fundamentals of AJAX development, the XMLHttpRequest.
However, despite the value of these summaries, the book starts to show its weaknesses. Yes, the broad approach usefully highlights the many possibilities and types of technology that fall under the 'AJAX umbrella', but, with each chapter following the same format, they quickly become repetitive. Further, by being broad, but somewhat shallow, the book also leaves the reader asking for more. More, for example, about how to extend the simple validation to something more complex; more on what is going on behind the scenes in JDeveloper; even just more about what the code is doing – as often the explanatory text is little more than pseudo-code, simply repeating what, I suspect, the target audience of this book could quickly work out from the code itself.
Most readers are likely to need only one of the chapters, to cover the technology most relevant to them – something which they can identify without working through the book – and so I thought it would be useful to be able to download certain chapters, rather than the whole book. Checking its site, I discovered the publisher had indeed made this possible, but it worked out quite expensive at US$20 a chapter. Neither is one comforted by the discovery that at least three of the chapters have already been published online  and appear only to have undergone minor alteration subsequently for the benefit of this book.
One thing I find useful when learning coding techniques from a book is to able to type the examples, usually modifying them for my own application as I go. This enables me to see the code working, learn from fixing any bugs I have added, and to get a good feel for what is happening in the software. At the same time I find it useful to be able to download the source code and, if I am really struggling, compare my code to the definitive version in the text. This technique proved nigh impossible with this book. While each chapter includes a code listing that pulls together each of the code fragments that have appeared before, the formatting of this code makes it hard to follow, let alone debug. I was also unable to locate any downloadable content associated with the book for which I was not asked to pay extra. (Perhaps a further argument for providing a CD-ROM?)
A glance at an example from Google books shows clearly the poor layout of the code samples . Unhappily the low production values illustrated here persist to an unfortunate degree throughout the book, with several typos, and a terribly inadequate index.
However, my misgivings notwithstanding, I worked steadily through the chapters and I did uncover a number of useful pointers to tool kits that might make life easier for a Web developer. However, the repetitive nature of the chapters (in some places repeated almost word-for-word) and the lightweight code explanations grew tiresome. So, when I got to the PHP chapter and read that one also needed to download JDeveloper 10 because 11g did not have a supported PHP plug-in , I could not help feeling a little frustrated. The words of warning also came as something of a surprise, as the synopsis on the back cover seemed to imply that JDeveloper 11g has the advantage over Eclipse by providing a PHP extension. However, careful reading of the synopsis on the reverse suggests it is JDeveloper rather than any particular version that supports PHP development, which was a little confusing.
I could not but help note a further inconsistency in this area when this work suddenly expressed the need to explain how to install PHP and the Apache Web server on Windows. This seemed odd, since it had previously dismissed installing an Oracle database in a single line. Should not a book that assumes you can 'Install Oracle 10g database including the sample schemas and a database instance ORCL' without further guidance also assume that installing PHP or Apache is equally trivial? Otherwise should it not help with the Oracle database guidance too – probably by suggesting installing the cost-free Oracle XE – and also provide pointers for other operating systems, perhaps in an appendix?
I must confess to having noticed subtle differences between the worked examples of how to setup JDeveloper 11g and JDeveloper 10, but I had merely attributed them to differences in operating system. However, on reflection, I did wonder whether I had been reading examples from JDeveloper 10 occasionally. Were this the case, then perhaps it would have been helpful to keep the book consistent with one version of the IDE. If indeed there was such a mismatch between book and Web, this would appear to highlight a problem that must beset all book publishers - that Web technology moves faster than the printing press.
A more concrete example can be found in the chapter on the Google Web Toolkit (GWT) , which deals with GWT version 1.4. A little investigating on the Web shows that GWT is at version 1.7 as I write; who knows what it will be when you have finished reading this review? The more recent version of GWT works in different ways to the guidance given in the book. Fortunately, it was still possible to download the older versions, so I could complete the chapter. Nonetheless, I wondered if I would have been better off with the (free) online documentation for v.1.7.
As you might have picked up by now, there is a not too much to like about this particular book. It is badly laid out, dated (one of the constituent chapters was published in May 2006) and does not come with electronic access to the source code. However, it would be unfair to say I did not take away anything useful from the work. There are a few helpful summary sections and a good introduction to the fundamentals of AJAX. However this work represents little more than a set of chapters roughly taped together and, at £35.99, is woefully overpriced, especially as at least a third of the book is already available toll-free online.