|
|||||
![]() Thinking
in Java,
2nd Edition, Release
11
To be
published by Prentice-Hall mid-June,
2000
Bruce
Eckel, President,
MindView,
Inc.
Planet
PDF brings you the Portable
Document
Format
(PDF) version of Thinking in
Java (2nd
Edition).
Planet PDF is the premier
PDF-related
site
on the web. There is news,
software, white
papers,
interviews, product reviews, Web
links,
code
samples, a forum, and regular
articles by
many
of the most
prominent and respected PDF
experts
in the world.
Visit our sites for
more detail:
![]() Thinking
in
Java
Second
Edition
Bruce
Eckel
President,
MindView, Inc.
![]() Comments
from readers:
Much
better
than any other Java
book I've seen. Make
that "by an order of
magnitude"...
very complete, with
excellent right-to-the-point
examples
and
intelligent, not dumbed-down,
explanations ... In contrast to
many
other
Java books I found it to be
unusually mature,
consistent,
intellectually
honest, well-written and
precise. IMHO, an ideal book
for
studying
Java. Anatoly
Vorobey, Technion University,
Haifa,
Israel
One
of the absolutely best
programming tutorials I've
seen for any
language.
Joakim
Ziegler, FIX sysop
Thank
you for your wonderful,
wonderful book on Java.
Dr.
Gavin
Pillay,
Registrar, King Edward VIII Hospital,
South Africa
Thank
you again for your
awesome book. I was really
floundering (being a
non-C
programmer), but your book
has brought me up to speed as
fast as
I
could read it. It's
really cool to be able to
understand the
underlying
principles
and concepts from the
start, rather than having to
try to build
that
conceptual model through
trial and error. Hopefully I
will be able to
attend
your seminar in the
not-too-distant future. Randall
R. Hawley,
Automation
Technician, Eli Lilly &
Co.
The
best computer book writing I
have seen. Tom
Holland
This
is one of the best books
I've read about a
programming language...
The
best book ever written on
Java. Ravindra
Pai, Oracle
Corporation,
SUNOS product line
This
is the best book on Java
that I have ever found!
You have done a
great
job. Your depth is amazing.
I will be purchasing the
book when it is
published.
I have been learning Java
since October 96. I have
read a few
books,
and consider yours a "MUST
READ." These past few
months we
have
been focused on a product
written entirely in Java.
Your book has
helped
solidify topics I was shaky
on and has expanded my
knowledge
base.
I have even used some of
your explanations as information
in
interviewing
contractors to help our
team. I have found how
much Java
knowledge
they have by asking them
about things I have learned
from
reading
your book (e.g., the
difference between arrays
and Vectors). Your
![]() book
is great! Steve
Wilkinson, Senior Staff Specialist,
MCI
Telecommunications
Great
book. Best book on Java I
have seen so far. Jeff
Sinclair,
Software
Engineer, Kestral Computing
Thank
you for Thinking
in Java. It's
time someone went beyond
mere
language
description to a thoughtful, penetrating
analytic tutorial
that
doesn't
kowtow to The Manufacturers.
I've read almost all
the others--
only
yours and Patrick Winston's
have found a place in my
heart. I'm
already
recommending it to customers. Thanks
again. Richard
Brooks,
Java
Consultant, Sun Professional Services,
Dallas
Other
books cover the WHAT of
Java (describing the syntax
and the
libraries)
or the HOW of Java
(practical programming
examples).
Thinking
in Java is the
only book I know that
explains the WHY of
Java;
why
it was designed the way it
was, why it works the
way it does, why it
sometimes
doesn't work, why it's
better than C++, why
it's not. Although
it
also does a good job of
teaching the what and
how of the language,
Thinking
in Java is definitely
the thinking person's choice
in a Java book.
Robert
S. Stephenson
Thanks
for writing a great book.
The more I read it the
better I like it. My
students
like it, too. Chuck
Iverson
I
just want to commend you
for your work on Thinking
in Java. It is
people
like you that dignify
the future of the Internet
and I just want to
thank
you for your effort. It is
very much appreciated.
Patrick
Barrell,
Network
Officer Mamco, QAF Mfg. Inc.
Most
of the Java books out
there are fine for a
start, and most just
have
beginning
stuff and a lot of the
same examples. Yours is by
far the best
advanced
thinking book I've seen.
Please publish it soon! ...
I also bought
Thinking
in C++ just
because I was so impressed
with Thinking
in Java.
George
Laframboise, LightWorx Technology
Consulting, Inc.
I
wrote to you earlier about
my favorable impressions regarding
your
Thinking
in C++ (a book
that stands prominently on my
shelf here at
work).
And today I've been
able to delve into Java
with your e-book in
my
virtual
hand, and I must say
(in my best Chevy Chase
from Modern
Problems)
"I like it!" Very
informative and explanatory,
without reading
![]() like
a dry textbook. You cover
the most important yet
the least covered
concepts
of Java development: the
whys. Sean
Brady
Your
examples are clear and
easy to understand. You took
care of many
important
details of Java that can't
be found easily in the weak
Java
documentation.
And you don't waste
the reader's time with
the basic facts
a
programmer already knows.
Kai
Engert, Innovative
Software,
Germany
I'm
a great fan of your
Thinking
in C++ and
have recommended it to
associates.
As I go through the electronic
version of your Java book,
I'm
finding
that you've retained the
same high level of writing.
Thank you!
Peter
R. Neuwald
VERY
well-written Java book...I
think you've done a GREAT
job on it. As
the
leader of a Chicago-area Java
special interest group, I've
favorably
mentioned
your book and Web
site several times at our
recent meetings. I
would
like to use Thinking
in Java as the
basis for a part of each
monthly
SIG
meeting, in which we review
and discuss each chapter in
succession.
Mark
Ertes
I
really appreciate your work
and your book is good. I
recommend it here
to
our users and Ph.D.
students. Hugues
Leroy // Irisa-Inria Rennes
France,
Head of Scientific Computing and Industrial
Tranfert
OK,
I've only read about 40
pages of Thinking
in Java, but
I've already
found
it to be the most clearly
written and presented
programming book
I've
come across...and I'm a
writer, myself, so I am probably a
little
critical.
I have Thinking
in C++ on order
and can't wait to crack
it--I'm
fairly
new to programming and am
hitting learning curves
head-on
everywhere.
So this is just a quick note
to say thanks for your
excellent
work.
I had begun to burn a little
low on enthusiasm from
slogging
through
the mucky, murky prose of
most computer books--even
ones that
came
with glowing recommendations. I
feel a whole lot better
now.
Glenn
Becker, Educational Theatre
Association
Thank
you for making your
wonderful book available. I
have found it
immensely
useful in finally understanding
what I experienced as
confusing
in Java and C++. Reading
your book has been
very satisfying.
Felix
Bizaoui, Twin Oaks Industries, Louisa,
Va.
![]() I
must congratulate you on an
excellent book. I decided to
have a look at
Thinking
in Java based on my
experience with Thinking
in C++, and
I
was
not disappointed. Jaco
van der Merwe, Software
Specialist,
DataFusion
Systems Ltd, Stellenbosch, South
Africa
This
has to be one of the best
Java books I've seen.
E.F.
Pritchard,
Senior
Software Engineer, Cambridge Animation
Systems Ltd.,
United
Kingdom
Your
book makes all the
other Java books I've
read or flipped
through
seem
doubly useless and
insulting. Brett
g Porter, Senior
Programmer,
Art & Logic
I
have been reading your
book for a week or two
and compared to the
books
I have read earlier on Java,
your book seems to have
given me a
great
start. I have recommended
this book to a lot of my
friends and they
have
rated it excellent. Please
accept my congratulations for
coming out
with
an excellent book. Rama
Krishna Bhupathi, Software
Engineer,
TCSI Corporation, San Jose
Just
wanted to say what a
"brilliant" piece of work
your book is. I've
been
using
it as a major reference for
in-house Java work. I find
that the table
of
contents is just right for
quickly locating the section
that is required.
It's
also nice to see a book
that is not just a rehash of
the API nor
treats
the
programmer like a dummy.
Grant Sayer,
Java Components
Group
Leader, Ceedata Systems Pty Ltd,
Australia
Wow!
A readable, in-depth Java
book. There are a lot of
poor (and
admittedly
a couple of good) Java books
out there, but from
what I've
seen
yours is definitely one of
the best. John
Root, Web Developer,
Department
of Social Security, London
I've
*just* started Thinking
in Java. I expect it
to be very good because
I
really
liked Thinking
in C++ (which I
read as an experienced
C++
programmer,
trying to stay ahead of the
curve). I'm somewhat
less
experienced
in Java, but expect to be
very satisfied. You are a
wonderful
author.
Kevin K.
Lewis, Technologist, ObjectSpace,
Inc.
I
think it's a great book. I
learned all I know about
Java from this
book.
Thank
you for making it available
for free over the
Internet. If you
wouldn't
have I'd know nothing
about Java at all. But
the best thing is
![]() that
your book isn't a commercial
brochure for Java. It also
shows the bad
sides
of Java. YOU have done a
great job here. Frederik Fix,
Belgium
I
have been hooked to your
books all the time. A
couple of years ago,
when
I
wanted to start with C++, it
was C++
Inside & Out which
took me
around
the fascinating world of
C++. It helped me in getting
better
opportunities
in life. Now, in pursuit of
more knowledge and when
I
wanted
to learn Java, I bumped into
Thinking
in Java--no
doubts in my
mind
as to whether I need some
other book. Just fantastic.
It is more like
rediscovering
myself as I get along with
the book. It is just a month
since I
started
with Java, and heartfelt
thanks to you, I am understanding
it
better
now. Anand
Kumar S., Software
Engineer,
Computervision,
India
Your
book stands out as an
excellent general introduction.
Peter
Robinson,
University of Cambridge Computer
Laboratory
It's
by far the best material I
have come across to help me
learn Java and I
just
want you to know how
lucky I feel to have found
it. THANKS! Chuck
Peterson,
Product Leader, Internet Product Line,
IVIS
International
The
book is great. It's the
third book on Java I've
started and I'm
about
two-thirds
of the way through it now. I
plan to finish this one. I
found out
about
it because it is used in some
internal classes at Lucent
Technologies
and
a friend told me the book
was on the Net. Good
work. Jerry
Nowlin,
MTS,
Lucent Technologies
Of
the six or so Java books
I've accumulated to date,
your Thinking
in
Java
is
by far the best and
clearest. Michael
Van Waas, Ph.D.,
President,
TMR Associates
I
just want to say thanks
for Thinking
in Java. What a
wonderful book
you've
made here! Not to mention
downloadable for free! As a
student I
find
your books invaluable (I
have a copy of C++
Inside Out, another
great
book
about C++), because they
not only teach me the
how-to, but also
the
whys,
which are of course very
important in building a strong
foundation
in
languages such as C++ or
Java. I have quite a lot of
friends here who
love
programming just as I do,
and I've told them
about your books.
They
think
it's great! Thanks again! By
the way, I'm Indonesian
and I live in
![]() Java.
Ray
Frederick Djajadinata, Student at Trisakti
University,
Jakarta
The
mere fact that you
have made this work
free over the Net
puts me into
shock.
I thought I'd let you
know how much I appreciate
and respect what
you're
doing. Shane
LeBouthillier, Computer
Engineering
student,
University of Alberta, Canada
I
have to tell you how
much I look forward to
reading your monthly
column.
As a newbie to the world of
object oriented programming,
I
appreciate
the time and thoughtfulness
that you give to even
the most
elementary
topic. I have downloaded
your book, but you
can bet that I
will
purchase
the hard copy when it is
published. Thanks for all of
your help.
Dan
Cashmer, B. C. Ziegler &
Co.
Just
want to congratulate you on a
job well done. First I
stumbled upon
the
PDF version of Thinking
in Java. Even
before I finished reading
it, I
ran
to the store and found
Thinking
in C++. Now, I
have been in the
computer
business for over eight
years, as a consultant,
software
engineer,
teacher/trainer, and recently as
self-employed, so I'd like
to
think
that I have seen enough
(not "have seen it all,"
mind you, but
enough).
However, these books cause
my girlfriend to call me a
"geek."
Not
that I have anything against
the concept--it is just that
I thought this
phase
was well beyond me.
But I find myself truly
enjoying both books,
like
no other computer book I
have touched or bought so
far. Excellent
writing
style, very nice
introduction of every new
topic, and lots of
wisdom
in the books. Well done.
Simon
Goland,
simonsez@smartt.com,
Simon Says Consulting, Inc.
I
must say that your
Thinking
in Java is great!
That is exactly the kind
of
documentation
I was looking for.
Especially the sections
about good and
poor
software design using Java.
Dirk Duehr, Lexikon
Verlag,
Bertelsmann
AG, Germany
Thank
you for writing two
great books (Thinking
in C++, Thinking
in
Java).
You have helped me immensely
in my progression to object
oriented
programming. Donald
Lawson, DCL Enterprises
Thank
you for taking the
time to write a really
helpful book on Java.
If
teaching
makes you understand
something, by now you must
be pretty
pleased
with yourself. Dominic
Turner, GEAC Support
![]() It's
the best Java book I
have ever read--and I read
some. Jean-Yves
MENGANT,
Chief Software Architect NAT-SYSTEM,
Paris,
France
Thinking
in Java gives
the best coverage and
explanation. Very easy
to
read,
and I mean the code
fragments as well. Ron
Chan, Ph.D., Expert
Choice,
Inc., Pittsburgh PA
Your
book is great. I have read
lots of programming books
and your book
still
adds insights to programming in my
mind. Ningjian
Wang,
Information
System Engineer, The Vanguard
Group
Thinking
in Java is an
excellent and readable book.
I recommend it to all
my
students. Dr.
Paul Gorman, Department of Computer
Science,
University
of Otago, Dunedin, New Zealand
You
make it possible for the
proverbial free lunch to
exist, not just a
soup
kitchen
type of lunch but a gourmet
delight for those who
appreciate good
software
and books about it.
Jose
Suriol, Scylax
Corporation
Thanks
for the opportunity of
watching this book grow
into a masterpiece!
IT
IS THE BEST book on the
subject that I've read or
browsed. Jeff
Lapchinsky,
Programmer, Net Results
Technologies
Your
book is concise, accessible
and a joy to read. Keith
Ritchie, Java
Research
& Development Team, KL Group Inc.
It
truly is the best book
I've read on Java! Daniel
Eng
The
best book I have seen on
Java! Rich
Hoffarth, Senior Architect,
West
Group
Thank
you for a wonderful book.
I'm having a lot of fun
going through the
chapters.
Fred Trimble, Actium
Corporation
You
have mastered the art of
slowly and successfully
making us grasp the
details.
You make learning VERY
easy and satisfying. Thank
you for a
truly
wonderful tutorial. Rajesh
Rau, Software Consultant
Thinking
in Java rocks
the free world! Miko
O'Sullivan, President,
Idocs
Inc.
![]() About
Thinking
in C++:
Best
Book! Winner of the
1995
Software Development Magazine Jolt
Award!
"This
book is a tremendous achievement.
You owe it to yourself
to
have
a copy on your shelf. The
chapter on iostreams is the
most
comprehensive
and understandable treatment of
that subject I've
seen
to
date."
Al
Stevens
Contributing
Editor, Doctor
Dobbs Journal
"Eckel's
book is the only one to so
clearly explain how to
rethink
program
construction for object
orientation. That the book
is also an
excellent
tutorial on the ins and
outs of C++ is an added
bonus."
Andrew
Binstock
Editor,
Unix
Review
"Bruce
continues to amaze me with
his insight into C++,
and Thinking
in
C++ is his
best collection of ideas
yet. If you want clear
answers to
difficult
questions about C++, buy
this outstanding
book."
Gary
Entsminger
Author,
The
Tao of Objects
"Thinking
in C++ patiently
and methodically explores
the issues of
when
and how to use inlines,
references, operator
overloading,
inheritance,
and dynamic objects, as well
as advanced topics such
as
the
proper use of templates,
exceptions and multiple
inheritance. The
entire
effort is woven in a fabric
that includes Eckel's own
philosophy
of
object and program design. A
must for every C++
developer's
bookshelf,
Thinking
in C++ is the
one C++ book you
must have if
you're
doing serious development
with C++."
Richard
Hale Shaw
Contributing
Editor, PC Magazine
![]() Thinking
in
Java
Second
Edition
Bruce
Eckel
President,
MindView, Inc.
Prentice
Hall
Upper
Saddle River, New Jersey
07458
www.phptr.com
![]() Library
of Congress Cataloging-in-Publication Data
Eckel,
Bruce.
Thinking
in Java / Bruce Eckel.--2nd ed.
p.
cm.
ISBN
0-13-027363-5
1.
Java (Computer program language) I. Title.
QA76.73.J38E25
2000
005.13'3--dc21
00-037522
CIP
Editorial/Production
Supervision: Nicholas
Radhuber
Acquisitions
Editor: Paul
Petralia
Manufacturing
Manager: Maura
Goldstaub
Marketing
Manager: Bryan
Gambrel
Cover
Design: Daniel
Will-Harris
Interior
Design: Daniel
Will-Harris, www.will-harris.com
�
2000 by Bruce Eckel,
President, MindView,
Inc.
Published
by Prentice Hall PTR
Prentice-Hall,
Inc.
Upper
Saddle River, NJ 07458
The
information in this book is distributed
on an "as is" basis, without
warranty. While every
precaution
has
been taken in the
preparation of this book,
neither the author nor
the publisher shall have
any liability
to
any person or entitle with
respect to any liability, loss or
damage caused or alleged to be
caused directly
or
indirectly by instructions contained in
this book or by the computer
software or hardware
products
described
herein.
All
rights reserved. No part of
this book may be reproduced, in any
form or by any means,
without
permission
in writing from the
publisher.
Prentice-Hall
books are widely used by
corporations and government
agencies for training,
marketing, and
resale.
The publisher offers
discounts on this book when
ordered in bulk quantities.
For more information,
contact
the Corporate Sales
Department at 800-382-3419, fax:
201-236-7141, email:
corpsales@prenhall.com
or
write: Corporate Sales
Department, Prentice Hall
PTR, One Lake
Street,
Upper
Saddle River, New Jersey
07458.
Java
is a registered trademark of Sun
Microsystems, Inc. Windows 95
and Windows NT are
trademarks of
Microsoft
Corporation. All other
product names and company
names mentioned herein are
the property of
their
respective owners.
Printed
in the United States of
America
10
9 8 7 6 5 4 3 2 1
ISBN
0-13-027363-5
Prentice-Hall
International (UK) Limited,
London
Prentice-Hall
of Australia Pty. Limited,
Sydney
Prentice-Hall
Canada, Inc., Toronto
Prentice-Hall
Hispanoamericana, S.A., Mexico
Prentice-Hall
of India Private Limited,
New
Delhi
Prentice-Hall
of Japan, Inc., Tokyo
Pearson
Education Asia Ltd.,
Singapore
Editora
Prentice-Hall do Brasil, Ltda.,
Rio
de Janeiro
![]() Check
for
in-depth details
and
the date and
location
of
the next
Hands-On
Java Seminar
�
Based on
this book
�
Taught by
Bruce Eckel
�
Personal
attention from Bruce
Eckel
and
his seminar
assistants
�
Includes
in-class programming
exercises
�
Intermediate/Advanced
seminars also offered
�
Hundreds
have already enjoyed this
seminar--
see
the Web site for their
testimonials
![]() Bruce
Eckel's Hands-On Java Seminar
Multimedia
CD
It's
like coming to the
seminar!
Available
at
!
The
Hands-On
Java Seminar captured on a
Multimedia CD!
!
Overhead
slides and synchronized
audio voice narration for
all
the
lectures. Just play it to
see and hear the
lectures!
!
Created
and narrated by Bruce
Eckel.
!
Based on
the material in this
book.
Demo
lecture available at
!
![]() Dedication
To
the person who, even
now,
is
creating the next great
computer language
![]() ![]() Overview
Preface
1
191
243
7:
Polymorphism
349
9:
Holding Your
Objects
407
10:
Error Handling with
Exceptions
531
11:
The Java
I/O System
14:
Multiple Threads
903
A:
Passing & Returning
Objects
B:
The Java Native Interface
(JNI)
C:
Java Programming
Guidelines
D:
Resources
Index
1099
![]() What's
Inside
implementation.................37
Preface
1
Preface
to the 2nd edition .... 4
The
CD ROM....................... 7
Introduction
with
polymorphism .......... 44
Exercises
........................... 19
Multimedia
CD ROM ........ 19
The
housekeeping dilemma:
Coding
standards .........................
22
who
should clean up?
................... 55
Seminars
and
Errors
................................ 23
What
is the Web?.........................
60
Internet
contributors ...................
28
Client-side
programming .............63
1:
Introduction
to
Objects
A
separate arena:
The
progress
applications
.................................. 71
An
object
has
an
interface .......................
32
Phase
1: What are we making?.....
75
Phase
2: How will we build it?
..... 79
Phase
3: Build the
core.................83
Reusing
the
Phase
4: Iterate the use
cases.......84
![]() The
static
keyword
.....................117
Comments
and embedded
Comment
documentation .......... 123
Syntax
......................................... 124
Embedded
HTML....................... 125
@see:
referring to
other
classes................................ 125
Class
documentation tags........... 126
Management
obstacles ................ 95
Variable
documentation tags .....
127
Method
documentation tags ......
127
Documentation
example ............
128
Coding
style .....................
129
Summary
.........................130
an
Object
Exercises..........................130
You
manipulate objects
3:
Controlling
Program
Flow
You
must
create
all
the objects ..................
103
You
never need to
Relational
operators ....................141
Bitwise
operators........................ 146
types:
class ......................
110
The
comma operator ..................
152
when
using operators .................
153
![]() Exercises.........................
240
package:
Creating
unique
do-while.......................................173
break
and continue .....................
175
Using
imports to
&
Cleanup
public:
interface access.............256
Method
overloading........ 194
Distinguishing
implementation...............261
overloaded
methods....................196
Overloading
with primitives
.......197
Summary
.........................267
return
values ..............................
202
6:
Reusing Classes
271
The
this
keyword.......................
203
What
is finalize(
) for?.............208
Combining
composition
You
must perform cleanup
........ 209
The
death condition
....................214
How
a garbage
Name
hiding ..............................
286
Member
initialization .....
219
Choosing
composition
Specifying
initialization ..............221
Constructor
initialization........... 223
Array
initialization.......... 231
![]() 8:
Interfaces &
Inner
Classes
"Multiple
inheritance"
Extending
an interface
class
loading....................304
Grouping
constants ....................359
Exercises
......................... 307
7:
Polymorphism
311
Upcasting
revisited ..........311
The
link to the outer class
..........376
Producing
the right
behavior......316
static
inner
classes ....................379
overloading
..................... 324
and
methods ...................
325
be
overridden?............................385
Why
inner classes? ....................
388
Exercises.........................
403
9:
Holding
Your
Objects
Downcasting
and run-time
Arrays
............................. 407
Arrays
are first-class objects
..... 409
![]() Choosing
between Sets
..............506
Utilities
............................ 512
Introduction
to
Filling
containers .......................
442
Container
disadvantage:
unknown
type .................450
Sometimes
it works anyway.......
452
Making
a type-conscious
ArrayList..................................
454
Iterators
.......................... 456
Container
taxonomy .......460
10:
Error Handling
functionality....................463
List
functionality............
467
Making
a stack
from
a LinkedList.....................471
Exception
handlers..................... 535
from
a LinkedList....................
472
Set
functionality
............. 473
SortedSet
.................................
476
Map
functionality...........
476
SortedMap...............................
482
Catching
any exception
..............543
Hashing
and hash codes ............
482
Overriding
hashCode(
) ..........
492
Holding
references..........495
The
WeakHashMap
...............
498
The
special case of
Iterators
revisited........... 500
RuntimeException.................550
Choosing
an
Performing
cleanup
![]() Exception
restrictions .....
558
Compression...................
606
11:
The Java
I/O
System
Controlling
serialization............. 619
Tokenizing
input ............
639
Checking
capitalization style......645
12:
Run-time
Type
Identification
Reading
from an InputStream
The
need for RTTI ..........
659
Off
by
itself:
Exercises.........................
686
13:
Creating Windows
I/O
streams .....................
594
&
Applets
Applet
restrictions
......................692
Application
frameworks .............694
Running
applets inside
![]() Pop-up
menus
............................766
Running
applets from
Swing
components .....................
779
A
display framework ..................
702
Trees
........................................... 781
GridLayout
.................................. 715
techniques
.......................794
Separating
business
A
canonical form
........................799
Tracking
multiple events ...........
730
What
is a Bean?
..........................801
Buttons
....................................... 734
Icons
...........................................
738
A
more sophisticated Bean.........
811
Tool
tips......................................
740
Text
fields...................................
740
Borders
....................................... 743
JScrollPanes...............................
744
A
mini-editor.............................. 747
Check
boxes................................
748
14:
Multiple Threads
Radio
buttons.............................
750
Combo
boxes
(drop-down
lists) ........................
751
List
boxes ...................................
753
Tabbed
panes
..............................755
Message
boxes............................ 756
Combining
the thread
Menus.........................................
759
![]() Servlets
........................... 948
Improperly
accessing
Running
the
Implicit
objects
...........................962
Reading
and
Thread
groups ............................
882
attributes
and scope ..................
968
Creating
and
Exercises
......................... 901
modifying
cookies....................... 971
JSP
summary..............................972
RMI
(Remote Method
Computing
903
Invocation)
......................973
Remote
interfaces.......................973
Implementing
the
remote
interface
.........................974
Using
the remote object
.............979
Using
URLs from
CORBA
........................... 980
An
example ................................
983
Java
Database
Java
Applets and CORBA..........
989
CORBA
vs. RMI .........................
989
Enterprise
JavaBeans..... 990
A
GUI version
JavaBeans
vs. EJBs ....................
991
The
EJB
specification.................992
seems
so complex.......................
938
The
pieces of an
![]() EJB
component..........................
994
EJB
summary...........................
1003
Creating
read-only classes........1049
Jini
in context ..........................
1003
The
drawback
to
immutability.........................1050
What
is Jini? ............................
1004
How
Jini works ........................
1005
Immutable
Strings..................
1052
The
discovery process ..............
1006
The
String
and
StringBuffer
classes
.............. 1056
The
join process .......................
1006
The
lookup process ..................
1007
Strings
are special...................1060
Summary
...................... 1060
Separation
of interface
Exercises........................1062
and
implementation.................
1008
Abstracting
B:
The Java Native
distributed
systems.................. 1009
Interface
(JNI)
1065
Summary.......................
1010
Calling
a
Exercises
....................... 1010
native
method................1066
A:
Passing &
The
header file
Returning
Objects
1013
generator:
javah........................ 1067
Passing
Name
mangling and
references
around ......... 1014
function
signatures...................1068
Aliasing......................................1014
Implementing
your DLL...........1068
Making
local copies........1017
Accessing
JNI functions:
the
JNIEnv
argument
..1069
Pass
by value
.............................1018
Cloning
objects..........................1018
Accessing
Java Strings .............
1071
Passing
and
Adding
cloneability
using
Java objects..........
1071
to
a class ...................................
1020
JNI
and
Successful
cloning.................... 1022
Java
exceptions .............
1074
The
effect of
JNI
and threading .........
1075
Object.clone(
)......................
1025
Using
a preexisting
Cloning
a composed object
.......1027
code
base .......................
1075
A
deep copy
Additional
with
ArrayList........................
1030
information
................... 1076
Deep
copy via serialization
...... 1032
Adding
cloneability
![]() C:
Java Programming
Books
............................. 1091
Guidelines
1077
Analysis
& design......................1093
Python.......................................
1095
Design
........................... 1077
My
own list of
books.................1096
Implementation
............ 1084
Index
1099
D:
Resources
1091
Software
........................ 1091
![]() Preface
I
suggested to my brother Todd,
who is making the
leap
from
hardware into programming,
that the next
big
revolution
will be in genetic
engineering.
We'll
have microbes designed to
make food, fuel, and
plastic; they'll
clean
up
pollution and in general
allow us to master the
manipulation of the
physical
world for a fraction of what
it costs now. I claimed that
it would
make
the computer revolution look
small in comparison.
Then
I realized I was making a
mistake common to science
fiction writers:
getting
lost in the technology
(which is of course easy to do in
science
fiction).
An experienced writer knows
that the story is never
about the
things;
it's about the people.
Genetics will have a very
large impact on our
lives,
but I'm not so sure it
will dwarf the computer
revolution (which
enables
the genetic revolution)--or at
least the information
revolution.
Information
is about talking to each
other: yes, cars and
shoes and
especially
genetic cures are important,
but in the end those
are just
trappings.
What truly matters is how we
relate to the world. And so
much
of
that is about
communication.
This
book is a case in point. A
majority of folks thought I
was very bold or
a
little crazy to put the
entire thing up on the Web.
"Why would anyone
buy
it?" they asked. If I had
been of a more conservative
nature I wouldn't
have
done it, but I really
didn't want to write another
computer book in
the
same old way. I didn't
know what would happen
but it turned out to
be
the smartest thing I've
ever done with a
book.
For
one thing, people started
sending in corrections. This
has been an
amazing
process, because folks have
looked into every nook
and cranny
and
caught both technical and
grammatical errors, and I've
been able to
eliminate
bugs of all sorts that I
know would have otherwise
slipped
through.
People have been simply
terrific about this, very
often saying
"Now,
I don't mean this in a
critical way..." and then
giving me a
collection
of errors I'm sure I never
would have found. I feel
like this has
1
Table of Contents:
|
|||||