Programming Books C Java PHP Python Learn more Browse Programming Books
Effective Java Programming Language Guide and over one million other books are available for Amazon Kindle. Learn more

Sorry, this item is not available in
Image not available for
Image not available

To view this video download Flash Player

Have one to sell? Sell yours here
Start reading Effective Java Programming Language Guide on your Kindle in under a minute.

Don't have a Kindle? Get your Kindle here, or download a FREE Kindle Reading App.

Effective Java: Programming Language Guide (Java Series) [Paperback]

by Joshua Bloch
4.9 out of 5 stars  See all reviews (122 customer reviews)

Available from these sellers.

Free Two-Day Shipping for College Students with Amazon Student


Amazon Price New from Used from
Kindle Edition $43.11  
Paperback --  
Sell Us Your Books
Get up to 80% back when you sell us your books, even if you didn't buy them at Amazon. Learn more
There is a newer edition of this item:
Effective Java (2nd Edition) Effective Java (2nd Edition) 4.8 out of 5 stars (145)
In Stock.

Book Description

June 15, 2001 0201310058 978-0201310054

A new edition of this title is available, ISBN-10: 0321356683 ISBN-13: 9780321356680

Editorial Reviews Review

Written for the working Java developer, Joshua Bloch's Effective Java Programming Language Guide provides 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 the equals() and hashCode() 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 Dragan

Topics covered:

  • Best practices and tips for Java
  • Creating and destroying objects (static factory methods, singletons, avoiding duplicate objects and finalizers)
  • Required methods for custom classes (overriding equals(), hashCode(), toString(), clone(), and compareTo() 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, avoiding float and double for 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 implement Serializable, the readObject(), and readResolve() methods)

From the Back Cover

"An excellent book, crammed with good advice on using the Java™ programming language and object-oriented programming in general."

--Gilad Bracha, Computational Theologist, Sun Microsystems, Inc., and co-author of The Java™ Language Specification, Second Edition "I sure wish I had this book ten years ago. Some might think that I don't need any Java books, but I need this one."
--James Gosling, Fellow and Vice President, Sun Microsystems, Inc., and inventor of the Java™ programming language

Are you looking for a concise book packed with insight and wisdom not found elsewhere? Need to really understand the Java programming language; that is, really understand it? Do you want to write code that is clear, correct, robust, and reusable? Look no further! The book you are holding will provide you with this and many other benefits you may not even know you were looking for. Become a more effective programmer.

Featuring fifty-seven valuable rules of thumb, Effective Java™ Programming Language Guide contains working solutions to the programming challenges most developers encounter every day. Offering comprehensive descriptions of techniques used by the experts who developed the Java platform, the book reveals what to do--and what not to do--in order to produce clear, robust, and efficient code.

Each rule appears in the form of a short, stand-alone essay offering insight, code examples, and "war stories" from this uniquely qualified author. The essays include specific advice and insights into the subtleties of the language and are illustrated with exceptional code examples. Throughout the book, common language idioms and design patterns are examined and insightful and enlightening tips and techniques are provided.

Coverage includes:

  • Customary and effective language usage that is saturated with expert advice in a concise, readable, and easy-to-access format.
  • Patterns, antipatterns, and idioms to help you get the most out of the Java platform.
  • Commonly misunderstood subtleties of the language and its libraries: how to avoid the traps and pitfalls.
  • Focus on the language and its most fundamental libraries: java.lang, java.util, and, to a lesser extent,
  • Detailed coverage of serialization, including practical advice that is not available elsewhere.

    Appealing to a broad spectrum of the programming community, Effective Java™ Programming Language Guide presents the most practical, authoritative guidelines available for writing efficient, well-designed programs for the Java platform.


  • Product Details

    • Paperback: 272 pages
    • Publisher: Addison-Wesley (June 15, 2001)
    • Language: English
    • ISBN-10: 0201310058
    • ISBN-13: 978-0201310054
    • Product Dimensions: 9.2 x 7.4 x 0.8 inches
    • Shipping Weight: 1.2 pounds
    • Average Customer Review: 4.9 out of 5 stars  See all reviews (122 customer reviews)
    • Amazon Best Sellers Rank: #429,904 in Books (See Top 100 in Books)

    More About the Author

    Discover books, learn about writers, read author blogs, and more.

    Customer Reviews

    Most Helpful Customer Reviews
    193 of 196 people found the following review helpful
    5.0 out of 5 stars This is what you need to know to become a Java guru! September 5, 2001
    Format:Paperback|Verified Purchase
    This book contains a generous cross-section of the knowledge that differentiates Java gurus from advanced Java programmers.
    I've been working full-time in Java since 1995, prior to version 1.0. I've also written books and articles on Java and have been teaching Java at the University level as a sideline for four years. In that time I've accumulated a great deal of "expert" knowledge about the language, the JVM, and the APIs and developed opinions on the best approaches to use in Java. At this point, reading books such as this that contain a collection of tips and advice I am usually satisfied to gain one new piece of knowledge; I learned at least six new things from this book.
    Of the 50+ books on Java I've read, this book contains by far the most comprehensive and useful collection of that hard-won knowledge of core Java. The bonus is the clear and concise manner in which it is presented.
    Bloch is dead-on. There isn't a single factual error or piece of bad advice in the book. The most I came up with were a couple of omissions on some of the topics. However, omissions are inevitable given the technical depth of some of the topics Bloch covers, such as serialization, exceptions and threads.
    I offer only two caveats about the book. The first is that the book is for advanced Java programmers. This is not to say that this information is not useful to every Java programmer, but you need to have a comprehensive knowledge of Java in order to appreciate many of the topics. This book does not provide comprehensive coverage, but rather fills in the detail and subtleties. I teach a Java IV class and recommend this to my students as additional reading after completing the class.
    Read more ›
    Was this review helpful to you?
    31 of 31 people found the following review helpful
    5.0 out of 5 stars The best book on how to program in Java July 25, 2001
    I spend a lot of time thinking and talking about programming, languages, style, etc. This book is without question the best thing I've read about how to program in Java.
    The book contains 57 suggestions on what to do or not to do when writing Java code. Most are common sense, though not all -- the material on serialization was new to me, for example. But it's common sense that's developed over time, and much of it is not obvious until you have a lot of experience using the language. Even then, it's worth reading; I consider myself a fairly experienced Java programmer, and I'd say that a quarter of the book was new material for me. Even when I knew a technique he was recommending, it was really good to read the arguments Bloch made for doing something in a particular way. And I found that I agree with almost everything he wrote.
    The book is very Java-specific. Some of the tips generalize to other, similar, object-oriented languages, or to systems with similar thread models, but, by and large, this is nitty gritty Java hacking. I like that: it allows Block to be concrete in what he says. And, unlike most of the stuff written by JavaSoft employees, this book does not try to pretend that Java is flawless, which is a refreshing perspective; see, for example, his discussion of the Cloneable interface.
    What's best about the book is that it encodes a lot of the lore and feel of the language: how to use it in practice.
    If you're working in Java, it belongs on your shelf next to the language specification, and those are the only two general books on the language you should need.
    Comment | 
    Was this review helpful to you?
    23 of 23 people found the following review helpful
    5.0 out of 5 stars Brilliant, succinct and highly professional May 2, 2002
    IMHO, The Java Bible is out. It is that simple. I think this book deserves no
    less popularity and respect than "Effective C++" which set the high standard
    to the "Effective" series.
    It's definitely not a beginners book, this is the book that core Java developers
    should memorize by heart. This book is written by the Sun expert who both
    design and develop Java run-time libraries (Collections, in particular, which is
    one of the prettiest species in Java) and is definitely aware of their successes
    and failures. Out of his experience Joshua brings hundreds of "how about this"
    unexpectable situations - those I doubt you was ever thinking of before.
    It contains 57 issues covering topics about:
    - creating objects (how about static factories vs constructors ?)
    - methods common to all objects (ever thought that overriding clone, equals, hashCode
    and toString is easy ?),
    - designing interfaces of your classes and interfaces (ever realized how immutability
    is important ? ever wondered which one of the inner classes fits best ?)
    - substitutes to C constructs (don't say there are no unions and enums in Java)
    - general programming and methods (ever knew that overloading is dangerous in
    it's nature and that ( 1.00 - ( 9 * 0.1 )) != 0.1 ?)
    - exceptions (ever wondered how should you react to some particular failure -
    terminate the JVM, throw the exception [which one ?], return null ?)
    - threads (ever thought that double check locking is broken and that notify() is
    more dangerous than notifyAll() anh what are 'alien' methods that cause deadlocks ?)
    - serialization (making your object serializable should never be just declaring
    it this way ! How about readResolve() and defensive readObject() ?
    Read more ›
    Comment | 
    Was this review helpful to you?
    Most Recent Customer Reviews
    5.0 out of 5 stars Old book with relavent information
    I've been working with java for a number of years, this book was very informative in regard to many of the complex design decisions made to have specific C++ operations done... Read more
    Published 7 months ago by Earl B. Bingham
    4.0 out of 5 stars excellent book
    The author managed to clearly explain the rather complex mechanisms of programming while not losing the thread topic and not venturing into small parts, which are hidden from the... Read more
    Published 7 months ago by Alexey Zabolotniy
    5.0 out of 5 stars Masterpieces will never get stale
    Even after the second edition has been published, this book hasn't became outdated.
    It is still valuable for those who prepare themselves for interview in IT company. Read more
    Published on August 16, 2011 by Eugene
    5.0 out of 5 stars This Book is a Daily Guide for the Java Developer
    I purchased this book last week from and already I am hooked to it.The style is not pedantic but thorough. Read more
    Published on May 12, 2009 by Amazon Customer
    4.0 out of 5 stars Good but a little outdated.
    Good book, but a little outdated.
    Surely it's a must if you program in Java (but the same applies to all the books on improving programming languages), it is not enough to... Read more
    Published on February 5, 2009 by Fuga Federico
    5.0 out of 5 stars Great Guide
    I am only about half way through this book and already have learned numerous things about the design of Java as a language and about proper usage of said language. Read more
    Published on March 26, 2008 by Justin Hughey
    5.0 out of 5 stars Indispensable...
    An indispensable, insightful, and well written Java book to add to your reference library. The second addition is due out May 25, 2008.
    Published on March 24, 2008 by M. ROGERS
    5.0 out of 5 stars Great recommendations
    I ask all of the developers I manage to read this book, after having been introduced to it by a coworker. Read more
    Published on March 3, 2008 by Ben Twain
    5.0 out of 5 stars Thing of Beauty is Joy Forever ...
    It is incredible to read Joshua's insights. Forget about being a Java Guru or something like that. This book is pure joy to read if you are detail oriented, perfectionist or a... Read more
    Published on September 30, 2007 by Kedar Mhaswade
    5.0 out of 5 stars Best Java book available
    I've been using Java since 1995 and have owned this book since 2001 and it's the only Java text I still turn to. Read more
    Published on September 28, 2007 by C. Longo
    Search Customer Reviews
    Only search this product's reviews

    What Other Items Do Customers Buy After Viewing This Item?


    Search Customer Discussions
    Search all Amazon discussions

    Topic From this Discussion
    Will it ever be released?
    I am happy to report that the second edition is currently being printed, and will be available in time for JavaOne (May 6). Amazon will probably start shipping it shortly thereafter. There's a lot of great new material. All of the Java 5 language features are covered. There are two new... Read more
    Apr 24, 2008 by Josh Bloch |  See all 10 posts
    vs headfirst
    This book isn't about the usual "gang of four" style design patterns. The two books are complimentary, although I personally found "Effective Java" to be a more useful book.
    Jan 16, 2007 by Brian S. O'Neill |  See all 3 posts
    Start a new discussion
    First post:
    Prompts for sign-in

    Look for Similar Items by Category