Customers who viewed this item also viewed
Buy New
-61%
$13.89$13.89
$3.99 delivery Saturday, May 30
Advertisement
Advertisement
Ships from: GreenIceMedia Sold by: GreenIceMedia
Get it faster
-41%
$20.79$20.79
FREE delivery Tuesday, May 26 on orders shipped by Amazon over $35
Advertisement
Advertisement
Ships from: Amazon Sold by: FindAnyBook
Learn more
Used - Very Good
$6.07$6.07
FREE delivery May 28 - June 1
Advertisement
Advertisement
Ships from: GREENWORLD BOOKS Sold by: GREENWORLD BOOKS
Sorry, there was a problem.
There was an error retrieving your Wish Lists. Please try again.Sorry, there was a problem.
List unavailable.
Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Follow the author
OK
Effective Java (2nd Edition) 2nd Edition
Purchase options and add-ons
- ISBN-100321356683
- ISBN-13978-0321356680
- Edition2nd
- Publication dateMay 28, 2008
- LanguageEnglish
- Dimensions8.5 x 0.83 x 11 inches
- Print length346 pages
Deals on related products
Customers also bought or read
- Cracking the Coding Interview: 189 Programming Questions and Solutions
Paperback$24.54$24.54Delivery Jun 1 - 3 - Head First Java: A Brain-Friendly Guide#1 Best SellerBeginner's Guides to Java Programming
Paperback$43.99$43.99FREE delivery Mon, May 25 - Python Crash Course, 3rd Edition: A Hands-On, Project-Based Introduction to Programming#1 Best SellerPython Programming
Paperback$27.53$27.53Delivery Mon, May 25 - Fluent Python: Clear, Concise, and Effective Programming
Paperback$43.99$43.99FREE delivery Mon, May 25 - Design Patterns: Elements of Reusable Object-Oriented Software
Hardcover$26.53$26.53Delivery Jun 6 - 8
Editorial Reviews
Review
Raves for the First 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.
“An excellent book, crammed with good advice on using the Java programming language and object-oriented programming in general.”
—Gilad Bracha, coauthor of The Java™ Language Specification, Third Edition
“10/10—anyone aspiring to write good Java code that others will appreciate reading and maintaining should be required to own a copy of this book. This is one of those rare books where the information won’t become obsolete with subsequent releases of the JDK library.”
—Peter Tran, bartender, JavaRanch.com
“The best Java book yet written.... Really great; very readable and eminently useful. I can’t say enough good things about this book. At JavaOne 2001, James Gosling said, ‘Go buy this book!’ I’m glad I did, and I couldn’t agree more.”
—Keith Edwards, senior member of research staff, Computer Science Lab at the Palo Alto Research Center (PARC), and author of Core JINI (Prentice Hall, 2000)
“This is a truly excellent book done by the guy who designed several of the better recent Java platform APIs (including the Collections API).”
—James Clark, technical lead of the XML Working Group during the creation of the XML 1.0 Recommendation, editor of the XPath and XSLT Recommendations
“Great content. Analogous to Scott Meyers’ classic Effective C++. If you know the basics of Java, this has to be your next book.”
—Gary K. Evans, OO mentor and consultant, Evanetics, Inc
“Josh Bloch gives great insight into best practices that really can only be discovered after years of study and experience.”
—Mark Mascolino, software engineer
“This is a superb book. It clearly covers many of the language/platform subtleties and trickery you need to learn to become a real Java master.”
—Victor Wiewiorowski, vice president development and code quality manager, ValueCommerce Co., Tokyo, Japan
“I like books that under-promise in their titles and over-deliver in their contents. This book has 57 items of programming advice that are well chosen. Each item reveals a clear, deep grasp of the language. Each one illustrates in simple, practical terms the limits of programming on intuition alone, or taking the most direct path to a solution without fully understanding what the language offers.”
—Michael Ernest, Inkling Research, Inc.
“I don’t find many programming books that make me want to read every page—this is one of them.”
—Matt Tucker, chief technical officer, Jive Software
“Great how-to resource for the experienced developer.”
—John Zukowski, author of numerous Java technology books
“I picked this book up two weeks ago and can safely say I learned more about the Java language in three days of reading than I did in three months of study! An excellent book and a welcome addition to my Java library.”
—Jane Griscti, I/T advisory specialist
Video Game Review by 1UP.com
About the Author
Joshua Bloch is chief Java architect at Google and a Jolt Award winner. He was previously a distinguished engineer at Sun Microsystems and a senior systems designer at Transarc. Bloch led the design and implementation of numerous Java platform features, including JDK 5.0 language enhancements and the award-winning Java Collections Framework. He coauthored Java&; Puzzlers (Addison-Wesley, 2005) and Java&; Concurrency in Practice (Addison-Wesley, 2006).
Excerpt. © Reprinted by permission. All rights reserved.
Preface to the Second Edition
A lot has happened to the Java platform since I wrote the first edition of this book in 2001, and it’s high time for a second edition. The most significant set of changes was the addition of generics, enum types, annotations, autoboxing, and the for-each loop in Java 5. A close second was the addition of the new concurrency library, java.util.concurrent, also released in Java 5. With Gilad Bracha, I had the good fortune to lead the teams that designed the new language features. I also had the good fortune to serve on the team that designed and developed the concurrency library, which was led by Doug Lea.
The other big change in the platform is the widespread adoption of modern Integrated Development Environments (IDEs), such as Eclipse, IntelliJ IDEA, and NetBeans, and of static analysis tools, such as FindBugs. While I have not been involved in these efforts, I’ve benefited from them immensely and learned how they affect the Java development experience.
In 2004, I moved from Sun to Google, but I’ve continued my involvement in the development of the Java platform over the past four years, contributing to the concurrency and collections APIs through the good offices of Google and the Java Community Process. I’ve also had the pleasure of using the Java platform to develop libraries for use within Google. Now I know what it feels like to be a user.
As was the case in 2001 when I wrote the first edition, my primary goal is to share my experience with you so that you can imitate my successes while avoiding my failures. The new material continues to make liberal use of real-world examples from the Java platform libraries.
The first edition succeeded beyond my wildest expectations, and I’ve done my best to stay true to its spirit while covering all of the new material that was required to bring the book up to date. It was inevitable that the book would grow, and grow it did, from fifty-seven items to seventy-eight. Not only did I add twenty-three items, but I thoroughly revised all the original material and retired a few items whose better days had passed. In the Appendix, you can see how the material in this edition relates to the material in the first edition.
In the Preface to the First Edition, I wrote that the Java programming language and its libraries were immensely conducive to quality and productivity, and a joy to work with. The changes in releases 5 and 6 have taken a good thing and made it better. The platform is much bigger now than it was in 2001 and more complex, but once you learn the patterns and idioms for using the new features, they make your programs better and your life easier. I hope this edition captures my continued enthusiasm for the platform and helps make your use of the platform and its new features more effective and enjoyable.
San Jose, California
April 2008
Product details
- Publisher : Addison-Wesley
- Publication date : May 28, 2008
- Edition : 2nd
- Language : English
- Print length : 346 pages
- ISBN-10 : 0321356683
- ISBN-13 : 978-0321356680
- Item Weight : 1.43 pounds
- Dimensions : 8.5 x 0.83 x 11 inches
- Best Sellers Rank: #1,354,584 in Books (See Top 100 in Books)
- #74 in Beginner's Guides to Java Programming
- #299 in Object-Oriented Design
- #4,261 in Computer Software (Books)
- Customer Reviews:
About the author

Joshua J. Bloch (born August 28, 1961) is a software engineer and a technology author, formerly employed at Sun Microsystems and Google. He led the design and implementation of numerous Java platform features, including the Java Collections Framework, the java.math package, and the assert mechanism. He is the author of the programming guide Effective Java (2001), which won the 2001 Jolt Award, and is a co-author of two other Java books, Java Puzzlers (2005) and Java Concurrency In Practice (2006).
Bloch holds a B.S. in computer science from Columbia University and a Ph.D. in computer science from Carnegie Mellon University. His 1990 thesis was titled A Practical Approach to Replication of Abstract Data Objects and was nominated for the ACM Distinguished Doctoral Dissertation Award.
Bloch has worked as a Senior Systems Designer at Transarc, and later as a Distinguished Engineer at Sun Microsystems. In June 2004 he left Sun and became Chief Java Architect at Google. On August 3, 2012, Bloch announced that he would be leaving Google.
In December 2004, Java Developer's Journal included Bloch in its list of the "Top 40 Software People in the World".
Bloch has proposed the extension of the Java programming language with two features: Concise Instance Creation Expressions (CICE) (coproposed with Bob Lee and Doug Lea) and Automatic Resource Management (ARM) blocks. The combination of CICE and ARM formed one of the three early proposals for adding support for closures to Java. ARM blocks were added to the language in JDK7.
Bloch is currently a faculty member of the Institute for Software Research at Carnegie Mellon University, where he holds the title "Professor of the Practice". In addition to his research, Bloch teaches coursework in Software Engineering.
Bio from Wikipedia, the free encyclopedia.
Related products with free delivery on eligible orders
Customer reviews
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on AmazonCustomers say
Generated from the text of customer reviewsSelect to learn more
Top reviews from the United States
- 5 out of 5 stars
The best general Java book I've read so far
Reviewed in the United States on September 5, 2008This book seems to be one of the most critically acclaimed Java titles. What could I possibly add to what has been said? The acclaim is fully deserved. I had the feeling that I already learned something new and important as soon as I reached page twenty. This is something that I cannot say of very many books. Effective Java manages to be extremely useful and simultaneously extremely easy to read. However, "easy" doesn't mean simple in this case, since many of the discussed problems are subtly complex. Some are so complex, in fact, that Java beginners might not fully understand or appreciate them. So, it's probably not a book for beginners. On the other hand, the book is neither esoteric. The 78 items are general Java programming issues which one is likely to encounter in everyday work at some point, regardless of any specific domain. The book is written in a clear and concise language and each problem is exceptionally well reasoned. The author has a very deep understanding of the Java language, which is rather apparent and no surprise, since Joshua Bloch is one of the architects of the Java platform. Incidentally, this also means that the problems are discussed from the perspective of an API designer rather than from the perspective of an application programmer. This is useful, because it is primarily concerned with creating robust and high quality interfaces. Architects, designers, and application programmers benefit likewise from this. The items discussed in this book can probably be described as design and implementation level rationales. They are grouped by Java categories, such as generics, enums, annotations, exceptions, serialisation, as well as by more general concepts, such as object creation, classes and interfaces, methods and concurrency. Many of the individual topics are related; therefore the author makes ample use of cross references, which is helpful for reference use. The included code examples are a joy to read; they are clear, concise, and always illustrative. While discussing the intricacies of the above named topics, Joshua Bloch casually introduces the reader to a good number of commonly used design patterns, many of which are illustrated with code examples. However, design patterns are not themselves formally discussed. The book equips Java programmers with an arsenal of relevant best practices, from comparatively simple things such as creating objects, implementing "equals()" and "hashCode()" methods to more advanced topics, such as concurrency, mutability, and thread safety. In doing so, Joshua Bloch points out quite a few quirks and peculiarities of the Java language, and he does not only point them out, but explains their practical consequences in detail. Thus, the book has great didactic value, as the reader will end up with a higher level of familiarity with the language. Reading this book is time well invested for any Java programmer.
3 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again - 5 out of 5 stars
yourJavaLevel++
Reviewed in the United States on December 23, 2013This book is one of the highest rated Java books in existence. The main reason that I chose to read this book is because one of my colleagues highly recommended it. Needless to say, I have to jump on the bandwagon and join in with all of the hoopla and praise that’s associated with this book. It is simply fantastic on several latitudes. This includes but is not limited to the scope, depth, and writing style of this piece of work . The concepts are presented in bite-sized items which often cross reference one another. These chunks are then grouped into chapters for broader topics such as “Generics”, “Exceptions” and “Enums and Annotations” just to name a few. All items are presented in a practical manner that will help real developers on the job immediately. You’ll go to work the next day and be able to quickly identify code that should be improved by applying the principles in this book. Included code samples are clear, concise and contain comments that highlight the relevant parts of the code. Every item is gold and the constant supply will have you reading it from cover to cover with little interruption.
It should be of no surprise that this book is not for beginners. In fact, I would argue that it’s targeted to advanced Java developers looking to obtain “Expert” status. (“Guru” status come after one reads both the Java and JVM specifications in their entirety and grow a worthy beard). If you’re a curious Java developer looking for some of the more interesting aspects of the language or a Java veteran determined to take your understanding to the next level, Effective Java is the book you need to have.
2 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again - 5 out of 5 stars
A student's perspective: New insights on every page
Reviewed in the United States on February 28, 2009I am thoroughly enjoying this book and learning a lot in the process. The author is responsible for many of the successful APIs in the Java language, such as the Collections framework, so he certainly knows what he is talking about.
I am still a student but I can relate to some of the things he talks about, and see where I have deviated from his suggestions in the past. The author is clear to point out why these things are problems in terms of either code reuse, extensibility, type safety, or some other aspect, so even though it wasn't necessarily an issue in the context of a school project, in the real world it certainly might be.
The author borrows the format from Scott Meyer's Effective C++ series of books, and it works very well in this context. While the chapters are logically organized, they are set up in such a way that you do not need to read from start to finish; you can jump around and read the interesting bits at will, and often items in one section of the book refer to later (or earlier) items.
Finally, I appreciate that the book explains some of the less well known or understood features of recent versions of Java. For instance, I had never heard of the annotation feature added, but he goes on to show a great example of how you can use annotations to build a simple test framework for a class.
Even if you are not yet a software professional, you owe it to yourself to get a jump start by reading this book.
6 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again - 5 out of 5 stars
Very deep, very heavy on the mind and very good
Reviewed in the United States on March 29, 2013I'll start this review telling you what this book is not:
- This is not a cookbook. You will not find template solutions to regular programming problems here.
- This is not a "fun" book. This is not like the Head First books where they have lots of funny stuff to keep you entertained.
- This is not a book for beginners. If you are just starting to learn programming, this will only leave your mind in a very confused state.
- This is not "just a Java book". Although most of the topics described in this book are tightly related to Java's mechanics and implementation details, it has a lot of great teachings that are language agnostic.
That being said, this book is a very deep analysis on many diverse topics, most of them centered on Java's mechanics, language features and most prominent flaws. You can expect, for example, lost of pages explaining how to correctly implement a serializable class or how to clone an object correctly. But you will not only get answers here. Most topics include a very throughout explanation on the logic behind the solutions and the potential pitfalls and risks of failing to follow the suggestions described and even counter-intuitive problems derived from design flaws in the Java language.
I will admit that many of the topics of the books have no practical use unless you have to implement a low level solution from scratch or you are working on a very important project where a design flaw might cause catastrophic failure. Still, I guarantee that anyone who reads this book will find something useful.
2 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again - 5 out of 5 stars
A must have for every professional
Reviewed in the United States on November 15, 2011I can honestly say that this book has improved my programming skill tremendously. It is divided to short items, each one packs a powerful wisdom. My boss at the startup I was working at gave me his copy and I read just one item each morning before starting my day, now almost 3 years later I bought my own copy and I'm reading it again. it's amazing that I can still learn in the 2nd read, now that I have more experience.
Josh Bloch is just amazing, there are a lot of Java books out there, except this one was written by the same guy who designed and wrote most of the standard library.
If you apply Bloch's lessons, your code will be cleaner, safer, more readable, efficient and will lead to fewer bugs. guaranteed.
The book is well written, explained using solid engineering concepts which you can pass on to your teammates,
and covers a wide range of topics which anyone can benefit from.
I recommended this book to all of my engineer friends, and they all have it now and love it.
A must have in every Java developer's belt.
2 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again - 4 out of 5 stars
Great tips. For Java devs who want to be better Java devs
Reviewed in the United States on January 2, 2015Very good book covering topics of core importance but much beyond the basics. Format could be a little more clear. It kinda reads like a story not a reference, however the information is very good. This is not the type of book that fills pages with reprints of javadocs or elaborates upon basic concepts with dumb examples exhaustively typed out. It is suited to the person who can already develop code at a professional level looking to become more effective with the Java language. These are the types of things developers share with each other during code reviews. I found myself incorporating ideas from the book into my coding style almost immediately. The information is useful and worth knowing. Great for anyone mid-level and up.
2 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again - 5 out of 5 stars
The Correct Way To Write Java
Reviewed in the United States on May 17, 2016This is the book I wish I had when I was working as a Java programmer. Bloch gives 78 ways to write idiomatic Java code, and the book is written in the Scott Myers style where each item can stand on its own.
I liked that the author made definitive statements about which style is best, and explains why. For example Item 16, "Favor composition over inheritance" describes how inheritance can violate encapsulation and why it leads to fragile software. First we are shown an example using inheritance that is broken, a way to rewrite it using composition, and followed by a concluding explanation.
The author highlights key points in bold text; this was a helpful way to see the critical points being made. Many statements are well sourced as the References section in the back contains upwards of 40 books.
I read some other reviews of this book which said they thought the author was too authoritative with his opinion. I actually found this to be the strong suit of the book, in that the author states his design preference, why it is best, shows examples, and the sources his information. He knows the material and the language very well. I have yet to read a better Java design book so far.
10 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again - 5 out of 5 stars
Must have for all Hard Core Java developers
Reviewed in the United States on May 18, 2011Wish all books were like this - OR - rather - All programming languages had a book like this.
This is not a basic / novice level book - but assumes that the reader has already used Java for a number of years.
It is best to read this book slowly absorbing the thoughts / concepts and what the author is conveying. Some of the things could be subtle but - if they are tried out - after reading each article it makes more sense.
The author had written a lot of the core Java libraries while at SUN - and you can see his name in the source files in the JDK. The author has complete clear and crisp understanding of the concepts and lucidly explains the points - with clear small and right examples.
I used to read this book - 1 article a day and then try out the concepts conveyed in the article.
I had read the 1st edition of the book long time back - and it clearly - imprinted in my mind - why hash() function needs to be written and the deficiencies of a bad hash function.
This new edition includes all the new features of the language as incorporated in Java 1.5 other than the concurrency related classes.
Only deficiency of the book, I do wish - it had some more articles about the Concurrency related libraries that were introduced in Java 1.5.
Anyone who would like to know more about the internals of Java - should purchase this book and read it
2 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again
Top reviews from other countries
Marco S5 out of 5 starsLa Bibbia di ogni sviluppatore Java
Reviewed in Italy on June 2, 2012Una raccolta di item ben organizzata, precisa e ben scritta riguardante un buon numero di problemi che lo sviluppatore Java si ritrova ad affrontare quotidianamente e le relative "best practices" per risolverli al meglio, scritta da uno dei maggiori Guru del linguaggio al mondo.
Suggerimenti a tutto campo, dall'organizzazione di classi e interfacce, pattern, generics, concorrenza e serializzazione: leggendo questo libro si impara molto più di quello che i tutorial Sun o un qualsiasi corso universitario possono insegnare su Java. Insomma: un must-have per tutti coloro che vogliono approfondire l'uso di questo stupendo linguaggio, anche per quelli che credono di sapere già tutto!
Sending feedback...Thanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again
Oliver Kolle5 out of 5 starsSehr guter, aber teilweise schwerer Stoff
Reviewed in Germany on November 19, 2021Ich spreche für die 2. Edition. Berechtigterweise erscheint das Buch stets in "Java books you must read"-Listen. Es kennt die grundlegenden Neuerungen von Java 5. (Erst die 3. Edition kennt die weitreichenden Spracherweiterungen, die mit Java 8 kamen)
Das Buch behandelt eigentlich nur die Grundlagen der Sprache und nebenbei einige Patterns, geht dabei aber mehr in die Tiefe als man das von normalen Lehrbüchern gewohnt ist. Daher ist das Buch nichts für Anfänger oder Leute mit nur etwas Java-Erfahrung. Die Texte verwenden teils anspruchsvolles Englisch. Oft schafft es der Autor mit minimalen Code-Beispielen maximale Verwirrung beim Leser zu stiften. Zum Teil musste ich mich (z.B. Kapitel zu Concurrency und Serialization) durchquälen.
Fazit: Im Buch stehen viele nützliche, empfehlenswerte Sachen, die allerdings durch wiederholtes Lesen und eventuell zusätzliches Nachprogrammieren erarbeitet werden müssen.
Sending feedback...Thanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again
Sam5 out of 5 starsGreat book!
Reviewed in the United Kingdom on December 1, 2012This book has to be one of the best Java books written, the author explains aspects in such great detail that it changes the way you think about programming in Java. Though I would not recommend this book to someone who is new to Java or new to Programming, simply because the book is written assuming you have somewhat good knowledge of Java and understand enough Java programming that you can create programs yourself and I would also not recommend this book to someone looking for information on specific aspects of Java, instead this book simply increases your current knowledge by explaining how things work and how to improve the way you used them.
Sending feedback...Thanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again
Alejandro Cámara5 out of 5 starsPerfecto para aprender las "frases hechas" del lenguaje Java
Reviewed in Spain on February 14, 2013El libro trata temas avanzados de Java. No es un libro para aprender la sintaxis o gramática de Java, si no el equivalente a sus frases hechas. Se compone de "items" que abordan diferentes situaciones donde ya existen soluciones bien establecidas. Cada solución se presenta con muchos ejemplos de código.
El libro está bien escrito y bien estructuado. Es de gran utilidad para los que quieren pasar de escribir código Java correcto a código Java eficiente.
Sending feedback...Thanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again
JulienZ5 out of 5 starsExcellent
Reviewed in France on November 19, 2010Ce livre s'adresse aux personnes maitrisant les bases de JAVA (une connaissance du langage, des API de base et des patterns les plus courants, est indispensable). Il donne beaucoup d'astuces permettant de rendre son code plus lisible, plus réutilisable, et surtout plus performant.
En bref, ce livre est un condensé de bonne pratique, dont chaque développeur JAVA intermédiaire ou avancé devrait être conscient.
Je ne suis vraiment pas déçu de mon achat et je le recommande donc fortement.
Sending feedback...Thanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again













