★ wanayoo — archive 1999 http://www.bruceeckel.com/Java.htmlNouvelle recherche | Portail wanayoo

MindView Inc.

Receive the free OO newsletter
Go to the Java Book page
Go to the Hands-On Java CD ROM page

The Hands-On Java Seminar

June 19-23, 2000 in Crested Butte, Colorado
Click here for Crested Butte location and lodging

This course is fully updated to cover Java 2, and follows the 2nd Edition of Thinking in Java.

The Hands-On Java Seminar is an introductory Java seminar for people who are comfortable with C syntax. (The 2nd edition of Thinking in Java includes a multimedia seminar to bring you up to speed on the basics of C). Please note you should bring your copy of Thinking in Java, 2nd edition, either the printed version or the electronic version.

For information about the various other learning experiences offered by MindView, Inc., click here


I've given hundreds of lectures and workshops to thousands of programmers throughout the world. After a while, I realized that people didn't really get it unless they could put their hands on a keyboard and program an example or two of what I'd just talked about. So for the last 12-city C++ tour that Richard Hale Shaw and I did in 1995, we decided to try an experiment: let people bring in their computers and work exercises. We knew it would help, but even we were surprised by the enthusiasm. Everyone agreed that it vastly improved their understanding of the material - instead of believing that someone could, in theory, program in this language, students walked away knowing they could write programs.... because they got to try out everything, as I gave it to them. When they got into trouble, they not only asked me, they asked others around them. (People often liked to work in teams). And in this seminar there may be those who don't want to work exercises - I don't think you'll get as much out of it but of course you're still welcome - the seminar is here to fill your educational needs.

If it was as simple as that, then you could just pick up a copy of Thinking in Java and work the exercises yourself. After all, you can get the book in electronic form, and we'll work out of the book during the seminar since it's designed to be the course (it contains more material than the course will cover, so it will also be a reference for you).

But I enjoy teaching to a group. I work extra hard to make it interesting for you (I especially like to use cartoons and diagrams in my slides, and to show you plenty of source code), and to give you the special insights I've gained in ferreting out the more obscure meanings and features of the language. And it seems that people like to hear me teach (see the comments below). In general, I believe you'll find yourself propelled further forward in five days than you would be in 9 months or more studying on your own. To make sure you get value for your time and money, the course is backed by a money-back satisfaction guarantee.


Comments from students:

  • This is the best technical course I have attended. The combination of the beautiful environment, Bruce's knowledge and relaxed teaching style make a very powerful package. I believe that I was able to learn more about Java (and quality programming practices) here than would have been possible under more "normal" circumstances. Eddie Demond/EDS
  • Great instructor, great course, great location and a great value! Chuck - Minneapolis MN
  • The course is great! The approach of starting the seminar with "everything is an object", and later the concepts of polymorphism and inheritance, makes the course much more effective. These foundations allowed me to easily understand the functionality and usage of the java core classes used during the seminar. Now, it is easy to check any Java API and understand how to use it since the concepts of OOP were so well covered by Bruce. I do not recommend this course to those who want to learn the syntax of Java... however, I recommend it to everyone interested in understanding the object oriented programming approach used in Java, and also to those individuals who want to take their development/programming skills to the next level. Felix Guerrero. Multimedia Application Developer
  • I spend a fortune in books over the past year and could have saved a lot of money, time and agony if I had attended the seminar earlier. This is the most amazing, intuitive course/literature I have come across on the subject of Java. I can't see an easier way to learn Java from the ground up. In record-breaking time of 5 days, I have gained a thorough understanding of Java and, for that matter, OOP in general. The seminar, the CD and the book are an absolute must for anyone who is sincerely interested in Java. I don't think his book will ever leave my desk! Ralf Jacob, Webmaster AD, BoxTop Interactive Inc.
  • Comprehensive without becoming overwhelming. The best training class I have ever attended!! Steve Beltz, I-Net Space Services
  • I have been writing Java programs since finishing your Hands On Seminar in February.  That was the best programming class I've ever attended.Benny Poon, UC Davis Medical Center
  • Insightful, bold, cogent and fun! One of the best software learning experiences I've had ... highly recommended. Byron Viets, Sierratel Communications Group
  • It was excellent! Matt Hogan/Eli Lilly and Company
  • I have learned more here than attending a semester-long Java course at a local college! Usha Balaraman, Digital Equipment Corporation Software Consultant
  • I found the "hands on" approach to be a very useful and productive technique for learning Java. This was probably the most useful seminar I have ever attended. John Kline, John_Kline@Mastercard.com
  • This is an excellent class – one of the best I have ever taken!!! If you want a great introduction to Java and Object-Oriented Programming definitely take this class. David Robbins, Senior Software Engineer, DataCraft ("Put your 4D database on the Web in 5 minutes": http://www.datacraft-inc.com)
  • This is an excellent course to learn about the fundamental concepts of OOP and Java. Thai C. Le, Shell Services International
  • Excellent Java course. The course covered all the Java 2 features. Everyone was able to implement and test the material taught in the course. The course is very realistic about the pluses and minuses of Java. Moshe Greenberg, Sanford C. Bernstein Inc.
  • The most well-thought-out and thorough programming class I've attended. Attention to important details and connecting each lesson to the previous one sets TIJ apart. Gunnar Peterson, Novartis
  • This course was a tremendous value and great investment. Bruce supplements much of his "Thinking in Java" book with interesting anecdotes and many illustrative examples. The seminar goes beyond the book into lots of fascinating nooks and crannies without ever losing focus. Bruce Eckel porves that he's more than just a great writer -- he's a marvelous teacher, who sincerely cares about his students and furthering their understaning of the Java language. I feel very fortunate to have attended this seminar. Mike Porter, President, Greenlight software, Inc.
  • An excellent immersion approach, and a refreshing and useful antidote to the world of "quick & dirty" programming. Cliff Resnick, Programmer, New York
  • This is it! I've heard Bruce before and his "Thinking in Java" is all that I expected it to be and more. I like the approach of accommodating beginner through advanced. Having workable examples and hands-on class-time experience, I've got a good jump up the learning curve. It's been a week well spent…I've also enjoyed jogging along the San Francisco Bay. jmoehr@execpc.com
  • Bruce's knowledge of the Java language past, present and probably is apparently boundless. I look forward to taking more classes with Bruce as the language progresses. Joe Dante, Senior Programmer, ESS Inc.
  • Attending this course cleared my confusion and really hammered home all of the concepts. I am now ready to dive into my first Java project. Thanks! Mike O'Brien, Questra Corporation
  • Excellent course materials. Book is great! Definitely not for a novice programmer. Introduces advanced concepts well. This would be the route if someone wants to add Java to their existing language skills. Ravi Akkoor, President, Insight Info Systems, Kalamazoo MI
  • Excellent course for Java concepts Buford Harvey/Eli Lilly and Company
  • A well-paced workshop focused on education and understanding of Java and OO; not a shallow training course. Scott Miles, Laboratory for Spatial Analysis in Geotechnical Engineering, University of Massachusetts
  • There is no "fluff" in this course. It is jam packed with information & concepts that form the foundation for further knowledge in JavaGayle Sanders, Nokia
  • "I laughed. I cried." It was good to have an objective point of view, rather than hearing fanatical pro-ore anti-Java propaganda. Like all languages, Java has strengths and weaknesses and in the seminar we get to see both.Clay Folwer, Grantlun
  • This is the most complete Java class I have ever taken. BTW, the instructor's style is cool :-)
  • Bruce's explanations are clear and understandable without too much jargon. He makes it clear which topics are important and which features are rarely used. The class shows so many different Java programs that it makes it easy to become comfortable with the structure of the language. Kathy Wisnewski, SAS Institute Inc.
  • Fun learning experience. Helps fill all the holes in Knowledge on Java. Gives a good understanding of the basic concepts. Ashwini Pande, Rosetta Inpharmatics, Kirkland WA
  • Overall the class was very good. The online and hard copy materials were very thorough. The class itself maintained a high interest level throughout the week, which was pleasantly surprising for a programming class. Olivia Lee, Oracle Corp.
  • The course was well laid-out, making it easier to grasp a radically different programming language for an old 'C' programmer. John Kotch, Systems Engineer, Infoscape Inc.
  • As a new programmer, I found the class challenging, and a great overview of object-oriented programming.
  • Your associate Andrea was a big help. The food and location were outstanding. James C. Taylor, Santa Fe Preparatory School
  • Bruce's class is an excellent way to learn Java. He avoids the natural tendency to jump right into applets in order to make sure all the bases are covered. You really understand the language before getting into applets. Tim Wallace, DSC Corporation
  • Bruce has the rare ability to communicate ideas clearly, both in person and in print. (This is unusual in computer science and difficult with a mixed-ability audience.) On tope of that, compared with the pricing of other such seminars, "Hands-One Java" is quite a bargain – overall a high "bang for your buck." Bruce M. Carothers, Principal Software Engineer, Schluberger Technologies
  • Great Course
  • Wonderful class. Material was well-organized and presented in a clear and concise manner. Highly recommended for the beginner to intermediate Java/C++ developer. I can't wait for attend the "Advanced" class!! Grant Farrow, QFS Software
  • If you want to travel fast and far, and cut through the political side trips of other authors, this is the vehicle for you. Jim Van Meter, Vision Software
  • Great intro to both OOP and Java!
  • This course has less of a theological flavor and is much more pragmatic than other Java classes I've been to. More nuts and bolts and refreshing realism. A rarity in the realm of strongly-hyped languages. Roland Wilcher, Research Consultant for Bell and Howell PSC
  • Great course! The information was presented in a concise format with each section building on the previous. Excellent learning environment. Not only am I a better Java programmer, but a better OO programmer as well! Thanks! Andrew Bacon, Celcore Inc.
  • Excellent presentation of material, tempo and format.
  • Great class, well organized and very informative. Matt Starr, Spectra Logic Corporation
  • Excellent in-depth treatment of subjects only lightly covered in most Java books. keeney@hal-pc.org
  • The concept of thinking correctly before writing in Java is an important factor. The course really brought this home. Jerry Hamby, BroadBand Multimedia
  • Bery useful and informative introduction to programming in Java and to object-oriented concepts. Bruce has worked hard to understand how Java is meant to be used and this shows in the depth and honesty of his treatment of the language. Patrick Morrison, Senior Consultant, Information Technology Consulting, Inc. http://www.itci.com
  • I really like the way Bruce uses actual code examples to create, test and reinforce Java learning. His sample programs are real gems that can be modified and rerun to answer particular questions about Java. A very comprehensive and thorough course. Don Sawyer, Nortel Advanced Technology
  • The last two days alone were well worth the cost. Covered the questions I had about Java usage beyond Web applets. A good synthesis of likely directions for the language – this will be of value as we consider how we may use the language in our environment. Sean McKenna, Clorox
  • I thought my head was going to explode, but in the end it was a tired, yet happy feeling, like running a marathon and making it to the finish line. Bjorn Austraat, Software localization specialist, Berlitz Interactive Group
  • Terrific fast track introduction to Java in a magnificent setting. Mark Russell, CTO FirstTel Systems
  • This is the most succinct and clear presentation of Java I have ever encountered. Neither pedestrian nor obscure, Bruce Eckel presents Java in a manner both practical and immanently comprehensible. A must for all C and C++ programmers seeking to master Java. Daniel MacWilliams, Software Consultant Engineer
  • Thank you so much! This was an incredible class and I know our entire group that came benefited tremendously. I hope we make it back for an intermediate course! Kim Parker/ Celcore, Inc.
  • Bruce really knows his stuff! Excellent course! All concepts, topics & examples were clearly explained and made easy to understand. I like Bruce's approach to teaching & learning the Java & OOP programming process. Karen Hobert, Top Dog, Bad Dog, BAD!
  • This class is worth far more than what Bruce charges. I rarely attend a class where I don’t have to worry about the logistics of breakfast, lunch, etc. The bulk of the time was spent learning and doing exercises. Rod Bowser, rodbo@beavis.aus.swr.irs.gov
  • Concise, comprehensive, an excellent introduction to Java for a first-timer. Thoroughly enjoyed the course. Assistants were extremely helpful. Recommended. Deepika Gajulapalli, Edify Corporation
  • Outstanding approach to teaching a language & development environment. Teaching the mechanics & philosophy before graphics & applets is the right approach. I felt that I was able to absorb more OOD by having a better understanding of how the language functions. Paul Grunwald / Intel
  • Once again, thank you for giving such a great seminar. It was very comprehensive and much more than just an introduction to the language. Hui-Lim Victor Lim, Technical Staff, Oracle Corporation
  • I really enjoyed the class. It was very informative, and filled in all the gaps. Nice not to get a marketing slant! Bruce really knows his stuff and did a great job communicating it. Allison Fields, Systems consultant, Tribune Company
  • Excellent introduction to Java. The title of the book "Thinking in Java" is a perfect description of the class. Roger Kibbe, Andersen Consulting
  • I took a C++ class from Bruce earlier and was very impressed with it. I came to the Java class with high expectations. I was not disappointed. Mark Carleton, Software Design Engineer, Hewlett Packard.
  • This class wisely explores OOP concepts and Java structure before pushing into Java's flashier features. It also exposes Java's current weaknesses and warts. Gary Wong, Webmaster, Tribune Company
  • Having read Bruce's book "Thinking in C++," I decided to take this course to help me learn Java… Bruce's perspective on both languages will not disappoint. Brian Bruckner, Sr. Systems Analyst, Microsoft Corporation.
  • Excellent food! An experienced C programmer will come away understanding object-oriented techniques and how to apply them to their next project in Java, or any other OOP language. Rhoda Neimand/Sybase
  • Thanks especially for creating an environment in which slow learners are allowed to learn a lot and can make good use of the exercise periods without harassment but with help available when needed. Dave C.
  • The attention and help given during the exercises really made a difference for me in my ability to understand what was going on. Bruce's descriptions and method of presenting the material in each lesson was easy to understand and very clear. More understandable than anything I would receive by just reading a book. Carli Schultz, Web Site Development & Design
  • Money well spent! tstockton@travelogix.com
  • I was very pleased with the depth and breadth of the topics covered. I would have no problem recommending this course to novice and advanced programmers alike. Dan Dumbrill, Learning Tools Inc.
  • Well structured, good format, a very productive week. Brian Ruff
  • This seminar covers Java language in depth with ample numbers of exercises. It is an excellent option for people looking to gain fair amounts of Java knowledge in a short period. Praveen/Sharp Laboratories of America
  • Good solid class on Java covering all the important aspects of the language. J. Sanchez
  • Assistants were very receptive to questions. Enjoyed clarity with which Bruce lectured. Found book extremely readable. Actually enjoyed a class that I thought might be hell! Food was fresh, healthy and filling. Recommended. Exercises gave a good understanding of concepts. Ranjani Varadarajan / Edify Corporation
  • This seminar is well-organized and concise. It presented many understandable concepts and implementations to clarify the way I think in Java. Tron B. Knik, Sr. Systems Analyst, ITSD King County WA.
  • The course's structure introduces the core concepts in a non-overwhelming way. The AWT & Applets are much easier to understand once you've taught us the fundamentals. Bill Humphries, EPRI
  • All in all the class is very well designed and delivered. Matt Q.
  • The Hands-on-Java seminar is a fantastic presentation of Java and Internet concepts and fundamentals. Bruce's instruction of Object programming and Java is a realistic presentation of Java's functionality and usage. The best presentation of Object programming concepts I have seen. Thanks to this seminar -- and your Thinking C++ seminar -- I am the one with the Java and object programming knowledge base. - Diane P.
  • I just wanted to let you know that I thoroughly enjoyed the Java seminar. The material that was presented and the hands-on labs definitely added to my further understanding of the Java language. I also liked the way you present the material in your book 'Thinking in Java'. - Dan K.
  • I found the class to be very thorough and enjoyable. The exercises were useful in addition to being educational. Kevin Yancy, Manager NMS Development, Celcore Inc.
  • I found your hands-on Java course to be beneficial and fun. The course provided a thorough introduction to Java and a comparison to C++. The hands-on format gave the participants the opportunity for immediate feed back on lecture material. Since attending your course, I've developed several Java applications that are being used on the web. You couldn't have pick a nicer setting and the lunches you provided were wonderful. Thank you for a great experience! Carol L.
  • Just want to say again that I enjoyed your seminar. Robert S.
  • The class gave me a true understanding of Java and now will allow us as a company to determine the best way to use Java. Anon
  • Ambitious course. I came wondering if an introductory course would be too basic, but we covered an amazing range of useful features of the language, in depth with well-tested hands-on examples. A very good confidence-builder that covered things I didn't imagine we could get to in only one week.
  • Excellent, Impressive! Thanks, Bruce!
  • The best overall course for any procedural programmer who wants to really get into the world of objects while also learning a great new language. Delac BARBOUCHE, Connect Computer
  • I was excited when I found out that I would be taking Bruce Eckel's Hands-On Java Seminar because I knew that it was one of the best courses to cover Java. These expectations were fully met in the course. Ronald Greti, KANA Communications
  • Great class with lots of practical examples, OOP techniques, etc. Bruce Van Patten, AMCC
  • I was particularly impressed that this class focused on learning the language, not just on learning enough to hack an applet. Greg Cohoon, Vanguard Cellular Systems
  • Best class I've attended in a long time. The class was well organized and jam-packed with very useful information. Michele Matthews, Vanguard Cellular Systems
  • The seminar was packed with useful information . Bruce's independent status allows him to present things in a completely objective manner, which provides some unique insights into the language. Whatever your reason for attending, come ready to learn. You will leave with a "brainful."
  • Bruce has an excellent command of Java and a clear, confident teaching style.
  • Bruce Eckel is an excellent speaker and presenter!
  • This is a very good Java intro class. It gives a comprehensive view of the language without spending time on the obvious stuff. Ben Wong, NationsBanc-CRT
  • I got exactly what I came for; a better understanding of OO concepts and programming techniques with a focus on Java. Thanks!
  • The kestrel and the night heron right outside the window were a nice touch. Susan Finkleman
  • Emphasizes how to put things together in an object-oriented fashion with Java. this is exactly what I'm looking for. Tina Yeh, Output Technology Solutions of California
  • I knew nothing about OOP and nothing about Java before attending. I have an engineering background with experience in FORTRAN and C programming. I found the course very well suited to my background. While the lecture pace was at times quick, I was by no means lost. The class exercises were very well designed and very instructive. Jim Hicks, Persons Brickerhoff
  • Bruce is very knowledgeable about the Java language and communicates it in a way that makes it easy to learn. Todd Peterson, Output Technology Solutions of California
  • Very thorough introduction to Java's core concepts, presented in very pleasant setting. I can't possibly imagine taking an intro Java seminar from anyone else. Martin Schechtman
  • Excellent overview of issues and features, a good foundation class. I won't use everything, but it's helpful to get a sense of what is in the language. You kept everybody's attention through the last day, which is pretty impressive for a five-day class :-). Jean Anderson, Informix Software
  • The seminar introduced and also showed me the possibilities that Java can provide. From start to finish, this seminar provided the necessities for beginners to advanced users of Java to create and extend Java programs. William Yee, Grantlun
  • I must say again I'm totally stoked about where the class has gotten me in putting Java to work. I'm cooking along adding all kinds of functionality to an application that was only a gleam in my eye before the course.
  • Bruce converted me from C++ to Java and taught me everything I need to gain more insight and learn more advanced concepts. Plus I lost 40 pounds and won the lottery! Thanks, Bruce! Joseph Callahan, Fox Chase Cancer Center
  • Bruce Eckel's "Hands-On Java Seminar" saved my life! Before I came to San Francisco, I was a lowly C++ programmer with poor self-esteem. Thanks to Bruce and his miraculous OOP technique, I have more energy and self confidence. I even met my future wife! Good going, Bruce! Chris Cantrell

Why you'll want to come

  • Get thorough coverage of the programming language fundamentals from the ground up.
  • If you're thinking of learning C++, try Java first! It's an easier and more pure introduction to object-oriented programming, and once you get used to it you will have a gentler transition to C++.
  • Learn the language from an object-oriented perspective, including data abstraction, inheritance and polymorphism.
  • Taught personally by Bruce Eckel, author of Thinking in Java, with years of background teaching seminars and consulting in object-oriented programming. Bruce is dedicated to giving you the best learning experience possible.
  • Hands on! In-class programming exercises mean you'll walk away with confidence in your programming skills.
  • The insight you'll gain into the details and meaning of the Java language will allow you to breeze through language issues so you can focus on the big picture.
  • Get up to speed quickly: a five-day investment saves many months of learning things the hard way!
  • Get an independent perspective: Bruce Eckel is a consultant who does not work for Sun Microsystems or any other Java language vendor.
  • Learn the advantages and disadvantages of Java, and about third-party tools.
  • Covers information not included or only lightly touched by the on-line documentation and many books.
  • Shorten your development time with a thorough understanding of the Java programming language and of object-oriented programming.
  • Although you don't need to know C++, you'll see the contrast between Java and C++ from an expert (Bruce Eckel is also the author of the best-selling Thinking in C++, which won the Software Development Magazine Jolt Award for best book of 1995)

What you'll learn

This course is based on a very significant premise: that every serious Java development environment will (eventually) come with a GUI builder. Regardless of what GUI library you use, you won't have to write that code by hand - you'll just drag & drop components (JavaBeans) onto a canvas.

And that's where the challenge begins, because that's the point where you must understand how the code works - the GUI builder isn't going to do that for you. And regardless of what you've heard, Java isn't just slightly more complicated than a macro language -- it's actually quite sophisticated, and you'll need to spend five days on the language to get any depth of understanding. So at this point we'll begin exploring not the glitzy UI stuff, but rather the underlying structure of the programming language and the object-oriented programming concepts that it embodies. On the way, of course, the GUI features will be covered, but only after you have enough understanding under your belt so that you can focus on the library and not get confused by the code.

Here are the sections in the sequence they'll be presented (they correspond to the chapters in Thinking in Java, 2nd edition). Note that most of the sections are followed by a lab period with an integrated break that may also mean "lunch," depending on when the lab period occurs.

Chapter 1: Introduction to Objects
This chapter is a conceptual overview of what object-oriented programming is all about, including the answer to the basic question "what's an object?", interface vs. implementation, abstraction and encapsulation, messages and methods, inheritance and composition, and the all-important polymorphism. Then we'll look at issues of object creation like constructors, where the objects live, where to put them once you create them (answer: in containers), and the magical garbage collector that cleans everything up when it's no longer needed. Other concepts will be introduced, like error handling with exceptions and multithreading for responsive user interfaces. We'll also look at what makes Java special and what accounts for its success. This section will also briefly introduce object-oriented programming analysis and design methods. Brief comparisons between Java and C++ will be given throughout the course (however, you do not need to know C++ to benefit from these comments, or the course).

Chapter 2: Everything is an Object
This chapter gets you to the point that you can write your first Java program, so it must cover the essentials, including: the concept of a reference to an object; how to create an object; an introduction to primitive types and arrays; scoping and the way objects are destroyed by the garbage collector; how everything in Java is a new data type (class) and how to create your own classes; functions, arguments, and return values; name visibility and using components from other libraries; the static keyword; comments and embedded documentation.

Chapter 3: Controlling Program Flow
(Note: this chapter covers the C aspects of Java, and is primarily a review of C. Since it is assumed that you can read C code before taking the course, this section will not be covered in class. If you are not completely comfortable with C, it's recommended that you read this chapter prior to the course. MindView, Inc. has also created a CD ROM called
Thinking in C: Foundations for Java & C++ which is specifically designed to bring you up to speed on the C syntax necessary to understand Java -- without bogging you down with needless details. The CD is included with the published print version of Thinking in Java, 2nd Edition). This chapter begins with all the operators that come to Java from C and C++. In addition, it looks at common operator pitfalls, casting, promotion and precedence. This is followed by the basic control-flow and selection operations that you get with virtually any programming language: choice with if-else; looping with for and while; quitting a loop with break and continue as well as Java's labeled break and labeled continue (which account for the "missing goto" in Java); and selection using switch. Although much of this material has common threads with C and C++ code, there are some differences. In addition, all the examples will be full Java examples so you'll be getting more comfortable with what Java looks like.

Chapter 4: Initialization & Cleanup
This section begins by introducing the constructor to guarantee proper initialization. The definition of the constructor leads into the concept of function overloading (since you may want several constructors). Following that, we'll look at the process of cleanup, which is not always as simple as it seems. Normally you just drop an object when you're done with it and the garbage collector eventually comes along and releases the memory. This portion explores the garbage collector and some of its idiosyncrasies. The section concludes with a closer look at how things are initialized: automatic member initialization, specifying member initialization, the order of initialization, static initialization, and array initialization.

Chapter 5: Hiding The Implementation
This section covers the way that code is packaged together, and how some parts of a library are exposed and other parts are hidden. It begins by looking at the package and import keywords, which perform file-level packaging and allow you to build libraries of classes. The subject of directory paths and file names is examined. The remainder of the section looks at the public, private, and protected keywords and the concept of "friendly" (package access), demonstrating what they mean when used in various contexts.

Chapter 6: Reusing Classes
The concept of inheritance is standard in virtually all OOP languages. It's a way to take an existing class and add to its functionality (as well as change it, the subject of the next section), so inheritance is often a way to re-use code by leaving the "base class" the same, and just patching things here and there to produce what you want. However, inheritance isn't the only way to make new classes from existing ones; you can also embed an object inside your new class with composition. In this section we'll look at these two ways to reuse in Java and how to apply them.

Chapter 7: Polymorphism
On your own, you might take nine months to discover and understand this cornerstone of OOP. Through small, simple examples you'll see how to create a family of types with inheritance and manipulate objects in that family through their common base class. Java's polymorphism allows you to treat all objects in this family generically, which means the bulk of your code doesn't rely on specific type information. This makes your programs extensible, so building programs and code maintenance is easier and cheaper.

Chapter 8: Interfaces & Inner Classes
Java provides a third way to set up a reuse relationship: through the interface, which is a pure abstraction of the interface of an object. Once you've seen polymorphism, the interface can be clearly understood. Inner classes add flexibility to the designs you can create, but they can be confusing at first. This section will show you examples and introduce the reason for inner classes.

Chapter 9: Holding Your Objects
It's a fairly simple program that only ever has a fixed quantity of objects with known lifetimes. In general your programs will always be creating new objects at a variety of times that will only be known at the time the program is running. In addition, you won't know until run-time the quantity or even the exact type of the objects you need. To solve the general programming problem, you need to create any number of objects, anytime, anywhere. This section explores in depth the tools that Java supplies to hold objects while you're working with them: the simple arrays and the more sophisticated containers (data structures) in the new Java 2 Collections Library (note that this section follows all the new Java 2 material in the book).

Chapter 10: Error Handling With Exceptions
The basic philosophy of Java is that "badly-formed code will not be run." As much as possible, the compiler catches problems, but sometimes the problems -- either programmer error or a natural error condition that occurs as part of the normal execution of the program -- can only be detected and dealt with at run-time. Java has exception handling to cope with any problems that arise while the program is running. This section examines how the keywords try, catch, throw, throws, and finally work in Java; when you should throw exceptions, and what to do when you catch them. In addition, you'll see Java's standard exceptions, how to create your own, what happens with exceptions in constructors, and how exception handlers are located.

Chapter 11: The Java I/O System
In theory, you can divide any program into 3 parts: input, process, and output. This implies that IO (input/output) is a pretty important part of the equation. In this section you'll learn about the different classes that Java provides for reading and writing files, blocks of memory, and the console. The distinction between binary IO and the character-based I/O (introduced in Java 1.1) will be shown. In addition, this section examines the process of taking an object, "streaming" it (so that it can be placed on disk or sent across a network) and reconstructing it, which is handled for you in Java version 1.1 and 2.

Chapter 12: Run-Time Type Identification
Run-time type identification (RTTI) lets you find the exact type of an object when you only have a pointer or reference to the base type. Normally, you'll want to intentionally ignore the exact type of an object and let Java's dynamic binding mechanism implement the correct behavior for that type. But occasionally it is very helpful to know the exact type of an object for which you only have a base pointer; often this information allows you to perform a special-case operation more efficiently. This section explains what RTTI is for, how to use it, and how to get rid of it when it doesn't belong there.

Chapter 13: Creating Windows and Applets with Swing
Java 2 comes with the Swing Library, which is a set of classes that handle windowing in a portable fashion; these windowing programs can either be applets or stand-alone applications. Swing is probably the best design for a GUI library that I've seen. This chapter is an introduction to the Swing library and the creation of World-Wide-Web "applets," as well as stand-alone applications. Finally, the very important "JavaBeans" technology is introduced, which is fundamental for the creation of Rapid-Application Development (RAD) application building tools.

Chapter 14: Multiple Threads
Java provides a built-in facility to support multiple concurrent processes running within a single program (unless you have multiple processors on your machine, this is actually the appearance of several processes). Although these can be used anywhere, they are most powerful when trying to solve problems such as creating responsive user interfaces so that, for example, a user isn't prevented from pressing a button or entering data during a process. This section looks at the syntax and semantics of multithreading in Java.

Chapter 15: Distributed Computing
All the Java features and libraries seem to come together when you start writing programs to work across networks. This chapter explores communication across the Internet, and the classes that Java provides to make this easier. It also introduces Java’s Servlets, JSPs, Java DataBase Connectivity (JDBC) and Remote Method Invocation (RMI).


Thinking In Java: The Book

Here is the entire Thinking in Java, 2nd edition, so you can get a better feel for the material in the seminar, and for my writing & teaching style. You may want to read as much of it as possible before the seminar to enhance your understanding, since this will be the seminar material. You should bring your copy of the 2nd edition to the seminar, or at least the electronic version of the book (the print version also includes the Thinking in C CD ROM which prepares you for the seminar by giving you C fundamentals).

Click here to go to Thinking in Java, 2nd edition, book download

The Hands-On Java CD ROM

This is another resource you may choose to review before the seminar, since it contains the audio lectures and slides from the seminar. Many people have found it to be helpful. You will receive a copy at the seminar, but if you request it we can send yours to you as soon as we receive payment for the seminar.


Prerequisites

This course assumes you have programming familiarity and comfort with the C language syntax, so you understand that a program is a collection of statements, the idea of a subroutine/function/macro, control statements like "if" and looping constructs like "while," etc. However, you may have learned this in many places, such as programming with a macro language or a tool like Perl. Just so long as you've programmed to the point where you feel comfortable with the basic ideas of programming, and can read C syntax easily. If you haven't been exposed to C, Chapter 3 in Thinking in Java will give you the essentials, but MindView, Inc. has created a CD ROM called Thinking in C: Foundations for Java & C++ which is specifically designed to bring you up to speed on the C syntax necessary to understand Java -- without bogging you down with needless details (note that this CD is packaged with the printed 2nd edition of Thinking in Java, which you should bring to the seminar, either the print version or the electronic version). Of course, the seminar will be easier for the experienced C programmers and more so for the C++ programmers, but if you're not already comfortable with either of those, just plan to study C before you come. I'll be introducing the concepts of object-oriented programming so you'll learn those in class, and the first exercises will be fairly straightforward so you can get up to speed easily. On the other hand, this is a challenging course; we'll move through the fundamental features of the Java language, with exercises, in five days. My goal is to give you enough learning experiences to push you to your limit, but not beyond. Sort of a "Java boot camp." You should come away tired but happy.


What to bring

You should have the electronic JDK documentation from http://java.sun.com loaded onto your computer as a reference.

Bring your copy of Thinking in Java, since that's the book that the course is based upon. You can use the free electronic version rather than buying the book, if you choose (but the electronic version does not include the "Thinking in C" CD ROM, so you should be comfortable with C if you choose this approach).

Any other books or learning resources you like.

Once you are registered and have paid you can request that your copy of the Hands-On Java Seminar Multimedia CD be sent to you early so that you may review it before coming to the seminar. This contains the lectures and slides from the seminar (some of the material in the live seminar is newer than that on the CD, but the bulk of the CD material is still quite useful).

Your notebook computer with Windows 95/98/NT (Java only works on a 32-bit platform). Linux will also work. There will be power cords and power strips provided on site.

You should pre-load your favorite Java development environment (a visual environment is useful, but not necessary – you can just download the most recent JDK from http://java.sun.com and use a text editor, but JPad is ideal), and please test it by compiling and running the first example in Thinking in Java.

I highly recommend that you install JPad, which makes the creation and compilation of examples such as the ones we do in class quite simple (JPad is available with a 15-day free trial). There are several windowed Java development environments available now, and you may also choose one of those (The free download of JBuilder 3.5 from Borland, or of Forte, from http://java.sun.com, are both popular choices), although for most examples don't require such horsepower and JPad will be fine.

OR

A friend whom you want to work with who has the above installation. If you come "stag" you may find such a friend at the seminar, but there's no guarantee.

OR

Nothing, if you just want to hear the lectures and wander about inside or outside during the lab exercises. But be forewarned that the exercises will probably be half of the experience, and the cost is the same whether you do them or not. It's worth the struggle to get a computer. MindView, Inc. has two notebook computers available for rent if you cannot locate one of your own.


The Experience

Because of all the seminars I've given, I've learned that the quality of the environment is important, so when creating my own seminars, I want to make sure we both have a good experience. To that end, I've tried to find interesting and relaxing locations and to create a schedule that allows you to enjoy yourself.

To keep from wasting your time with long lunch periods, we'll have an "integrated lunch" where food will be catered. This way you can have shorter days, and more time to recover from each information-packed day. I have always been a cook, so the quality of food is quite important to me and I use good caterers. In these locations there will also be a continental breakfast and afternoon snack.

The daily schedule

When the seminar is held in a city, we'll be starting at 9 am each day and learning for 7 hours. Continental breakfast will start at 8:30 am and we'll finish promptly at 4 p.m. leaving you fresh for the evening.

Special schedule in Crested Butte: 8am - 12 am, 4 - 6:30 pm. with a mid-day break (weather permitting, we'll have a hike or other activity during the middle of the day).

Sign-in will begin at 8:30 am on Monday (7:30 am in Crested Butte; Breakfast/Coffee is just around the corner at Camp4Coffee, whenever they are open).


Java is a registered trademark of Sun Microsystems. It's also an island in Indonesia.