{"id":155,"date":"2010-01-10T22:32:51","date_gmt":"2010-01-10T22:32:51","guid":{"rendered":"http:\/\/denverjug.wordpress.com\/?page_id=155"},"modified":"2010-01-10T22:32:51","modified_gmt":"2010-01-10T22:32:51","slug":"book-reviews","status":"publish","type":"page","link":"https:\/\/www.djug.org\/?page_id=155","title":{"rendered":"Book Reviews"},"content":{"rendered":"<p>Book Reviews written by members of the Denver JUG.  If you wish to review a book, please e-mail us at <a href=\"mailto:denverjug@yahoo.com\">denverjug at yahoo dot com<\/a> to let us know which book you&#8217;re interested in reviewing.  Although book reviews in 2004 or before have been excluded, a review from 2005 and from 2006 have been included here, as well as recent book reviews.<\/p>\n<table>\n<tbody>\n<tr>\n<th colspan=\"2\">2009 Book Reviews<\/th>\n<\/tr>\n<tr>\n<td>\n<div id=\"attachment_159\" style=\"width: 150px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/www.denverjug.org.evohst.org\/wp-content\/uploads\/2010\/01\/javascriptanddom.jpeg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-159\" class=\"alignnone size-full wp-image-162\" title=\"Javascript and DOM scripting\" src=\"http:\/\/www.denverjug.org.evohst.org\/wp-content\/uploads\/2010\/01\/javascriptanddom.jpeg\" alt=\"Javascript and DOM scripting\" width=\"140\" height=\"175\" \/><\/a><p id=\"caption-attachment-159\" class=\"wp-caption-text\">Murach&#39;s Javascript and DOM Scripting<\/p><\/div>\n<p>Authors: Ray Harris<br \/>\nPublisher: Mike Murach &amp; Associates<br \/>\nPublish Date: August 17, 2009<br \/>\nPages: 760<br \/>\nISBN-10: 1890774553<br \/>\nISBN-13: 978-1890774554<br \/>\nReview Date: November 8, 2009<br \/>\n<a title=\"Murach JavaScript and DOM Scripting\" href=\"http:\/\/www.murach.com\/books\/mdom\/index.htm\" target=\"_blank\">Publisher&#8217;s Book Description<\/a><\/td>\n<td>\n<h5>REVIEW by <a href=\"http:\/\/www.linkedin.com\/pub\/ed-young\/4\/341\/51b\">Edward Young<\/a><\/h5>\n<p>I\u2019m an experienced software developer but unfamiliar with Javascript, and this book was an excellent way to learn through example. It\u2019s also a pretty good reference for javascript and DOM scripting, plus has some good introductory info on XHTML and CSS. I\u2019m also a software engineer who appreciates and relies on good software tooling to help make code projects comprehensible, and manageable. The chapter on how to test and debug Javascript, showed how to install and set up firebug, and then how to use it to examine, execute and debug javascript applications. That chapter alone is worth the price.  This book is both a good how to manual (Nearly all the chapters start with \u201cHow to\u201d), but is a great reference, with a 1 page brief contents and then a 10 page detailed table of contents. This book is also not only a book on learning Javascript and DOM scripting, but also ensures that the reader learns the vital peripheral technologies alike XTHML and CSS, by taking the reader through the development of several interesting and useful applications over its 20 chapters.<\/td>\n<\/tr>\n<tr>\n<td><a href=\"http:\/\/www.denverjug.org.evohst.org\/wp-content\/uploads\/2010\/01\/murachservletsandjsp.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-164\" title=\"Java servlets and JSP\" src=\"http:\/\/www.denverjug.org.evohst.org\/wp-content\/uploads\/2010\/01\/murachservletsandjsp.jpg\" alt=\"Java servlets and JSP\" width=\"160\" height=\"200\" \/><\/a><br \/>\n<a href=\"http:\/\/www.denverjug.org.evohst.org\/wp-content\/uploads\/2010\/01\/murachservletsandjsp.jpg\"><\/a>Authors: <a href=\"\/Andrea-Steelman\/e\/B001JPA2SA\/ref=ntt_athr_dp_pel_1\">Andrea Steelman<\/a>,\u00a0<a href=\"\/Joel-Murach\/e\/B001JP7JQI\/ref=ntt_athr_dp_pel_2\">Joel Murach<\/a> Publisher: Mike Murach &amp; Associates<br \/>\nPages: 642<br \/>\nISBN-10: 1890774189<br \/>\nISBN-13: 978-1890774189<br \/>\nReview Date: October 15, 2009<br \/>\n<a title=\"Murach JavaScript and DOM Scripting\" href=\"http:\/\/www.murach.com\/books\/jsp2\/index.htm\" target=\"_blank\">Publisher&#8217;s Book Description<\/a><\/td>\n<td>\n<h5>REVIEW by <a href=\"http:\/\/www.linkedin.com\/pub\/david-madouros\/8\/b93\/a8b\">David Madouros<\/a><\/h5>\n<p>I\u2019m torn after reading Murach\u2019s Java Servlets &amp; JSP book, 2nd Ed. I read the first version when I was making the transition from mainframe programming to Java programming and found the information to be extremely helpful for getting up and running very quickly. With the authors\u2019 assistance I had a database server, a servlet container, and a \u2018hello world\u2019 web app running within a couple of hours. On the other hand, reading the second edition as an experienced Java developer made me cringe. Ultimately, I have to side with the my experienced side. Especially when I consider how well the format of Murach books tends to make them canonical references and how easy it would have been for the authors to teach better practices.  The cover of the book makes at least three claims:<\/p>\n<ul>\n<li>Get off to a quick start<\/li>\n<li>Build professional web sites<\/li>\n<li>Handle databases like a pro<\/li>\n<\/ul>\n<p><strong>Get Off to a Quick Start<\/strong><br \/>\nThe authors get off to a great start by helping the reader to download, install, some basic tools including a servlet container, a database server, and an IDE. They guide the reader with step by step instructions for installing both Tomcat and MySQL \u2014 bonus points for recommending the latest versions of each. However, I\u2019m stumped by their choice of IDE \u2014 NetBeans \u2014 and their claims that it is a top notch IDE. Technically, I suppose it is third, but in my experience it\u2019s a distant third well behind Eclipse and IntelliJ.<\/p>\n<p><strong>Build Professional Web Sites<\/strong><br \/>\nI take issue with much of the material presented in the book and how it lends itself to creating \u2018professional\u2019 web sites. For starters, the authors provide an excellent introduction to HTML. Too bad XHTML is the current standard. The authors state that they\u2019d rather discuss HTML than XHTML because they feel that XHTML is too difficult to teach in a single chapter. I thought this was ridiculous, but assumed they would at least promote well-formed HTML \u2014 boy, was I wrong. They consistently use of malformed HTML in their examples and go as far as mentioning the lack of unquoted attributes as a good thing! This is bad, but it gets worse because a couple of chapters later they have to discuss well-formed HTML before they can teach the reader how to use JSTL. The authors discuss both JSP and Servlet technologies in separate chapters and demonstrate how to create \u2018complete\u2019 websites with each technology. I suppose this is necessary to teach the underlying technologies, but I wish that the authors had down played their use a little more. They do eventually discuss MVC (model 2) and state that it is a better solution, but they take the easy way out by saying that sometimes straight JSP and straight Servlet implementations are except- able. My final grumble about creating professional websites has to do with the chapter on custom tags. While using the classic tag mechanism was a pleasure (not!), the simple tag mechanism is exactly what it claims to be \u2014 simpler \u2014 and much more straight forward. However, the authors only mention the classic mechanism \u2014 no mention of SimpleTagSupport and no mention of tag files. Long live SKIP_BODY! Now for the good stuff\u2026 My favorite chapter in the entire book has to be chapter 9 because they give a high-level summary of JavaBeans and JSP tags stating that they are outdated and rarely used anymore \u2014 replaced by JSTL. The only reason the authors even mention them is that the reader may need to know about them to support legacy applications. I wish the rest of the book gave more of these disclaimers. Finally, the authors really do a good job of describing the technologies. I just wish that they\u2019d promote best practices and shun bad ones more often.<\/p>\n<p><strong>Handle Databases Like a Pro<\/strong><br \/>\nThe authors give a good overview of SQL and then move on to coding straight JDBC code. However, they choose to close the connection inside of the try block rather than follow the best practice of closing the connection in the finally block. Also, they mention the differences between Statement and PreparedStatement and seem to lean towards Statement unless there is a need to execute the same statement repeatedly, but throughout the entire discussion there is no mention of cross site scripting prevention as one of the benefits of the PreparedStatement (not that PreparedStatement completely eliminates the threat of XSS, but it greatly reduces it).<\/p>\n<p><strong>Summary<\/strong><br \/>\nIn summary, this book is a disappointment. The subject of web development involves many technologies: CSS, HTML\/XHTML, Java, Servlets, JSP, JSTL, EL, SQL, Http, and Javascript; and this doesn\u2019t include the various frameworks (Struts, JSF, Spring, Hibernate, GWT, etc.) The authors make a valiant effort to cover all the base technologies, but there\u2019s just too much to cover in a single book and be able to make the claim that the reader will have all the skills necessary to create professional websites. This book barely manages to cover the basics. I give the authors an A for effort, but a D for execution. Having said that, if you don\u2019t understand any of the technologies (other than Java) and read the book with the understanding that this is just the beginning, this might be the book for you.<\/td>\n<\/tr>\n<tr>\n<td>\n<div id=\"attachment_159-2\" style=\"width: 200px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/www.denverjug.org.evohst.org\/wp-content\/uploads\/2010\/01\/cwosg.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-159-2\" class=\"alignnone size-full wp-image-166\" title=\"Modular Java\" src=\"http:\/\/www.denverjug.org.evohst.org\/wp-content\/uploads\/2010\/01\/cwosg.jpg\" alt=\"Modular Java\" width=\"190\" height=\"228\" \/><\/a><p id=\"caption-attachment-159-2\" class=\"wp-caption-text\">Modular Java<\/p><\/div>\n<p>Authors: <a href=\"http:\/\/www.jroller.com\/habuma\/\" target=\"_blank\">Craig Walls<\/a><br \/>\nPublisher: Pragmatic Publishers<br \/>\nPublish Date: July 2009<br \/>\nPages: 260<br \/>\nISBN: 978-1-93435-640-1<br \/>\nReview Date: October 15, 2009<br \/>\n<a title=\"Modular Java\" href=\"http:\/\/pragprog.com\/titles\/cwosg\/modular-java\" target=\"_blank\">Publisher&#8217;s Book Description<\/a><\/td>\n<td>\n<h5>REVIEW by <a href=\"Johnny Wey\">Johnny Wey<\/a><\/h5>\n<p>\u201cModular Java: Creating Flexible Applications with OSGi and Spring\u201d provides a great introduction to those either curious about OSGi or wanting to get more out of their existing OSGi workflow using the Spring Framework.\u00a0<a href=\"http:\/\/www.jroller.com\/habuma\/\">Craig Walls<\/a>, author of \u201cSpring in Action, 2nd Edition\u201d, opens the book explaining why OSGi matters and how it can be used to enhance the modularity and maintainability of those application stacks containing multiple and complex moving parts. He not only serves up a great introduction to the technology, but also directs the reader to several tools that make OSGi development significantly easier.<\/p>\n<p>In the second portion of the book, Craig throws Spring into the mix and demonstrates how the power of Spring Dependency Injection, autowiring, and the Spring MVC web framework can not only run seamlessly in an OSGi container, but also remove a large portion of the burden that OSGi\u2019s API can put on application development.<\/p>\n<p>Finally, Craig spends some time describing how an actual deployment might look in a production environment using both Tomcat and Jetty and provides optimization tips that make the process as painless as possible.<\/p>\n<p>The book itself is logically organized and Craig\u2019s writing style is approachable and easy to follow. All the example source code is available online, and Craig demonstrates how to install OSGi packages using both Eclipse Equinox and Apache Felix, leaving the final OSGi container decision up to the preference and requirements of the project. The sample application Craig uses to demonstrate the concepts in the book is surprisingly fun and useful, and the book contains some wonderful appendices that function as a great reference for current and future development projects. The book is a relatively quick read but surprisingly complete.<\/p>\n<p>For someone looking to get the most out of OSGi or wanting to find out what all the \u201cbuzz\u201d is about, Craig Walls\u2019 book is an outstanding choice.<\/td>\n<\/tr>\n<tr>\n<th colspan=\"2\">2006 Book Reviews<\/th>\n<\/tr>\n<tr>\n<td><a href=\"http:\/\/www.denverjug.org.evohst.org\/wp-content\/uploads\/2010\/01\/googlemapsapi.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-159\" title=\"Google Maps API\" src=\"http:\/\/www.denverjug.org.evohst.org\/wp-content\/uploads\/2010\/01\/googlemapsapi.jpg\" alt=\"Google Maps API\" width=\"190\" height=\"228\" \/><\/a><br \/>\nAuthors: Scott Davis<br \/>\nPublisher: The Pragmatic Programmers Publish<br \/>\nDate: May, 2006<br \/>\nPages: 83<br \/>\nISBN: friday<br \/>\nReview Date: February 2005 <a title=\"Google Maps API book description\" href=\"http:\/\/www.pragprog.com\/titles\/sdgmapi2\/google-maps-api-v2\" target=\"_blank\">Publisher&#8217;s Book Description<\/a><\/td>\n<td>\n<h5>REVIEW by Greg Ostravich<\/h5>\n<p>I enjoyed the book because the code samples made it seem very easy to use Google Maps to enhance existing applications that could benefit from Mapping data. It was an easy recipe book to follow. I&#8217;m currently out of town for training and I look forward to trying it out when I get home. Everything you need is available through the\u00a0<em>Google Maps API<\/em> book, so you don&#8217;t have to search for map data or open source tools like you would have to if you were rolling your own GIS application. Although Yahoo! has map features which give you the ability to easily map data, Google Maps gives you a fine-grained control, through JavaScript function calls. Some of these calls require longitude and latitude points. At the end of the book the author describes various GeoCoder services, the secret sauce to finding the longitute\/lattitude points based on a city or street address.<\/p>\n<p>This book is a part of\u00a0<a href=\"http:\/\/www.pragmaticprogrammer.com\">The Pragmatic Programmer&#8217;s<\/a> recently announced new line of books called the Pragmatic Bookshelf!\u00a0<a href=\"http:\/\/www.pragmaticprogrammer.com\/fridays.html\">Fridays<\/a>. The Pragmatic Bookshelf describes these books as &#8220;short, focused, PDF-only books, written by experts for developers who need information fast.&#8221; Scott Davis&#8217; new\u00a0<a href=\"http:\/\/www.pragmaticprogrammer.com\/titles\/sdgmapi\/index.html\"><em>Google Maps API<\/em><\/a> book is the second book in the series. In just 66 pages the book does a good job explaining and demonstrating how to use Google&#8217;s Mapping API to easily add location to your existing application if you have address data or longitude\/latitude points. This book includes links to what you need and code samples.<\/p>\n<p>Knowledge of JavaScript will help since all the Google APIs are implemented in JavaScript. Knowledge of server-side Java is a plus if you&#8217;re using AJAX with a servlet to proxy a request as the author does.<\/p>\n<p>This book didn&#8217;t take a lot of time to read and was a great introduction to the topic. I read it cover to cover in about two and a half hours. It would have been a little longer if I had access to a computer so I could play with the code snippets.<\/p>\n<p>I&#8217;ve seen examples of the types of &#8220;Google Maps Mash-ups&#8221; described in this book. Slashdot mentioned the Chicago crime statistics site before (\u00a0<a href=\"http:\/\/www.chicagocrime.org\">http:\/\/www.chicagocrime.org<\/a> ) which uses these JavaScripts to display crime data in Chicago. I had no idea how easy it is to create content like this until I read this book. It&#8217;s just a matter of calling the right JavaScript function.<\/p>\n<p>The book has five sections: Core Objects, Map Controls, User Data, Events, and\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/AJAX\">Ajax<\/a>. The author gives you sample code to create your GMap, and any points on the map called a GPoint. Next the book explains various map controls (Large Map, Small Map) that you can easily turn on and off with a function call. You can then add user data that includes markers (push-pins), polylines (line segments you might find on a driving route), and user windows that pop-up when you mouse over a push-pin. The author even shows you how to customize your marker with a different icon than the standard Google marker. The Events section was interesting, but I got a little lost on the code sample when the author was registering an event. I think if I could have played with the code on a computer I might not have had that problem. The author covers AJAX at the end of the book, but it&#8217;s only covered by a couple of pages. I would have liked to see more examples, but the author refers the reader to the\u00a0<cite>Pragmatic AJAX<\/cite> book instead.\u00a0<a href=\"http:\/\/www.pragmaticprogrammer.com\/titles\/ajax\/index.html\">Pragmatic AJAX<\/a> is available in Beta form as a PDF on the Pragmatic Website and I haven&#8217;t read it yet. A couple of the authors have an blog on Ajax called\u00a0<a href=\"http:\/\/www.ajaxian.com\/\">Ajaxian<\/a> that I subscribe to.<\/p>\n<p>This book was an easy, fun read and I was amazed at how simple it was to implement all of the same features seen in\u00a0<a href=\"http:\/\/maps.google.com\">http:\/\/maps.google.com<\/a> without a large amount of JavaScript knowledge or mapping knowledge. I liked that there were lots of code samples and demonstrations on the author&#8217;s website. The author also included some JavaScripts for some things that were lacking in the\u00a0<em>Google Maps API<\/em>. The explanation and example usage of AJAX is an added benefit. This book is for anyone who has data (addresses, cities, or long\/lat points) that they would like to map in their applications. Now anybody can do &#8220;Google Maps Mash-Ups&#8221;.<\/p>\n<p>I need to provide a caveat. I&#8217;m friends with Scott Davis; we are both involved with my local Java User&#8217;s Group and I did the technical editing of Scott and Tom Marr&#8217;s\u00a0<cite>JBoss at Work<\/cite>.<\/p>\n<p>I would rate this book an 8 out of 10.<\/p>\n<h5>REVIEWER<\/h5>\n<p>Greg Ostravich is a board member of the Denver Java User&#8217;s Group. Greg is a dedicated worker for CDOT. For DJUG, Greg helps to coordinate Sponsorships and Marketing of the DJUG.<em><em> <\/em><\/em><\/td>\n<\/tr>\n<tr>\n<th colspan=\"2\">2005 Book Reviews<\/th>\n<\/tr>\n<tr>\n<td>\n<div id=\"attachment_157\" style=\"width: 170px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/www.denverjug.org.evohst.org\/wp-content\/uploads\/2010\/01\/robustjavacover.jpeg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-157\" class=\"size-full wp-image-157\" title=\"robust Java\" src=\"http:\/\/www.denverjug.org.evohst.org\/wp-content\/uploads\/2010\/01\/robustjavacover.jpeg\" alt=\"robust Java\" width=\"160\" height=\"212\" \/><\/a><p id=\"caption-attachment-157\" class=\"wp-caption-text\">robust Java by Stephen Stelting<\/p><\/div>\n<p>Authors: Stephen Stelting<br \/>\nPublisher: Prentice Hall<br \/>\nPublish Date: September, 2004<br \/>\nPages: 304<br \/>\nISBN: 0-13-100852-8<br \/>\nReview Date: February 2005 <a href=\"http:\/\/www.informit.com\/store\/product.aspx?isbn=0131008528\" target=\"_blank\">Publisher&#8217;s Book Description<\/a><\/td>\n<td>\n<h5>REVIEW by Linda Meserve<\/h5>\n<p>I have designed business systems in several languages. I began hands-on Java development last year as a neophyte developer on an 8-month development project. I was pleased to find\u00a0<em>Robust Java: Exception Handling, Testing, and Debugging<\/em> by Stephen Stelting on the Denver JUG\u2019s book review list.<\/p>\n<p><em>Robust Java<\/em> is a great resource for beginning to intermediate level Java professionals with a working knowledge of object-oriented concepts. If you have been introduced to the\u00a0<em>wide world of Jav<em> and used one or two aspects of the language, you will find Robust Java combines a high-level (macro) view of Java architecture with the close up (micro) view of coding and testing Java classes. Reviewing Robust Java helped me integrate the wide range of topics I encountered during my recent development experience.<\/em><\/em><\/p>\n<p><em><em><em>Robust Java<\/em> will appeal to all types of learning styles. The table of contents shows a \u2018soup to nuts\u2019 list of Java topics \u00d0 primitives, object types, collections, I\/O, threading, RMI, JNDI, JDBC, J2EE, patterns, and others. Each chapter presented a focus on handling exceptions and logging and testing issues specific to the topic at hand. Any effective testing strategy requires the tester to understand how a tested feature works and the potential weaknesses to test for. So each topic was covered three ways \u00d0 first as an abstract concept, then as a practical mechanism, and finally from a best practices point of view.<\/em><\/em><\/p>\n<p><em><em>Normally I don\u2019t consider software testing an interesting topic. But\u00a0<em>Robust Java<\/em> provides technical information flavored with humorous footnotes and remarks. Stephen Stelting writes from a developer\u00d5s point of view and incorporates a sense of humor which makes it worthwhile to forage through the footnotes. For example:<\/em><\/em><\/p>\n<p><em><em><em>To get an idea of how vital it [testing software] is, compare it to testing something like an automobile\u00c9If you have no testing capabilities, you would have to replace the whole car each time something went wrong! [footnote] <\/em>I have owned a few cars like this&#8230;<br \/>\nIn summary, Robust Java was a pleasure to read and study. Its clear, concise chapters covering J2EE and JUNIT are well worth the purchase price. I recommend Robust Java to beginning or intermediate Java developers who want to integrate their current knowledge while taking their coding and testing practices to the next level.<\/p>\n<p><\/em><\/em><em>REVIEWER<\/em><\/p>\n<p><em><em> <\/em><\/em><\/p>\n<p><em><em> <\/em><\/em><\/p>\n<p><em><em><\/p>\n<h5><span style=\"font-style:normal;font-weight:normal;font-size:11px;\"><em><em>Linda R. Meserve specializes in applying technology to the changing needs of business. She is actively studying for Java developer certification. When Linda is not gathering and implementing software requirements, she enjoys fly-fishing, sightseeing, and live theatre. Contact Linda at countmein@reddesertsoftware.com.<\/em><\/em><\/span><\/h5>\n<p><\/em><\/em><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>Book Reviews written by members of the Denver JUG. If you wish to review a book, please e-mail us at denverjug at yahoo dot com to let us know which book you&#8217;re interested in reviewing. Although book reviews in 2004 &hellip; <a href=\"https:\/\/www.djug.org\/?page_id=155\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":7,"comment_status":"closed","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-155","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.djug.org\/index.php?rest_route=\/wp\/v2\/pages\/155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.djug.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.djug.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.djug.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.djug.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=155"}],"version-history":[{"count":0,"href":"https:\/\/www.djug.org\/index.php?rest_route=\/wp\/v2\/pages\/155\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.djug.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}