This book is organized simply and effectively with 68 practical tips (or in the author's terms "praxes") for writing better Java code. Tips are grouped into sections, such as general tips, objects and equality, exception handling, and performance and multithreading. The book illustrates each tip with short code excerpts demonstrating effective coding strategies (plus several common Java pitfalls).
The book contains numerous standout sections, including the proper way to write equals methods for custom classes, tips for writing more efficient classes, and numerous do-it-yourself techniques for optimizing code. (As the author suggests, not all of today's Java compilers will do this optimization for you.) The book contains several sections that should be read by every Java developer, and though some tips are more obscure, there's certainly something to benefit every reader.
While C++ programmers have had books on coding style for years, Java is only now coming into its own with titles like this one. With its concise format, no-nonsense prose style, and expert-eye perspective on Java, Practical Java: Programming Language Guide shows the same maturing refinement as the language it lucidly describes. --Richard Dragan
Topics covered: Java programming tips, understanding references, final and static keywords, using instanceof, tips for garbage collection, custom equals methods, exception handling tips, using finally blocks, using exceptions with constructors, performance tips, compile-time vs. run-time code optimization, using StringBuffer, minimizing object creation, arrays, Java native code, multithreading tips, the synchronized keyword, spin locks, Java interfaces for emulating multiple inheritance, the abstract keyword, the clone method and immutable objects, tips for finalize methods.
From the Inside Flap
This book is a collection of practical suggestions, advice, examples, and discussion about programming in the Java language. It is organized into individual lessons, each called a Praxis (pronounced prak-sis) and each discussing a particular topic. Each Praxis is written so that it stands on its own. You can read the book from front to back or select topics individually. This arrangement allows you to read the book in short intervals. Many Praxes (pronounced prak-sees) are fewer than five pages, thereby allowing you to study them in a brief amount of time.
In the book, I examine in detail particular design and programming issues. I chose the topics based on their relevancy to effective and efficient programming practices. One of the biggest complaints about Java is performance, so I devote the largest section of the book to this topic, exploring techniques to make Java code execute more efficiently.
I wrote this book as a guide to help you design and write code. It helps you understand Java more completely and enables you to write more-efficient, more-robust, and perhaps most important, more-correct code.
All of the information in this book applies to your Java programming. It is not particular to server, client, or GUI (graphical user interface) programming. In addition, you can apply this information to all versions and releases of Java.
The book's style was influenced by Scott Meyers' Effective C++ and More Effective C++ books. Because I found his style so useful as a way to organize a book, I decided to adopt a similar format. Target Audience
This book is intended for Java programmers who already have grasped the basics of the language. It assumes the reader has a working knowledge of Java and concurrent programming and understands object-oriented concepts and terms. It is for the programmer who wants practical advice, discussion, and examples for using the language effectively.
This book provides seasoned Java programmers as well as programmers new to the language with information and discussion regarding key areas of Java. Enough new information is presented that experienced programmers will greatly benefit and be rewarded by looking at areas that they already know. For example, in some cases I discuss a familiar topic in a way that can help a programmer think about it differently or see another side to it not previously explored.
Programmers new to Java can also gain a lot from this book. I offer discussions and examples that help eliminate many common programming errors. I also dispel some common misconceptions about Java and highlight certain questions about specific language features. Organization of This Book
This book is organized into six main sections.
General Techniques--Presents several fundamental areas of Java programming including parameter passing, arrays, Vectors, and garbage collection. Objects and Equality--Examines objects and primitive types and how and why you should implement an equals method for a class. Exception Handling--Gives a detailed analysis of exception handling techniques and how to incorporate exceptions into your code effectively. Performance--Shows many techniques that you can use to improve the performance of your code. The JVM (Java Virtual Machine), bytecode, and JITs (Just-in-Time code generators) are examined. Multithreading--Covers aspects of the threading model that are critical to building robust and reliable multithreaded programs. Classes and Interfaces--Explains interfaces and abstract and concrete classes and where and when to use each. It also discusses immutable objects, cloning, and finalization in detail.
Under each of these headings is a varied number of related topics. Often, I discuss individual attributes of particular topics in more than one place. For example, I discuss the synchronized keyword at length but in various places. Each discussion deals with a different aspect of synchronized. However, I have provided extensive cross-referencing so that you will know, when reading a particular topic, where other relevant information exists.
Following the Contents is a Detailed Contents. This section contains all of the praxes headings and their page numbers, with a brief summary of the core instruction contained in each Praxis. You can use this Detailed Contents to refresh your memory about a topic or to locate a particular topic or subject matter.
The Appendix contains a proven technique to further expand your knowledge about Java. Also included is a Further Reading section, which lists relevant books and periodicals relating to Java and general design and programming. A Few Words on the Word Praxis
Praxis is the result of my search for a word that summarizes what I am trying to do in this book. In the 1982 American Heritage Dictionary, Praxis is defined as follows: The practical application or exercise of a branch of learning. This is exactly what I want to do in the book.
The most appropriate definition is provided by Webster's New Collegiate Dictionary, 1958: Practice, especially of an art, science, or technical occupation; opposite to theory. This definition most accurately sums up what the book is about. The phrase, "opposite to theory," was the clincher. There is nothing wrong with theory. Its place, however, is not in this book. Example Code
All code examples in the text have been compiled and run with the latest version of Java available when the book was written. The code was compiled and run with the Sun Java 2 SDK, Standard Edition, v1.2.1 on Windows NT 4.0. To access the source code, you must register the book at the following World Wide Web site: awl/cseng/register
At this Web site, you will need to enter the unique code found at the back of this book on the page entitled, "How to Register Your Book." Providing Feedback
I welcome feedback on this book. Any comments, criticisms, or bug reports should be sent to PracticalJava@awl.
I hope you find this book useful, enjoyable, and practical. Peter Haggar
Research Triangle Park, North Carolina