Start reading Effective Java Programming Language Guide on your Kindle in under a minute. Don't have a Kindle? Get your Kindle here.

Deliver to your Kindle or other device

 
 
 

Try it free

Sample the beginning of this book for free

Deliver to your Kindle or other device

Read books on your computer or other mobile devices with our FREE Kindle Reading Apps.
Effective Java Programming Language Guide
 
 

Effective Java Programming Language Guide [Kindle Edition]

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

Digital List Price: $49.99 What's this?
Print List Price: $54.99
Kindle Price: $28.21 includes free wireless delivery via Amazon Whispernet
You Save: $26.78 (49%)

Formats

Amazon Price New from Used from
Kindle Edition $28.21  
Paperback --  


Editorial Reviews

Amazon.com 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)

Product Description

This is the eBook version of the printed book.

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


Product Details

  • Format: Kindle Edition
  • File Size: 533 KB
  • Print Length: 272 pages
  • Simultaneous Device Usage: Up to 5 simultaneous devices, per publisher limits
  • Publisher: Prentice Hall; 1 edition (October 9, 2007)
  • Sold by: Amazon Digital Services
  • Language: English
  • ASIN: B000OZ0N5I
  • Text-to-Speech: Enabled
  • Average Customer Review: 4.9 out of 5 stars  See all reviews (121 customer reviews)
  • Amazon Best Sellers Rank: #227,659 Paid in Kindle Store (See Top 100 Paid in Kindle Store)
  •  Would you like to give feedback on images?


 

Customer Reviews

121 Reviews
5 star:
 (111)
4 star:
 (5)
3 star:
 (3)
2 star:
 (2)
1 star:    (0)
 
 
 
 
 
Average Customer Review
4.9 out of 5 stars (121 customer reviews)
 
 
 
 
Share your thoughts with other customers:
Most Helpful Customer Reviews

192 of 195 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
By 
Amazon Verified Purchase(What's this?)
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.

The other caveat is that this book is written from the perspective of writing public APIs. Bloch is the lead architect for the core JDK APIs where the classes and APIs have special security considerations. Several pieces of advice he gives apply absolutely to a public API where you want to defend the API from malicious code. However, if the code you are creating is intended for a less hostile and more trusting environment, fully following all of his advice will result in unnecessarily complex code. The one knock I give to the book is that Bloch does not delineate the circumstances that would dictate following his rather rigorous approach to bullet-proofing an API and can leave the reader with the mistaken perception that the advice applies equally to all categories of code.

Overall, this is absolutely a must-have book for the experienced Java programmer. Even if you are not yet an advanced Java programmer, buy this book and keep revisiting it as you advance until everything in the book makes sense to you.

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


30 of 30 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.

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


23 of 23 people found the following review helpful:
5.0 out of 5 stars Brilliant, succinct and highly professional, May 2, 2002
By 
Goldin Evgeny (Tel-Aviv, Israel) - See all my reviews
(REAL NAME)   
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() ?)

Amazingly - this book contains tons of essential information but Joshua's
succinct style simple put it into 230 pages and 57 items. I don't think there's
any sentence or chapter you may ignore - every word author says worths remembering
very good and very carefully. I read it once but I'm definitely going to re-read
it once in a while.

If you need other proofs - just believe me that most of the Java articles on
JavaWorld and JDC reference this book in that or another way. If James Gosling is
saying "Some might think that I don't need any Java books, but I need this one",
doesn't it mean that you and me definitely need it too ?
I wish I could give it 6 starts, really.

Happy reading !

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No

Share your thoughts with other customers: Create your own review
 
 
 
Most Recent Customer Reviews











Only search this product's reviews



More About the Author

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

What Other Items Do Customers Buy After Viewing This Item?


Popular Highlights

 (What's this?)
&quote;
A second advantage of static factory methods is that, unlike constructors, they are not required to create a new object each time they're invoked. &quote;
Highlighted by 5 Kindle users
&quote;
The main disadvantage of static factory methods is that classes without public or protected constructors cannot be subclassed. &quote;
Highlighted by 4 Kindle users
&quote;
A third advantage of static factory methods is that, unlike constructors, they can return an object of any subtype of their return type. &quote;
Highlighted by 4 Kindle users

Tags Customers Associate with This Product

 (What's this?)
Click on a tag to find related items, discussions, and people.
 
(1)

Your tags: Add your first tag
 

Customer Discussions

This product's forum
Discussion Replies Latest Post
Will it ever be released? 9 Jun 1, 2008
vs headfirst 2 Nov 13, 2007
Welcome to the Effective Java Programming forum 0 Nov 3, 2005
See all 3 discussions...  
Start a new discussion
Topic:
First post:
Prompts for sign-in
 


Active discussions in related forums
Search Customer Discussions
   
Related forums


So You'd Like to...


Create a guide

Look for Similar Items by Category


Look for Similar Items by Subject