- Pub. Date:
- Pub. Date:
Each chapter of Effective Java, Third Edition, consists of several “items,” each presented in the form of a short, stand-alone essay that provides specific advice, insight into Java platform subtleties, and code examples. The comprehensive descriptions and explanations for each item illuminate what to do, what not to do, and why. While coverage is through Java 9, this guidance covers core Java features every programmer works with, regardless of which version.
- Concurrency: write clear, correct, well-documented concurrent programs
- Objects: creating and destroying; common methods
- Classes and interfaces: guidelines for making them usable, robust, and flexible
- Generics: tell the compiler what types of objects are permitted in each collection for safer and clearer programs
- Enums and annotations: two special-purpose families of reference types
- Functions: break a big job into smaller pieces that might well be written by different people separated by both time and space.
- Lambdas and streams: create function objects with more ease
- Method designs: treat parameters and return values; design method signatures; document methods
- Exceptions: improve a program’s readability, reliability, and maintainability
- Object serialization: the dangers of serialization and how to minimize them
- General programming:
- local variables
- control structures
- data types
- native methods
- naming conventions
Programmers still consider this the best book on Java programming today.
|Edition description:||New Edition|
|Product dimensions:||5.80(w) x 8.80(h) x 0.40(d)|
About the Author
Table of Contents
- Chapter 1: Introduction
- Chapter 2: Creating and Destroying Objects
- Chapter 3: Methods Common to All Objects
- Chapter 4: Classes and Interfaces
- Chapter 5: Generics
- Chapter 6: Enums and Annotations
- Chapter 7: Lambdas and Streams
- Chapter 8: Methods
- Chapter 9: General Programming
- Chapter 10: Exceptions
- Chapter 11: Concurrency
- Chapter 12: Serialization
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