Thinking about Java

    Java Title Page Java Index Java Contents

C: Supplements

There are several supplements to this tutorial, including the seminar-on-CD packaged in the back and other items, seminars, and services available through the MindView web site.
This appendix describes these supplements so that you can decide if they will be helpful to you.

Foundations for Java seminar-on-CD

The CD that is bound in the back of this tutorial is intended to provide foundation material to prepare you to learn Java from this tutorial or from the Thinking about Java seminar. The bulk of the 400+ Megabytes of the CD is a full multimedia course called Foundations for Java. This includes the Thinking in C seminar, which gives you an introduction to the C syntax, operators and functions that Java syntax is based upon. In addition, it includes the first seven lectures from the 2nd version of the Hands-On Java seminar-on-CD that I created and present. Although historically the entire Hands-On Java CD is only available for sale separately (this is also the case with the 3rd version of the Hands-On Java CD), I decided to include the first seven lectures from the 2nd version because the concepts in these lectures have not changed substantially due to the 3rd version of the tutorial, so it will not only provide you (along with Thinking in C) with a foundation for this tutorial and the Thinking about Java seminar, but in addition I hope it will give you a taste for the quality and value of the Hands-On Java CD, 3rd version. Feedback
The CD is described in more detail in this tutorial’s Introduction.

Thinking about Java seminar

My company MindView, Inc. provides five-day, hands-on, public and in-house training seminars based on the material in this tutorial. Formerly called the Hands-On Java seminar, this is our main introductory seminar that provides the foundation for our more advanced seminars. Selected material from each chapter represents a lesson, which is followed by a monitored exercise period so that each student receives personal attention. You can find schedule and location information, testimonials, and details at Feedback

Hands-On Java seminar-on-CD 3rd version

The Hands-On Java CD, 3rd version, contains an extended version of the material from the Thinking about Java seminar and is based on this tutorial. It provides at least some of the experience of the live seminar without the travel and expense. There is an audio lecture and slides corresponding to every chapter in the tutorial. I created the seminar (more recently, with input from Andrea Provaglio, who teaches most of the live versions of the seminar) and I narrate the material on the CD. The Hands-On Java CD 3rd version is for sale at Feedback

Designing Objects & Systems seminar

This seminar has evolved from the popular Objects & Patterns seminar that Bill Venners and I have given together for the past several years. The material in that seminar grew beyond its bounds, so we’ve split it into two seminars: this one, and the Thinking in Patterns seminar described later in this appendix. Feedback
An important part of good object-oriented design is well-designed objects. A major part of the seminar (distributed throughout the week) is the Object Design Workshop, which focuses on guidelines and idioms that help you create well-designed objects. Each of these will be explained and justified, and then discussed by the attendees. This discussion is an integral part of the workshop, aimed at facilitating a conversation about design among peers that can help everyone to learn from each other’s experiences and perspectives. The Object Design Workshop will give you a specific set of practical guidelines and concrete idioms that you can draw upon in your future object designs. Feedback
The other portion of this seminar will focus on the process of developing and building a system, primarily focusing on so-called “Agile Methods” or “Lightweight Methodologies,” especially Extreme Programming (XP). We will introduce methodologies in general, small tools like the “index-card” planning techniques described in Planning Extreme Programming (Beck and Fowler, 2002), CRC cards for object design, pair programming, iteration planning, unit testing, automated building, source-code control, and similar topics. The course will include an XP project that will be developed throughout the week. Feedback
Visit for schedule and location information, testimonials, and details.

Thinking in Enterprise Java

This is the tutorial that has been spawned from some of the more advanced chapters formerly in Thinking about Java. This tutorial isn’t a second volume of Thinking about Java, but rather focused coverage of the more advanced topic of enterprise programming. It is currently available (in some form) as a free download from Because it is a separate tutorial, it can expand to fit the necessary topics. The goal, like Thinking about Java, is to produce a very understandable introduction to the basics of the enterprise coding technologies so that the reader is prepared for more advanced coverage of those topics. Feedback
The list of topics will include, but is not limited to:

You can find the current state of Thinking in Enterprise Java at

The J2EE seminar

This seminar introduces you to the practical development of real-world, Web-enabled, distributed apps with Java. It covers J2EE and its key technologies: Enterprise JavaBeans, Servlets, Java ServerPages, and the basic architectural patterns used to combine these technologies into maintainable apps.
You'll come out of this course with a comprehensive understanding of the J2EE architecture, of the problems it is designed to solve, how to select the most appropriate tools, and how to code your solutions.
Visit for schedule and location information, testimonials, and details.

Thinking in Patterns (with Java)

One of the most important steps forward in object-oriented design is the “Design Patterns” movement, chronicled in Design Patterns, by Gamma, Helm, Johnson & Vlissides (Oracle 1995). That tutorial shows 23 different solutions to particular classes of problems, primarily written in C++. The Design Patterns tutorial is a source of what has now become an essential, almost mandatory, vocabulary for OOP programmers. Thinking in Patterns introduces the basic concepts of design patterns along with examples in Java. The tutorial is not intended to be a simple translation of Design Patterns, but rather a new perspective with a Java mindset. It is not limited to the traditional 23 patterns, but also includes other ideas and problem-solving techniques as appropriate.
This tutorial began as the last chapter in Thinking about Java, 1st version, and as ideas continued to develop it became clear that it needed to be its own tutorial. At the time of this writing it is still in development, but the material has been worked and reworked through numerous presentations of the Objects & Patterns seminar (which has now been split into Designing Objects & Systems and the Thinking in Patterns seminars).

Thinking in Patterns seminar

This seminar has evolved from the Objects & Patterns seminar that Bill Venners and I have given for the past several years. That seminar grew too full, so we’ve split it into two seminars: this one, and the Designing Objects & Systems seminar described earlier in this appendix.
The seminar strongly follows the material and presentation in the Thinking in Patterns tutorial, so the best way to find out what’s in the seminar is to download the tutorial from
Much of the presentation is an example of the design evolution process, starting with an initial solution and moving through the logic and process of evolving the solution to more appropriate designs. The last project shown (a trash recycling simulation) has evolved over time, and you can look at that evolution as a prototype for the way your own design can start as an adequate solution to a particular problem and evolve into a flexible approach to a class of problems.

Following each lecture there will be a set of patterns exercises for you to solve, where you are guided to write code to apply particular patterns to the solution of coding problems.
Visit for schedule and location information, testimonials, and details.

Design consulting and reviews

My company also provides consulting, mentoring, design reviews and implementation reviews to help guide your project through its development cycle—especially your company’s first Java project. Visit for availability and details. Feedback

    Java Title Page Java Index Java Contents Comments