This book does for Java what Scott Meyers' classic Effective C++ did for C++: identifies the key practices and rules that enable good developers to become great developers. IBM Java expert Peter Haggar brings together 68 rules for writing better Java 2 code, complete with insightful discussions and real-world examples. These are the "rules of thumb" expert developers have discovered: guidelines that consistently lead to clear, correct, and efficient code. Haggar focuses on the key issues virtually every Java developer faces, from general techniques (such as when to use polymorphism and when not to use method overloading); to working with objects, exception handling, performance, multithreading, classes, interfaces, and beyond. Haggar has a remarkable talent for crystallizing a problem and solution, and communicating it in words and code. The result: a book that can help any Java developer get dramatically better results -- fast.
Click below for Interview related to this title:
Interview with the author
GENERAL TECHNIQUES.Praxis 1: Understand that parameters are passed by value, not by reference.
OBJECTS AND EQUALITY.Praxis 8: Differentiate between reference and primitive types.
EXCEPTION HANDLING.Praxis 16: Know the mechanics of exception control flow.
PERFORMANCE.Praxis 28: Focus initially on design, data structures, and algorithms.
MULTITHREADING.Praxis 46: Understand that for instance methods, synchronized locks objects, not methods or code.
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.
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.
This book is organized into six main sections.
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.
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.
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:
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."
I welcome feedback on this book. Any comments, criticisms, or bug reports should be sent to PracticalJava@awl.com.
I hope you find this book useful, enjoyable, and practical.Peter Haggar