Hi Kurt,
My book attempts to cover every language feature, including features that might be overlooked in other books. For example, did you know that you can access private fields and call private methods without using reflection? Also, why is the Enum class declared as Enum<E extends Enum<E>>? My book looks at these items and more.
Chapter 2 begins my coverage of language features. I've organized this chapter differently from similar chapters in other books because I wanted to emphasize object-based programming in terms of classes and objects. The first part, classes, looks at architecting classes, and this is where I cover fields, methods, statements, expressions, and other basic language features. The second part, objects, looks at instantiating objects from classes. I cover additional topics such as accessing fields, calling methods, chaining methods, and other topics in this section. By the time you finish this chapter, you will hopefully have a solid understanding of object-based programming.
Chapter 3 investigates object-oriented programming by focusing on inheritance,
polymorphism, and interfaces. You learn about instanceof, abstract classes, the Object class, covariant methods, the real reason for the inclusion of interfaces in the language, and more from this chapter.
Chapter 4 begins a two-part series on advanced language features. This chapter focuses on nested types, packages, static imports, and exceptions. Its Chapter 5 companion focuses on assertions, annotations, generics, and enums.
These chapters have been heavily influenced by Joshua Bloch's advice in Effective Java. I wanted to stay true to the proper way of doing things as Bloch points out.
Although there is a little bit of API coverage (notably the exceptions API) in Chapter 4, my coverage of APIs doesn't really begin until Chapter 6. Also, I still cover additional miscellaneous language features in Chapter 6 and future chapters.
Chapter 6 provides a deeper treatment of Java mathematics than I've ever provided elsewhere. In addition to covering the Math, StrictMath, BigDecimal, and BigInteger classes, this chapter focuses on the strictfp reserved
word. Chapter 6 also looks at the Package class, primitive wrapper classes (such as Integer and Double), and the References API.
Chapter 7 continues my basic API exploration by focusing on the Reflection API,
string management (including the topic of internment and explaining why string literals are bonafide objects), the System class, and the Threading API -- including synchronization, volatile variables, and thread-local variables.
Chapter 8 focuses exclusively on the Collections Framework in terms of core interfaces, implementation classes, and utility classes. In this chapter, you will also learn about the autoboxing and enhanced for loop language features. You will also learn about legacy classes. I went nuts on this chapter and hope that I've succeeded in providing a thorough treatment of this framework.
Chapter 9 covers additional utility APIs, including the concurrency utilities, the Internationalization APIs, the Preferences API, the Random class, and the Regular Expressions API.
Finally, Chapter 10 looks at classic I/O in terms of the File class, the RandomAccessFile class, and the various stream and reader/writer classes that are found in the java.io package. You'll find extensive coverage of object serialization and deserialization (and externalization) in this chapter. You'll also learn how to create your own filter stream classes.
Each chapter ends with an extensive exercises section (before the summary). Although most exercises are long answer or true/false (to reinforce your understanding of chapter material), there are also many programming exercises to accomplish. In total, there are nearly 400 exercises in this book. You'll find the solutions in the appendix.
This book's 600 pages could not possibly cover everything that I need to say about Java. For that reason, I'm writing six PDF-based chapters to supplement this book (on topics such as modern I/O, networking,
JDBC, XML, and security), and which you will be able to freely download from my
http://javajeff.mb.ca website over the next few months.
I hope this brief review of LJFAD's content will give you some insight into how this book differs from others.
All the best.
Jeff