IdentifiantMot de passe
Mot de passe oublié ?Je m'inscris ! (gratuit)

Thinking in Java, 3rd ed. Revision 4.0


C. Supplements

There are several supplements to this book, 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.

C-1. Foundations for Java seminar-on-CD

The CD that is bound in the back of this book is intended to provide foundation material to prepare you to learn Java from this book or from the Thinking in 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 edition 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 edition of the Hands-On Java CD), I decided to include the first seven lectures from the 2nd edition because the concepts in these lectures have not changed substantially due to the 3rd edition of the book, so it will not only provide you (along with Thinking in C)with a foundation for this book and the Thinking in 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 edition.

The CD is described in more detail in this book's Introduction.

C-2. Thinking in Java seminar

My company MindView, Inc. provides five-day, hands-on, public and in-house training seminars based on the material in this book. 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

C-3. Hands-On Java seminar-on-CD 3rd edition

The Hands-On Java CD, 3rd edition, contains an extended version of the material from the Thinking in Java seminar and is based on this book. 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 book. 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 edition is for sale at

C-4. 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.

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.

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.

Visit for schedule and location information, testimonials, and details.

C-5. Thinking in Enterprise Java

This is the book that has been spawned from some of the more advanced chapters formerly in Thinking in Java. This book isn't a second volume of Thinking in 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 book, it can expand to fit the necessary topics. The goal, like Thinking in Java, is to produce a very understandable introduction to the basics of the enterprise programming technologies so that the reader is prepared for more advanced coverage of those topics.

The list of topics will include, but is not limited to:

  • Introduction to Enterprise Programming
  • Network Programming with Sockets and Channels
  • Remote Method Invocation (RMI)
  • Connecting to Databases
  • Naming and directory services
  • Servlets
  • Java Server Pages
  • Tags, JSP Fragments and Expression Language
  • Automating the creation of user interfaces
  • Enterprise Java Beans
  • XML
  • Web Services
  • Automated Testing

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

C-6. The J2EE seminar

This seminar introduces you to the practical development of real-world, Web-enabled, distributed applications 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 applications.

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.

C-7. 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 (Addison-Wesley 1995). That book shows 23 different solutions to particular classes of problems, primarily written in C++. The Design Patterns book 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 book 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 book began as the last chapter in Thinking in Java, 1st Edition, and as ideas continued to develop it became clear that it needed to be its own book. 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).

C-8. 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 book, so the best way to find out what's in the seminar is to download the book 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.

  • Dramatically increase the flexibility of your designs.
  • Build in extensibility and reusability.
  • Create denser communications about designs using the language of patterns.

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 programming problems.

Visit for schedule and location information, testimonials, and details.

C-9. 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.


Ce document est issu de et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.