Core J2EE Patterns: Best Practices and Design Strategies, Second Edition
||Author: Deepak Alur, Dan Malks, John Crupi|
List Price: $49.99
Our Price: Click to see the latest and low price
Publisher: Prentice Hall PTR (10 June, 2003)
Sales Rank: 1,005
Average Customer Rating: 4.77 out of 5
Customer ReviewsRating: 4 out of 5
Good reference but incomplete code with many errors
This book is a very good guide for a J2EE architect. But, the code examples in this book are either incomplete or have many errors. I would imagine authors could argue that the book was not supposed to give full code. But, they have supported pattern ideas with the help of code (not pseudo code). They could have either written just the pseudo code or taken a little more effort to build a complete code. They have left the readers kind of in between.
I wonder how such a popular book can have so many typos, errors and incomplete code!
Hope they come up with Ver3.0 soon.
Rating: 4 out of 5
Good book but needs cleanup
I found this to be an excellent guide to some very usefull J2EE patters that are applicable in a broader context also.
However, the printing that I had was in desperate need of some reviewing: it contained *a lot* of typos, incorrect image references, code sample errors, layouting problems and other such errors. No big problem but it does detract from an otherwise excellent book!
Rating: 5 out of 5
Not only applicable to J2EE applications
We software developers often get ourselves buried in learning new technologies, particularly in J2EE, there are so many things to learn, e.g., JSP, Servlet, JAAS, JSSE, JMS, JavaMail, EJB, JDBC, JDO, etc. just to name a few. With these overwhelming technologies, we often overlook the issue how to "design" "good" systems using these technologies. Knowing the technology itself is one thing, and knowing how to design with it well is another. Technologies are always advancing, it is really the design technique that is the essence or hard-core skill that a software developer should obtain.
Patterns, are such essences. They are best practices from experiences on how to design the systems/components at different levels. And Core J2EE Patterns are such collections in the J2EE context.
Even though the authors claim that these patterns are used under the J2EE context, I see most of them also application in a more general context. For example,
If a remote service is to be provided, it is good practice to use Session Facade (or Remote Facade), and it will provide service by delegating to the Application Service (or Service Layer) or Business Delegate.
To facilitate the client to access a remote service, Business Delegate can be applied to hide the remoteness, in which it will use Service Locator to look up the remote service. In this sense, Business Delegate also functions as a proxy of the remote service.
To decouple the Business Object from accessing the resources directly, Data Access Object is a good design to be applied.
To move the data between the tiers or processes, Data Transfer Object can be use.
If studying carefully, you will a lot of patterns and concepts can be applied to non-J2EE applications. And a lot of them can be traced back to the seminal work of GoF (Design Patterns). That is why I said the design skill should be essential to a developer, these techniques are correlated and inter-connected, and accumulated by experience. They are relatively stable (IMO), though the technologies are changing (rapidly).
The other good things about book, the authors not only document the best practices (patterns) of J2EE applications to learn, they also list a set of bad practices (anti-patterns) to avoid, in between, they provide a bridge, the refactoring, to go from bad to good.
Also, no pattern is an island. All patterns are related, and to form a bigger or higher level of pattern, and these higher level of patterns collaborate with each other and eventually form the whole architecture of the system, that is pattern oriented architecture. In last episode, the authors gave such an example, and they call it a micro architecture.
The authors also refer to the work of Martin Fowler's Patterns of Enterprise Application Architecture(which list patterns of more general enterprise application patterns besides J2EE) to clear out some gaps between the two books, e.g., Value Object in 1st edition really means Transfer Object, which is the same pattern listed as Data Transfer Object in Fowler's book. And Value Object is just another pattern in PEAA.
The writing style is very smooth, succinct and to the point. The pattern template is classic, with the authors chose strategies for implementation variations. The examples are probably excerpt from real projects, however, there are some errors in the code, which made me doubt that these codes were ever compiled. But, hey, it is the concept that is more important :-)
· Expert One-on-One J2EE Design and Development
· J2EE Developer's Handbook
· Struts in Action: Building Web Applications with the Leading Java Framework
· Programming Jakarta Struts
· Patterns of Enterprise Application Architecture