Some reader favorites:
EJB fundamentals and session beans
Create a scrollable virtual desktop in Swing
More action with Struts 2
In a recent review of Struts 2 in Action, JW Blogger Oleg Mikheev notes that Struts 2 is "just a collection of extensions built upon WebWork, which is ultimately
the right thing to learn before starting a Struts 2 project." While Struts 2 has some architectural flaws, Oleg calls WebWork
well-designed, well-tested, and reliable. What are your experiences using Struts 2 and WebWork?
Also see "Hello World the WebWork way," a JavaWorld excerpt from WebWork in Action, by Patrick Lightbody and Jason Carreira.
| Memory Analysis in Eclipse |
| Enterprise AJAX - Transcend the Hype |
Java is a programming language. It is also a tool, and a tool in the wrong hands is useless, sometimes even dangerous. Knowing only the syntax and semantics of Java does not a programmer make. A programmer must also know and understand intimately the environmental paradigm, which in Java's case, is object-oriented design. It is not enough to understand what an object is, what an interface is, how objects implement interfaces, ad nauseam. A programmer needs to know the mystic ways in which those rules and relationships can be combined into flexible, reusable, and scalable systems. The books that I discuss here will give you those lessons and enhance your career as a Java developer. Ironically, none of them contain the word Java in their titles.
Note: URLs for all books discussed in this article can be found in Resources.
To paraphrase the book Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, and Grady Boocha (Addison-Wesley, 1995), a pattern describes a recurring problem and proposes a reusable solution. Patterns simplify your job by helping you avoid the pitfalls of memory limitations via object sharing -- with Flyweight, for example -- or create a swapable integration with third-party libraries such as Facade. Design Patterns details those two patterns, plus a score more, and provides code examples and easy-to-understand diagrams. Although the code samples are all in C++, the syntax sufficiently resembles Java; most programmers will thus have no problem grasping the concepts. There is an imitation of this book available that uses Java for the examples -- Java Design Patterns: A Tutorial by James William Cooper (Addison-Wesley, 2000) -- but you won't find the same clarity and depth that the Gang of Four (the authors' established nickname) conveys in Design Patterns.
Once you are familiar with the patterns cataloged in Design Patterns, learn how some of them evolved. In Pattern Hatching: Design Patterns Applied (Software Patterns Series) (Addison-Wesley, 1998), John Vlissides -- one-fourth of The Gang -- recounts the debates and discussions over some of the more popular patterns and introduces some new patterns that didn't make the cut in Design Patterns.
To err is human. If that is true, I've seen hundreds of programs that are more human than I. Projects go wrong. Mistakes are made. Schedules slip, and quality is sacrificed. Those make up the caveats of our profession. But where do you turn when things reach their worst? Too many of my colleagues belong to the "throw-away-and-start-over" camp: start over from scratch and hope that you've learned from your mistakes. That is the most extreme solution, one that is sure to infuriate your boss. But don't despair because there are alternatives.