Revision history for Thinking in Java, 2nd edition
Please note that some chapters have not yet been rewritten (see below).
Full text, source code and additional information available at
To be informed of future releases of this document and other information about object-oriented books, documents, seminars and CDs, subscribe to my free newsletter. Just send any email to:
Chapters left to rewrite:
Chapter 15: Distributed Computing
Revision 11, April X, 2000:
- Reworked a lot of the exception handlers. I was stubbing out exceptions, which
is a bad practice.
Revision 10, April 4, 2000:
- Rewrote Chapter 14 (Multiple Threads) and added exercises.
- Rewrote Chapter 13 (Creating Windows and Applets). It's now completely Swing based,
and almost everything is displayed in an html page (these are in the source-code
downloads). One of the biggest rewrites in the
book, but I think it came out reasonably well. Added exercises.
- Rewrote Chapter 11 (The Java I/O System), and added exercises.
- Incorporated copyeditor's corrections for Chapter 5, 6, 7, 8, 9, 10, 12, and all appendices.
- Made some corrections to Appendix C.
- Added the sections titled "Nesting interfaces" and "Reaching outward from a multiply-nested class" to Chapter 8 ("Interfaces and Inner Classes"). From questions by Martin Danner during the SD2000 tutorial.
Revision 9, March 17, 2000:
- The primary reason for this release is for my 3-day tutorial at the SD conference. As I
was bringing the "Hands-On Java" presentation material up to date with the current version
of the book, I ended up making a fair number of code changes in the last chapters.
- Reworked all the GUI examples by creating Console.java which combines all the necessary
commands for running an application or applet into the overloaded run() method. Converted
most non-applets to applets and added Console.run() to them, so they can now be used from
the command-line, with the appletviewer or in web pages (which are automatically generated
for appropriate chapters).
- The Servlet and JSP examples now have their own HTML pages. However, you must set up Tomcat
(See www.apache.org) and copy the files into the appropriate directory (which is performed by
the makefiles, but you'll have to modify paths) and run tomcat in order for it to work.
- Incorporated copyeditor's corrections for Chapter 4
- Made array definitions use a consistent syntax ('' associated with the type, not the id)
- Some changes to EJB section
Revision 8, March 7, 2000:
- Complete rewrite of Chapter 9 for the Java 2 collections. Changed all the existing examples,
removed many of them, added lots of new ones. I'm particularly pleased with the section on
hashing, where I created my own simple hash map as a demonstration. Many exercises added.
- Rewrote Chapter 10 and added exercises
- Rewrote Chapter 12 and added exercises
- Rewrote Appendix A and added exercises
- Rewrote Appendix B, modifying the examples so that they work both under Win32
(configured by default for the free Borland C++ compiler, with Visual C++ configuration
information also in the makefile) and Linux, using g++. Had to hack the Linux stuff a
little because I couldn't figure out how to set the library path properly
(hints are appreciated!)
- Rewrote Appendix C quite a bit
- Rewrote Appendix D
- Integrated copyeditor's edits including the frontmatter up through the end of Chapter 3.
- After thought and consultation, decided to change "handle" to "reference" throughout the book.
- Went through and incorporated many of the corrections on the pending correction list.
- Turned the "Design Patterns" chapter into its own book: "Thinking in Patterns with Java." This chapter had begun bursting at the seams, and was a major obstacle in getting the book out on schedule. Also, it was not material that was covered in the 5-day seminar, but instead has its own seminar and clearly justifies its own book. More information on this project will be posted as it develops. (Currently available only as a Word
Revision 7, Feb 21, 2000:
- Rewrote Chapter 5 and added exercises
- Rewrote Chapter 6 and added exercises
- Broke Chapter 7 into two chapters: 7: Polymorphism and 8: Interfaces and Inner classes. This
was in the making for quite awhile, because this lecture during the HOJ seminars was way
- Rewrote Chapter 7 and added exercises
- Rewrote Chapter 8 and added exercises
- Finalized chapter organization by absorbing the "Enterprise Programming" chapter into the "Distributed Computing" chapter. The intent is that the enterprise programming stuff will stay stimple and introductory, to give people a feel for it so they are comfortable tackling more complex books. A future edition of the book may break Enterprise Programming into its own chapter if this seems appropriate.
- Renumbered everything to reflect the new chapters
- Fixed the footers so the chapter numbers and titles are correct
Revision 6, Feb 16, 2000
Rewrote Preface, Introduction, and Chapters 1 - 4, which are now ready for copy-editing. Added more exercises to Chapters 2 - 4. Simplified initial example in Chapter 2 and added descriptions of downloading JDK, running the compiler and executing programs.
Revision 5B, Feb 6, 2000
No book content changes. Fixed a lot of the formatting issues in the HTML document, and added color syntax highlighting to the code examples. Corrected the master makefile so that the code will
compile under RedHat Linux 6.1 with the JDK 1.2.2 RC2 (that's what I tested it on). Added a built-in error correction submission page to the HTML distribution, linked from each chapter. Did some work on the error correction submission CGI script on the web site so that it does line wrapping.
Revision 5, January 31, 2000
Rewrote Chapter 1, adapted from new material in "Thinking in C++, 2nd edition Volume 1." Changed "Passing & Returning Objects" into appendix A, since it's a special/advanced topic. Added material and examples to the design patterns chapter. The WindowListener-windowClosing code in almost all examples now has a commented 'setDefaultCloseOperation(EXIT_ON_CLOSE)' in anticipation of Java 1.3, but a substitute version from com.bruceckel.swing so that it will compile in Java 1.2. Fixed IDL code generation and directory. All code compiles in Java 1.2 by typing 'make' in the root code directory.
Revision 4, Nov 14 1999
Incremental changes and improvements. In particular, the swing demo HTML pages use frames and some adjustments have been made to the examples in that section to work better.
Revision 3, October 17 1999
To the downloadable code, added HTML pages to run all applets in Chapter 13 and modified the height and width accordingly. Added Rahim Adatia's drag and drop example. Modified the last JSP examples. Added Bill Venner's Jini section.
Revision 2, October 11 1999
Worked on the Enterprise chapter with Dave Bartlett; added preliminary section on EJBs from Robert Castaneda. Added a number of JSP examples.
Revision 1, August 1999
With the aid of a few folks on the Internet (noted in the introduction), did a first rewrite of all the AWT examples so they use swing. NOTE: only the examples have changed, the prose has not been rewritten. In particular, Chapter 13 will need to be rewritten fairly thoroughly. However, the entire book compiles with the Java 2 SDK, Standard Edition, v 1.2 available from http://java.sun.com. Source code can be found in zipped format at www.BruceEckel.com.
Changed all fonts to Times Roman & Courier so people don't have any font issues with the downloaded versions of the book (the printed version will use fonts selected by the designer, Daniel Will-Harris). Set up basic structure of the book. Removed the last chapter and distributed a couple of the programs to other chapters. Removed some appendices, to be posted instead on the web site, or integrated them into the chapters of the book. Hacked up the extractcode.cpp program from "Thinking in C++ 2nd edition" to work with this book. Added subdirectory indicators to all code files for extractcode to use.
- Final CD (final code on CD)
- Unzipped versions of books on CD
- Compiled java code on CD
- Add a web page to describe status & availability of exercise solutions
- Finalize index
- Index section headings
- Add rmic to makefile for RMI examples
- Comment collector in HTML version of book
- Watch for non-public constructors
- Find a free make utility to package with code
Remember during builds:
- Put non-breaking space inside ( )
- Rebuild TOC & Indexes
- Replace fonts before making PDF file for printing
- Modify code trailers before RTF save