Effective Java(TM) Programming Language Guide (2nd Edition) (The Java Series)
| |||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||
| 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:
|
|||||||||||||||||||||||||||||
| 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) |
| 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) |
| 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) |
| 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 |
| 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) |
| 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) |
| 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 |
| 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) |
| 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 But by using a static factory method you can do: List 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 |
| 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) |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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) |
| 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) |
| 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) |
| 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 | |||||||||||||||||||||||||||||
| 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 | |