Effective Java: Programming Language Guide (Java Series)
Written for the working Java developer, Joshua Bloch'sEffective Java Programming Language Guideprovides a truly  useful set of over 50 best practices and tips for writing better Java  code. With plenty of advice from an indisputable expert in the field,  this title is sure to be an indispensable resource for anyone who wants  to get more out of their code.As a veteran developer at Sun, the  author shares his considerable insight into the design choices made  over the years in Sun's own Java libraries (which the author  acknowledges haven't always been perfect). Based on his experience  working with Sun's best minds, the author provides a compilation of 57  tips for better Java code organized by category. Many of these ideas  will let you write more robust classes that better cooperate with  built-in Java APIs. Many of the tips make use of software patterns and  demonstrate an up-to-the-minute sense of what works best in today's  design. Each tip is clearly introduced and explained with code snippets  used to demonstrate each programming principle.Early sections on  creating and destroying objects show you ways to make better use of  resources, including how to avoid duplicate objects. Next comes an  absolutely indispensable guide to implementing "required" methods for  custom classes. This material will help you write new classes that  cooperate with old ones (with advice on implementing essential  requirements like theequals()andhashCode()methods).The author has a lot to say about class design, whether  using inheritance or composition. Tips on designing methods show you  how to create understandable, maintainable, and robust classes that can  be easily reused by others on your team. Sections on mapping C code  (like structures, unions, and enumerated types) onto Java will help C  programmers bring their existing skills to Sun's new language. Later  sections delve into some general programming tips, like using  exceptions effectively. The book closes with advice on using threads  and synchronization techniques, plus some worthwhile advice on object  serialization.Whatever your level of Java knowledge, this title can  make you a more effective programmer. Wisely written, yet never pompous  or doctrinaire, the author has succeeded in packaging some really  valuable nuggets of advice into a concise and very accessible guidebook  that arguably deserves a place on most any developer's bookshelf.--Richard DraganTopics covered:Best practices and tips for JavaCreating and destroying objects (static factory methods,  singletons, avoiding duplicate objects and finalizers)Required methods for custom classes (overridingequals(),hashCode(),toString(),clone(), andcompareTo()properly)Hints for class and interface design (minimizing class and member  accessibility, immutability, composition versus inheritance, interfaces  versus abstract classes, preventing subclassing, static versus  nonstatic classes)C constructs in Java (structures, unions, enumerated types, and  function pointers in Java)Tips for designing methods (parameter validation, defensive copies,  method signatures, method overloading, zero-length arrays, hints for  Javadoc comments)General programming advice (local variable scope, using Java API  libraries, avoidingfloatanddoublefor exact  comparisons, when to avoid strings, string concatenation, interfaces  and reflection, avoid native methods, optimizing hints, naming  conventions)Programming with exceptions (checked versus run-time exceptions,  standard exceptions, documenting exceptions, failure-capture  information, failure atomicity)Threading and multitasking (synchronization and scheduling hints,  thread safety, avoiding thread groups)Serialization (when to implementSerializable, thereadObject(), andreadResolve()methods)