Java Open Source Programming: with XDoclet, JUnit, WebWork, Hibernate
The Java language itself is not strictly open-source (Sun has held onto control, albeit with lots of public input). There is, however, a large open-source development community around this highly capable language.Java Open Source Programmingdescribes and provides tutorials on some of the most interesting public Java projects, and is designed to enable a Java programmer (who’s worked through the basic language’s initial learning curve) to take on more ambitious assignments. The authors generally treat the covered open-source packages as resources to be used, rather than projects to be contributed to, and so it’s fair to think of this volume as the `missing manual` for downloaded code. In that spirit, the authors devote many sections to `how to` subjects (addressing, for example, a good way to retrieve stored objects from a database and the procedure for calling an action in XWork).
Java Open Source Programmingtakes a bit of a risk by devoting a lot of space to the development of a complex application (an online pet shop), as such a didactic strategy can be hard to follow. The authors pull it off, though, and manage to show that their covered technologies can be used to create a feature-rich and robust application that uses the versatile model-view-controller (MVC) pattern. This book will suit you well if you’re planning an MVC Java project and want to take advantage of open-source packages.–David Wall
Topics covered: The most popular open-source Java packages, particularly those concerned with Web applications and the model-view-controller (MVC) pattern. Specific packages covered include JUnit and Mocks (code testing), Hibernate (persistent storage of objects in databases), WebWork (MVC), SiteMesh (Web page layout), Lucene (site searching), and WebDoclet (configuration file generation).
use simple concepts whenever possible
By now, in 2006, Java is up to version 1.5, with 1.6′s release imminent. When the book was written in 2003, it necessarily used the then current Java, 1.4. But much of the book’s advice is still germane. Remembering too that the various open source packages it describes are likely to be new revs as well.
The key idea in the text is to implement a simple concept in code. Only add complexity when it is truly needed. As a general rule in programming, or project design, this is important. It helps you more quickly make prototypes and test these in an agile fashion. Plus, once you have a stable code base, it is much easier for you or someone else to maintain.
The examples that use JUnit to implement an easy unit testing of your code are perhaps the most useful, to many readers. Unit testing greatly helps the robustness of your code. And the book correctly points out that it is not exclusively associated with Extreme Programming. Unit testing also is present in other methodologies.
Great, well paced intro into O/S java, but I want more!
I read this book as part of my switch to java. I’ve been building web sites for almost 10 years in other languages, and decided to use this book together with Learning Java as a hand-by-hand real world tutorial on how to integrate the tools, properly configure your source tree, run your tests, how to setup your MVC web framework, validation, etc. I think that as a beginning real-world supplement to a java learner like myself, this book succeeds brilliantly. I do not mind poor grammar that other people are complaining about, as I myself was not born in an English speaking country. I do appreciate author’s opinionated and passionate approach to subjects they discuss, such as test driven development, their choice of WebWork over Struts, their usage of Ant and jUnit.
I actually did download and compiled (and ran) the PetSoar example, so those reviewers that claim the code does not compile must have not actually tried it. It does work! I started a project based off the PetSoar example, so it was of great help to have that source.
But, there are a couple of issues that I feel could have been done better/differently.
1. The authors use the in-memory database HSQLDB for all of their development. I understand that using in-memory database allows you to test persistence stuff from unit tests, but I would have like to see that done in ADDITION rather than INSTEAD OF a regular database, such as Oracle/PostgreSQL/MySQL.
2. Most web-based applications also have a need for some sort of backend/daemon processes. I saw no mention of how to implement those within the context of WebWork/xWork. For example, a background thread that polls database table for changes is a very common requirement for many apps.
3. Would be great to at least touch on some open source queue (JMS) based implementation, and its integration into a web app.
4. Integration with Resin was out of date by the time I tried it and did not work. I am using Tomcat and would have prefered authors to show how to develop pages without having to reload the context every time the change happens (from Eclipse/IDEA).
5. Description of WebWork/xWork and Hibernate could use extra 10-20 pages each. The IoC concept was not explained that well (I felt), especially considering that the book seems to be targeted at someone like myself, who may not be well accustomed to an alternative. xWork’s limitation that only actions can be `aware` of component interfaces makes it hard to design complex object hierarchies, where an action may not be the best place to put all your business logic.
6. Diagrams! Database design, class relationships, please – use UML!! One picture is worth thousand words! Use them! :)
Anyway, I think this book is great, but if there is ever a 2nd edition, it could benefit a lot from getting a bit of face lift, more in-depth analysis on select technologies, and more digrams.
Great explanation of many useful and not well known tools.
I learn a lot by reading this book about `not well known` open source like Lucene and WebWork. I must say that the explanation of Xwork and WebWork is excellent. I also learn what can do Lucene for me. However, Lucene seems require more explanation that the one provided on the book.
If you don’t recognize some of the open sources framework named on the book cover, you should! And reading this book is the most efficient way.
NOT ABLE TO DOWNLOAD EBOOK
I bought the ebook version of this book 4 days ago and so far I can not download or read it. Everytime I try I get an Adobe reader error. I read lots of pdf files and have no problem with my adobe reader. I am also a software developer since 1986 so I know about computers. So I don’t recommend the e-book version, and I have not yet received a refund either.
Good book, poor support site at Wiley
The other reviewers cover the editing and content of the book fairly well. I would like to add that at the end, the chapter on securing the application is very weak. They basically say we didn’t do it very well for this app try OSuser. OSuser is not documented for version pre 1.0 and it seems 1.0 will not be released (you can get it from the CVS), OSuser 2.0 work has been started but the page has not been changed for 4 months (since about Nov. 2003). Also the publisher’s (Wiley) site does have the complete download of the PetSoar which works, but the mailing list for discussing the book does not work, nor is there any errata after 4 months(2004/03)