Effective Java(TM) Programming Language Guide (2nd Edition) (The Java Series)

  Author:    Joshua Bloch
  ISBN:    0321356683
  Sales Rank:    918
  Published:    2007-11-30
  Publisher:    Prentice Hall PTR
  # Pages:    256
  Binding:    Paperback
  Avg. Rating:    5.0 based on 15 reviews
  Used Offers:    39 from $36.85
  Amazon Price:    $41.56
  (Data above last updated:  2008-09-06 06:14:20 EST)
  
  
Sort customer reviews by:
  
Show All Reviews on Page      Hide All Reviews on Page
   
  
Effective Java(TM) Programming Language Guide (2nd Edition) (The Java Series)
  
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)
                  Reader Reviews 1 - 18 of 18                 
  
  
Review
Date
Review
Rating(5 High)
Review
Helpful
to:
Customer Review Reviewer
Info
Permanent
Link
Reader Reviews Below Sorted by Newest First
09-05-08 5 (NA)
(Hide Review...)  The best general Java book I've read so far
Reviewer Permalink
This 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.
(Review Data Last Updated: 2008-09-06 05:15:42 EST)
08-17-08 5 (NA)
(Hide Review...)  A 'must' for any serious computer programmer's library
Reviewer Permalink
The first edition of EFFECTIVE JAVA offers Java programmers a deeper understanding of Java's language than the casual beginner's book, offering tips on how to write code that is clearer, more correct, and more reusable. Over seventy programmer rules of thumb are contained in a new edition exploring design patterns, language idioms, and generics, along with updated techniques on common topics and avoiding common pitfalls of language. The second edition expands upon concepts so popular in the first and is a 'must' for any serious computer programmer's library.

Diane C. Donovan
California Bookwatch
(Review Data Last Updated: 2008-09-05 05:18:38 EST)
08-12-08 5 (NA)
(Hide Review...)  One of the best books ever
Reviewer Permalink
This is considered one of the best java books ever, since the first edition. Now it is revised and updated to the new Java 5 and 6 features. Worth every penny that you pay for it!
(Review Data Last Updated: 2008-08-18 00:31:29 EST)
08-12-08 5 1\1
(Hide Review...)  Taught this old dog new tricks
Reviewer Permalink
I've been programming Java since 1995 and sometimes think I know everything I need to know about working with the language. Sometimes it takes a book like "Effective Java" make you realize there's always more to learn.

This book is packed with incredibly useful information that every single Java developer should know. The best part is that Bloch is not proposing any kind of radical new programming method. He is simply organizing and presenting tried and true Java programming patterns and disciplines.

I can't count how many times I've said, "Of course, it is so obvious! Why didn't I think of that?" when I was reading this book. The items presented are things you may know, or half-know, and all it takes is the proper presentation and explanation to completely "ice" things in your mind. The best part is starting a new project after reading "Effective Java" and getting to try out all the good stuff in your own code.

I bought the First Edition seven years ago and am so happy the Second Edition is finally here. It is well worth the wait. If you develop in Java in any capacity -- get this book!
(Review Data Last Updated: 2008-08-18 00:31:29 EST)
07-31-08 5 (NA)
(Hide Review...)  One of the best Java books
Reviewer Permalink
This book is simply amazing. Gives you tons of good advices, recomendations and more to improve your java design and code. I use this book as reference one, when I need to develop something, first read related chapters of this book and then write code.

Only one drawback, there are few code. Wil be better to have more code examples related with some topics.
(Review Data Last Updated: 2008-08-13 00:30:37 EST)
07-24-08 5 (NA)
(Hide Review...)  The best book for experienced Java programmers
Reviewer Permalink
You may think you don't need any books after you've learned a language. Usually, that is true - but this book is one of the few that will benefit even experienced programmers. It provides usage guidelines that go well beyond style or obvious things and will help you build systems that are flexible, maintainable, and perform well. The second edition is updated for Java 6 so you get advice on the best practices for using generics, enums, and annotations. This is a great either as a refresher course or to learn new things for anyone who wants to be a great Java programmer.
(Review Data Last Updated: 2008-08-01 00:30:27 EST)
07-17-08 4 0\3
(Hide Review...)  Good references and tips
Reviewer Permalink
Para quien ya sabe Java es un excelente guia de como hacer mejor las cosas y porque es mejor hacer unas y no otras, aśn estoy a la mitad pero ya lo recomiendo.
(Review Data Last Updated: 2008-07-25 00:31:35 EST)
07-01-08 5 (NA)
(Hide Review...)  Simply a great book!
Reviewer Permalink
Effective Java, Second Edition by Joshua Bloch is certainly the best Java book I have read in a long time. As a disclaimer, I never read the first edition and I am thus unable to compare the two editions. Effective Java, Second Edition is a mostly easy and fun read providing you with many insights and best practices on how to use Java effectively. It certainly is not a book for the beginner just starting out learning Java. For that purpose you may want to take a look at Thinking in Java by Bruce Eckel instead. Nevertheless, Effective Java would serve as an excellent follow-up.

In Effective Java, Joshua Bloch does a great job describing best practices that you as developer will find useful on a daily basis. For example, I really found his description of the builder pattern (Item 2, page 11) quite interesting. Another Item that fascinated me, was Item 15 (page 73) - "Minimize mutability". Both items are part of a broader theme throughout the book that promotes creating code that is as immutable as possible. In that regard, reading the book will enable you to simply write better and safer code. The book also leads the way towards promoting functional programming techniques which will come in quite handily when developing multithreaded applications. Therefore, as a next book I may recommend reading Java Concurrency in Practice by Brian Goetz.

Even for the experienced Java developer, Effective Java contains quite a few little eye openers. I for example was previously unaware of how static factory methods can simplify the creation of parameterized type instances using "type inference". This is described on page 9 (Item 1). In the past I had always used something like this:

List users = new ArrayList();

But by using a static factory method you can do:

List users = Helper.newArrayList();

I thought that this was a pretty nifty example that may help making code a bit cleaner. What I also very much liked about Effective Java was that Joshua points out certain short-comings of the Java language itself and its APIs whenever applicable. For example, page 64 describes the inconsistent behavior between BigDecimal's 'equals' method and its 'compareTo' method, and in item 41 (page 194) Joshua details the shortcomings of the List interface when using Autoboxing.

While the vast majority of the book was very easy to read and to understand, I found that the chapter about bounded wildcards using generics (item 28) was a little difficult to grasp and I wished it were a bit more extensive. On the other side, the provided mnemonic is quite helpful: PECS - Producer-extends, Consumer-super.

Overall, I highly recommend Effective Java, Second Edition which will continue to serve me, and likely you too, as an excellent reference resource.
(Review Data Last Updated: 2008-07-17 16:43:33 EST)
06-20-08 4 1\2
(Hide Review...)  Effective Java Review
Reviewer Permalink
I like the code examples. Even though I have been a java developer for 5-6 years, there were things I really wouldn't have known if not for this book. The writing style is clear and easy to understand. I keep referring to this book for my day to day work at my job.
(Review Data Last Updated: 2008-07-01 16:30:09 EST)
06-20-08 5 (NA)
(Hide Review...)  Worthwhile
Reviewer Permalink
This book is actually fun to read. It is well written and the concepts are illuminating and interesting. Definitely a notch above the average java books that come out. Highly recommended.
(Review Data Last Updated: 2008-07-01 16:30:09 EST)
06-12-08 5 1\1
(Hide Review...)  it managed to get better
Reviewer Permalink
The second edition of "Effective Java" is almost like a completely different book from the first. There were new chapters addressing Java 5 topics such as generics, enums and autoboxing. Existing patterns were rewritten for Java 5/6 - both conceptually and for the code examples. For example, overloading now address varargs. The number of items grew from 57 to 78 as well and the author removed the old ones that are obsolete.

As a reference, chapter one provided a table to quickly find items on Java 5. The appendix provided a cross mapping to find items from the first edition in this copy.

For those new to "Effective Java", it is meant for intermediate to advanced Java developers. It provides best practices, recipes and idioms for working with Java. The author is good about listing both advantages and disadvantages to choose when to apply a tip.

When thinking about my favorite chapter, I have trouble picking just one. I'm torn between the concurrency and enum chapters. The book goes beyond the common "use enums over constants" and goes into things like EnumBitSets.

I learned a lot reading the first edition of this book and learned just as much reading the second. If you have the first edition, but this one anyway. And if you haven't read the first edition, get your hands on the latest copy!
(Review Data Last Updated: 2008-06-20 04:46:34 EST)
05-27-08 5 1\2
(Hide Review...)  Simply Brilliant
Reviewer Permalink
I had been waiting for the second edition for almost a year and finally it's in my hand. I must say that all the wait was worth it since Josh has done an amazing job once again. If you are a java programmer this is a MUST have book. If you can only afford to buy one and only one java book, you should buy this book and you won't regret your decision. Thank you Joshua Bloch for teaching me how to write better code on a day to day basis.
(Review Data Last Updated: 2008-06-12 00:29:13 EST)
05-21-08 5 2\2
(Hide Review...)  A must read book
Reviewer Permalink
If you are not too busy at work it probably worth stop writing code till you finish reading this book.
Seriously.

BTW Don't be tempted to save a little money and buy a first edition.
Second edition has some very important changes and new information.
(Review Data Last Updated: 2008-05-28 00:30:41 EST)
05-20-08 5 2\2
(Hide Review...)  A must read for every Java developer
Reviewer Permalink
I have read this book multiple times. Each time I reread the book I learn something new. The second edition has many new strategies that I will directly apply in my work as a Java developer. Thanks Joshua!
(Review Data Last Updated: 2008-05-28 00:30:41 EST)
05-16-08 5 3\3
(Hide Review...)  A powerful update to an already-classic title
Reviewer Permalink
Please see my review of the first edition for my general response. My opinion hasn't changed with the second, so I'll focus on what's new in this review.

The second edition was well worth the wait. The number of items are beefed up to 78 from 57. The chapter "Substitutes for C Constructs" is gone, but replaced by more contemporary material on "Generics" and "Enums and Annotations." Some first edition items have been amended to address features new to Java since the first edition was released. Some new items also address concurrency, favoring it over traditional Java threads. As expected, the cases for each item are methodically and persuaisvely made. If you are particularly interested in concurrency, also consider Java Concurrency in Practice.

The item discussions use boldface liberally to highlight key points, sometimes calling attention to arguments in the first edition that have been updated. If you're skimming -- the author in fact doesn't encourage cover-to-cover reading -- these highlights are useful attractors to important material you might otherwise gloss.

It's often helpful to have practices or insights you've earned on your own backed up by a reputable authority. Effective Java certainly helps with that. More importantly, the arguments that support his items are clear, easy to read, and compelling. Anyone proficient with Java would have to go a long way to find fault with them. In fact, it took considerable investigation to determine that one item from the first edition -- "Provide a readResolve method when necessary" -- was not the best advice for some cases. Bloch addresses that issue head-on in this edition, and provides its replacement ("For instance control, prefer enum types to readResolve").

As with the first edition, this one is a necessity for any serious Java developer.
(Review Data Last Updated: 2008-05-21 00:31:01 EST)
03-26-08 5 (NA)
(Hide Review...)  Great Guide
Reviewer Permalink
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. This book is going to be a staple in my programming library and a book recommended to anyone I know working with Java. I am also looking forward to the second edition which is slated to be released in May sometime.
(Review Data Last Updated: 2008-05-16 05:39:46 EST)
03-25-08 5 (NA)
(Hide Review...)  Indispensable...
Reviewer Permalink
An indispensable, insightful, and well written Java book to add to your reference library. The second addition is due out May 25, 2008.
(Review Data Last Updated: 2008-05-16 05:39:46 EST)
09-30-07 5 (NA)
(Hide Review...)  Thing of Beauty is Joy Forever ...
Reviewer Permalink
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 student of art of programming in general.

I have started this effort of creating a distilled version of this book coupled with my own reflections at: [...]. To any curious reader though, any such effort is not a replacement for the book itself. It is a masterpiece.

- Kedar Mhaswade
(Review Data Last Updated: 2007-11-28 12:47:04 EST)
  
                  Reader Reviews 1 - 18 of 18                 
  
  
  
  
  
  

Because the data used to generate this site come from outside sources, VeryWellSaid.com cannot guarantee the completeness or accuracy of the data.
Search VeryWellSaid™
Google
Web VeryWellSaid™
New subjects are added every week.
View Subjects Below by:
* Top Selling
 (click category name, left)
* Top-Rated Top Sellers
 (click 'Top Rated', right)
In the news...  
Dubai\UAE Top Rated
Influenza\Bird Flu Top Rated
Iraq Top Rated
Supreme Court Top Rated
All Books Top Rated
Arts Top Rated
Photography Top Rated
Digital Photography Top Rated
Digital Cameras Top Rated
Biography Top Rated
Business Top Rated
Management Top Rated
Marketing Top Rated
Sales Top Rated
Stocks Top Rated
Bonds Top Rated
Real Estate Top Rated
Trading Top Rated
Commodities Trading Top Rated
Time Management Top Rated
Starting A Business Top Rated
Children's Top Rated
Comics Top Rated
Computers Top Rated
PC Top Rated
Mac Top Rated
Programming Top Rated
Design Patterns Top Rated
.Net Top Rated
C# Top Rated
Vb.Net Top Rated
Asp.Net Top Rated
Java Top Rated
Python Top Rated
PHP Top Rated
Perl Top Rated
Javascript Top Rated
Ajax Top Rated
CSS Top Rated
Open Source Top Rated
SQL Top Rated
Databases Top Rated
Oracle Top Rated
MySql Top Rated
Sql Server Top Rated
IIS Top Rated
Apache Top Rated
Linux Top Rated
Windows Server Top Rated
Project Management Top Rated
HTML Top Rated
UML Top Rated
IT Certifications Top Rated
Cisco Certifications Top Rated
MCSE Top Rated
MCSD Top Rated
Cooking Top Rated
Italian Cooking Top Rated
Vegetarian Cooking Top Rated
Wine Top Rated
Engineering Top Rated
Entertainment Top Rated
Health Top Rated
Nutrition Top Rated
Dieting Top Rated
Sex Top Rated
History Top Rated
Military History Top Rated
British History Top Rated
Middle East History Top Rated
Land Battles Top Rated
Naval Warfare Top Rated
Air Warfare Top Rated
9/11 Top Rated
Terrorism Top Rated
Home Top Rated
Mortgage\Home Equity Loan Top Rated
Cars Top Rated
Car Buying Top Rated
Sports Cars Top Rated
Cat Top Rated
Humor Top Rated
Horror Top Rated
Law Top Rated
IP Law Top Rated
Legal History Top Rated
Fiction Top Rated
Oprah's Book Club Top Rated
Medicine Top Rated
Cancer Top Rated
Stroke Top Rated
Heart Disease Top Rated
Fertility Top Rated
Diabetes Top Rated
Pharmacology Top Rated
Back Problems Top Rated
Menopause Top Rated
Thyroid Top Rated
Pain Top Rated
Organic Chemistry Top Rated
Immune System Top Rated
Mystery Top Rated
Nonfiction Top Rated
Outdoors Top Rated
Running Top Rated
Radio Control Models Top Rated
Guns Top Rated
Parenting Top Rated
Divorce Top Rated
Professional Top Rated
Reference Top Rated
Religion Top Rated
Romance Top Rated
Science Top Rated
Physics Top Rated
Chemistry Top Rated
Astronomy Top Rated
Psychology Top Rated
Science Fiction Top Rated
Sports Top Rated
Teens Top Rated
Travel Top Rated
USA Top Rated
Europe Top Rated
France Top Rated
Italy Top Rated
England Top Rated
China Top Rated
All Books Arts Biography Click Here For An A-Z Index Of All 213 Best-Seller Subjects Business Children's Comics
Computers Cooking Engineering Entertainment Health History Home Horror Humor Law Fiction Medicine Mystery
Nonfiction Outdoors Parenting Professional Reference Religion Romance Science Sci-Fi Sports Teens Travel
In Association with Amazon.com

Cache miss
(not cached)