The Hands-On Java Seminar
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 dont 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
Javas Servlets, JSPs, Java DataBase Connectivity
(JDBC) and Remote Method Invocation (RMI).
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. |