Share E-Book
Scan to open this page

Scan with your phone to open this page

AuthorJoshua Bloch

"An excellent book, crammed with good advice on using the Java™ programming language and object-oriented programming in general."—Gilad Bracha, Computational Theologist, Sun Microsystems, Inc., and co-author of The Java™ Language Specification, Second 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., and inventor of the Java™ programming language Are you looking for a concise book packed with insight and wisdom not found elsewhere? Need to really understand the Java programming language; that is, really understand it? Do you want to write code that is clear, correct, robust, and reusable? Look no further! The book you are holding will provide you with this and many other benefits you may not even know you were looking for. Become a more effective programmer. Featuring fifty-seven valuable rules of thumb, Effective Java™ Programming Language Guide contains working solutions to the programming challenges most developers encounter every day. Offering comprehensive descriptions of techniques used by the experts who developed the Java platform, the book reveals what to do—and what not to do—in order to produce clear, robust, and efficient code. Each rule appears in the form of a short, stand-alone essay offering insight, code examples, and "war stories" from this uniquely qualified author. The essays include specific advice and insights into the subtleties of the language and are illustrated with exceptional code examples. Throughout the book, common language idioms and design patterns are examined and insightful and enlightening tips and techniques are provided. Coverage includes: • Customary and effective language usage that is saturated with expert advice in a concise, readable, and easy-to-access format. • Patterns, antipatterns, and idioms to help you get the most out of the Java platform. • Commonly misunderstood subtleties of

AI Reading Assistant

Whole-book reading guide from stratified index samples; jump to passages in the text

AI guide
# Effective Java Programming Language Guide ## 【One-Line Pitch】 A timeless collection of 57 practical rules for writing clear, correct, robust, and reusable Java code, distilled from Joshua Bloch's experience as a Java platform architect at Sun Microsystems. Essential reading for intermediate-to-advanced Java developers who want to move beyond syntax and master the idioms, patterns, and pitfalls that separate competent code from exceptional code. ## 【Book Arc】 - **Opening (~0%–11%)**: Introduces the book's purpose and structure—57 standalone "items" organized into nine chapters covering object creation, methods, general programming, exceptions, threads, and serialization. The preface establishes Bloch's authority as a Java platform libraries architect and his goal of sharing hard-won lessons from designing real-world APIs. - **Early (~11%–19%)**: Covers foundational object-oriented practices: static factory methods versus constructors, singleton enforcement, and the critical distinction between composition and inheritance. This section establishes the book's core philosophy—designing for clarity, robustness, and maintainability rather than mere functionality. - **Early (~19%–33%)**: Moves into method design and general programming principles: parameter validation, defensive copying, proper use of overloading, and the importance of documentation. The introduction emphasizes that the book is not about performance but about writing code that is clear, correct, and flexible—performance follows naturally from good design. - **Middle (~33%–44%)**: Addresses exceptions and threading—using exceptions only for exceptional conditions, distinguishing checked from runtime exceptions, synchronizing access to shared mutable data, and avoiding dependence on the thread scheduler. These items tackle the subtleties that most commonly trip up experienced developers. - **Late (~44%–56%)**: Covers serialization and advanced topics: implementing Serializable judiciously, writing defensive readObject methods, and providing readResolve when necessary. The book concludes with references and an index of patterns and idioms, reinforcing its role as a reference to be consulted item-by-item rather than read cover-to-cover. ## 【Key Takeaways】 - **Static factory methods often beat constructors** (Early): They have names, can return subtypes, and allow instance control—but require private constructors and may be overlooked by users. This trade-off shapes how you design object creation APIs. - **Composition over inheritance is a core principle** (Early): Inheritance breaks encapsulation when the superclass changes; favor composition and forwarding for cross-package reuse. This single rule prevents countless maintenance headaches. - **Check parameters and make defensive copies** (Early): Validate inputs early and copy mutable parameters before storing them to protect your class's invariants. Errors should be detected as soon as possible, ideally at compile time. - **Use exceptions only for exceptional conditions** (Middle): Don't use exceptions for ordinary control flow; prefer checked exceptions for recoverable conditions and runtime exceptions for programming errors. This keeps code readable and predictable. - **Synchronize access to shared mutable data** (Middle): Without synchronization, changes may not be visible across threads; but avoid excessive synchronization, which can degrade performance and cause deadlocks. Thread safety must be documented explicitly. - **Know and use the libraries** (Early): The Java platform libraries contain battle-tested solutions; don't reinvent them. This item exemplifies the book's broader theme—leverage expert experience rather than learning by trial and error. - **Design APIs with the user in mind** (Middle): Think in terms of exported APIs even for internal code; well-designed APIs make refactoring and code reuse possible. The book's focus on API design serves agile methodologies by enabling structural improvement. ## 【Reading Tips】 - **Skim the table of contents first** and jump to items relevant to your current work—the book is explicitly designed for non-linear reading, with heavy cross-referencing between items. - **Deep-read the items on object creation (Items 1–2) and methods (Items 23–28)**—these form the foundation for everything else and contain the most transferable lessons. - **Pay special attention to the "antipattern" examples** labeled with "// Never do this!"—Bloch deliberately includes negative examples from real Java platform code, including his own, to illustrate what not to do. - **Treat the performance numbers skeptically**—they're introduced with "On my machine" and should be regarded as approximate; the book's real focus is clarity and correctness. - **Keep it as a reference, not a cover-to-cover read**—each item stands alone, so revisit specific rules as you encounter the corresponding challenges in your own code. ## 【Coverage Limits】 This guide covers the book's structure, core philosophy, and representative items across all nine chapters, but does not detail every one of the 57 rules. The excerpts do not include full code examples or the later items on serialization specifics. ##
Excerpt 1
t advice in a concise, readable, and easy-to-access format. • Patterns, antipatterns, and idioms to help you get the most out of the Java platform. • Commonl...
View in text
Page 3
. 138 Item 47:Don't ignore exceptions .................................................................................... 139 Chapter 9. Threads ..............
View in text
Page 7
ut into designing the API when you first wrote the software. My focus on API design may seem a bit unnatural to devotees of the new lightweight software deve...
View in text
Page 10
“On my machine,” should be regarded as approximate at best. For what it's worth, my machine is an aging homebuilt 400 MHz Pentium® II with 128 megabytes of R...
View in text
Page 12
etter expressed as a static factory method named BigInteger.probablePrime. (This static factory method was eventually added in the 1.4 release.) A class can...
View in text
Excerpt 6
t two names for static factory methods are becoming common: Effective Java: Programming Language Guide 11 • valueOf— Returns an instance that has, loosely sp...
View in text
Page 18
statement: String s = new String("silly"); // DON'T DO THIS! The statement creates a new String instance each time it is executed, and none of those object c...
View in text
Page 20
simplicity, or power of a program is generally a good thing. Conversely, avoiding object creation by maintaining your own object pool is a bad idea unless th...
View in text
Tags
AI categories
JavaProgramming LanguageCode
ISBN: 0201310058
Publisher: Addison-Wesley
Publish Year: 2001
Language: English
Pages: 272
File Format: PDF
File Size: 2.8 MB
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Generating text preview…