This book is about the Java™ language and programming environment. If you've been at all
active on the Internet in the past few years, you've heard a lot about Java. It's one of the most
exciting developments in the history of the Internet, rivaling the creation of the World Wide Web.
Java became the darling of the Internet programming community as soon as the alpha version
was released. Immediately, thousands of people were writing Java applets to add to their web
pages. Interest in Java only grew with time, and support for Java in Netscape Navigator
guaranteed it would be a permanent part of the Net scene.
What, then, is Java? Java is a network programming language that was developed by Sun
Microsystems. It's already in widespread use for creating animated and interactive web pages.
However, this is only the start. The Java language and environment are rich enough to support
entirely new kinds of applications, like dynamically extensible browsers and mobile agents. There
are entirely new kinds of computer platforms being developed around Java (handheld devices
and network computers) that download all their software over the network. In the coming years,
we'll see what Java is capable of doing; fancy web pages are fun and interesting, but they
certainly aren't the end of the story. If Java is successful (and that isn't a foregone conclusion), it
could change the way we think about computing in fundamental ways.
This book gives you a head start on a lot of Java fundamentals. Learning Javaattempts to live up
to its name by mapping out the Java language, its class libraries, programming techniques, and
idioms. We'll dig deep into interesting areas and at least scratch the surface of the rest. Other
titles in the O'Reilly & Associates Java Series will pick up where we leave off and provide more
comprehensive information on specific areas and applications of Java.
Whenever possible, we'll provide meaningful, realistic examples and avoid cataloging features.
The examples are simple but hint at what can be done. We won't be developing the next great
"killer app" in these pages, but we hope to give you a starting point for many hours of
experimentation and tinkering that will lead you to learn more on your own.
566 trang |
Chia sẻ: ttlbattu | Lượt xem: 2677 | Lượt tải: 4
Bạn đang xem trước 20 trang tài liệu Ebook Learning Java, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Learning Java
Copyright
Table of Contents
Index
Full Description
About the Author
Reviews
Examples
Reader reviews
Errata
Learning Java
Pat Niemeyer
Jonathan Knudsen
Publisher: O'Reilly
First Edition May 2000
ISBN: 1-56592-718-4, 722 pages
For programmers either just migrating to Java or already working
steadily in the forefront of Java development, L arning Java gives a
clear, systematic overview of the Java 2 Standard Edition. It covers
the essentials of hot topics like Swing and JFC; describes new tools
for signing applets; and shows how to write networked clients and
servers, servlets, and JavaBeans as state-of-the-art user interfaces.
Includes a CD-ROM containing example code and JBuilder for
Windows and Solaris.
Learning Java
Preface
New Developments
Audience
Using This Book
Getting Wired
Conventions Used in This Book
How to Contact Us
Acknowledgments
1. Yet Another Language?
1.1 Enter Java
1.2 A Virtual Machine
1.3 Java Compared with Other Languages
1.4 Safety of Design
1.5 Safety of Implementation
1.6 Application and User-Level Security
1.7 Java and the World Wide Web
1.8 Java as a General Application Language
1.9 A Java Road Map
2. A First Application
2.1 HelloJava1
2.2 HelloJava2: The Sequel
2.3 HelloJava3: The Button Strikes!
2.4 HelloJava4: Netscape's Revenge
3. Tools of the Trade
3.1 The Java Interpreter
3.2 Policy Files
3.3 The Class Path
3.4 The Java Compiler
3.5 Java Archive (JAR) Files
4. The Java Language
4.1 Text Encoding
4.2 Comments
4.3 Types
4.4 Statements and Expressions
4.5 Exceptions
4.6 Arrays
5. Objects in Java
5.1 Classes
5.2 Methods
5.3 Object Creation
5.4 Object Destruction
6. Relationships Among Classes
6.1 Subclassing and Inheritance
6.2 Interfaces
6.3 Packages and Compilation Units
6.4 Visibility of Variables and Methods
6.5 Arrays and the Class Hierarchy
6.6 Inner Classes
7. Working with Objects and Classes
7.1 The Object Class
7.2 The Class Class
7.3 Reflection
8. Threads
8.1 Introducing Threads
8.2 Threads in Applets
8.3 Synchronization
8.4 Scheduling and Priority
8.5 Thread Groups
9. Basic Utility Classes
9.1 Strings
9.2 Math Utilities
9.3 Dates
9.4 Timers
9.5 Collections
9.6 Properties
9.7 The Security Manager
9.8 Internationalization
10. Input/Output Facilities
10.1 Streams
10.2 Files
10.3 Serialization
10.4 Data Compression
11. Network Programming with Sockets and RMI
11.1 Sockets
11.2 Datagram Sockets
11.3 Simple Serialized Object Protocols
11.4 Remote Method Invocation (RMI)
12. Programming for the Web
12.1 Uniform Resource Locators (URLs)
12.2 The URL Class
12.3 Web Browsers and Handlers
12.4 Talking to CGI Programs and Servlets
12.5 Implementing Servlets
13. Swing
13.1 Components
13.2 Containers
13.3 Events
13.4 Event Summary
13.5 Multithreading in Swing
14. Using Swing Components
14.1 Buttons and Labels
14.2 Checkboxes and Radio Buttons
14.3 Lists and Combo Boxes
14.4 Borders
14.5 Menus
14.6 The PopupMenu Class
14.7 The JScrollPane Class
14.8 The JSplitPane Class
14.9 The JTabbedPane Class
14.10 Scrollbars and Sliders
14.11 Dialogs
15. More Swing Components
15.1 Text Components
15.2 Trees
15.3 Tables
15.4 Desktops
15.5 Pluggable Look-and-Feel
15.6 Creating Custom Components
16. Layout Managers
16.1 FlowLayout
16.2 GridLayout
16.3 BorderLayout
16.4 BoxLayout
16.5 CardLayout
16.6 GridBagLayout
16.7 Nonstandard Layout Managers
16.8 Absolute Positioning
17. Drawing with the 2D API
17.1 The Big Picture
17.2 The Rendering Pipeline
17.3 A Quick Tour of Java 2D
17.4 Filling Shapes
17.5 Stroking Shape Outlines
17.6 Using Fonts
17.7 Displaying Images
17.8 Using Drawing Techniques
17.9 Printing
18. Working with Images and Other Media
18.1 Implementing an ImageObserver
18.2 Using a MediaTracker
18.3 Producing Image Data
18.4 Filtering Image Data
18.5 Working with Audio
18.6 Working with Movies
19. Java Beans
19.1 What's a Bean?
19.2 Building Beans
19.3 Hand-Coding with Beans
19.4 Putting Reflection to Work
19.5 BeanContext and BeanContextServices
19.6 The Java Activation Framework
19.7 Enterprise JavaBeans
20. Applets
20.1 The JApplet Class
20.2 The Tag
20.3 Using the Java Plug-in
20.4 Using Digital Signatures
21. Glossary
A. Content and Protocol Handlers
A.1 Writing a Content Handler
A.2 Writing a Protocol Handler
B. BeanShell: Simple Java Scripting
B.1 Running BeanShell
B.2 Java Statements and Expressions
B.3 BeanShell Commands
B.4 Scripted Methods and Objects
B.5 Learning More . . .
Colophon
Preface
This book is about the Java™ language and programming environment. If you've been at all
active on the Internet in the past few years, you've heard a lot about Java. It's one of the most
exciting developments in the history of the Internet, rivaling the creation of the World Wide Web.
Java became the darling of the Internet programming community as soon as the alpha version
was released. Immediately, thousands of people were writing Java applets to add to their web
pages. Interest in Java only grew with time, and support for Java in Netscape Navigator
guaranteed it would be a permanent part of the Net scene.
What, then, is Java? Java is a network programming language that was developed by Sun
Microsystems. It's already in widespread use for creating animated and interactive web pages.
However, this is only the start. The Java language and environment are rich enough to support
entirely new kinds of applications, like dynamically extensible browsers and mobile agents. There
are entirely new kinds of computer platforms being developed around Java (handheld devices
and network computers) that download all their software over the network. In the coming years,
we'll see what Java is capable of doing; fancy web pages are fun and interesting, but they
certainly aren't the end of the story. If Java is successful (and that isn't a foregone conclusion), it
could change the way we think about computing in fundamental ways.
This book gives you a head start on a lot of Java fundamentals. Learning Java attempts to live up
to its name by mapping out the Java language, its class libraries, programming techniques, and
idioms. We'll dig deep into interesting areas and at least scratch the surface of the rest. Other
titles in the O'Reilly & Associates Java Series will pick up where we leave off and provide more
comprehensive information on specific areas and applications of Java.
Whenever possible, we'll provide meaningful, realistic examples and avoid cataloging features.
The examples are simple but hint at what can be done. We won't be developing the next great
"killer app" in these pages, but we hope to give you a starting point for many hours of
experimentation and tinkering that will lead you to learn more on your own.
New Developments
This book, Learning Java, is actually the third edition— reworked and retitled— of O'Reilly's
popular Exploring Java. We've de-emphasized web-page applets this time around, reflecting their
diminishing role over the past couple of years in creating "smart" web pages. Other technologies
have filled in the gap: JavaScript on the client side, an Java servlets and Active Server Pages on
the server side.
We cover the most interesting features of Sun's newest release of Java, officially called Java 2
SDK Version 1.3. (In the old days, it would have been called "JDK," for "Java development kit;"
we use the newer, officially blessed "SDK," for "software development kit," throughout this book.)
These features include servlets, the Java Media Framework ( JMF), timers, the collections, 2D
graphics, and image-processing APIs, using the Java security manager, and using Java 2 signed
applets.
Another important change, though not as recent as SDK 1.3, is the ascendancy of Java Swing as
the main API for graphical user interface programming. Much of the material relating to AWT,
Java's original GUI programming interface, has been recast and updated to use Swing facilities.
Audience
This book is for computer professionals, students, technical people, and Finnish hackers. It's for
everyone who has a need for hands-on experience with the Java language with an eye toward
building real applications. This book could also be considered a crash course in object-oriented
programming; as you learn about Java, you'll also learn a powerful and practical approach to
object-oriented software development.
Superficially, Java looks like C or C++, so you'll be in the best position to use this book if you've
some experience with one of these languages. If you do not, you might want to refer to books like
O'Reilly's Practical C Programming for a more thorough treatment of basic C yntax. However,
don't make too much of the syntactic similarities between Java and C or C++. In many respects,
Java acts like more dynamic languages such as Smalltalk and Lisp. Knowledge of another object-
oriented programming language should certainly help, although you may have to change some
ideas and unlearn a few habits. Java is considerably simpler than languages like C++ and
Smalltalk.
Although we encourage you to take a broad view, you would have every right to be disappointed
if we ignored the Web. A substantial part of this book does discuss Java as a language for World
Wide Web applications, so you should be familiar with the basic ideas behind web browsers,
servers, and web documents.
Using This Book
This book is organized roughly as follows:
· Chapter 1 and Chapter 2 provide a basic introduction to Java concepts and a tutorial to
give you a jump start on Java programming.
· Chapter 3 discusses tools for developing with Java (the compiler, the interpreter, the
JAR file package). It also covers important concepts such as embedding Java code in
HTML support and object signing.
· Chapter 4 through Chapter 8 describe the Java language itself. Chapter 8 covers the
language's thread facilities, which should be of particular interest to advanced
programmers.
· Chapter 9 and Chapter 10 cover much of the core API. Chapter 9 describes basic
utilities, and Chapter 10 covers I/O facilities.
· Chapter 11 and Chapter 12 cover Java networking, including sockets, URLs, and
remote method invocation (RMI).
· Chapter 13 through Chapter 18 cover the Abstract Window Toolkit (AWT) and Swing,
which provide graphical user interface (GUI) and image support.
· Chapter 19 covers the JavaBeans™ component architecture.
· Chapter 20 covers applets, the area in which Java saw its initial success.
If you're like us, you don't read books from front to back. If you're really like us, you usually don't
read the preface at all. However, on the off chance that you will see this in time, here are a few
suggestions.
If you are an experienced programmer who has to learn Java in the next five minutes, you are
probably looking for the examples. You might want to start by glancing at the tutorial in Chapter
2. If that doesn't float your boat, you should at least look at the informatio in Ch pter 3, which
tells you how to use the compiler and interpreter, and gives you the basics of a standalone Java
application. This should get you started.
Chapter 11 and Chapter 12 are essential if you are interested in writing advanced networked
applications. This probably the most interesting and important part of Java.
Chapter 13 though Chapter 19 discuss Java's graphics features and component architecture.
You should read this carefully if you are interested in Java applications for the Web.
Getting Wired
There are many online sources for information about Java. Sun Microsystem's official web site for
J ava topics is look here for the latest news, updates, and Java releases.
This is where you'll find the Java Software Development Kit (SDK), which includes the compiler,
the interpreter, and other tools. Another good source of Java information, including free applets,
utility classes, and applications, is the Gamelan site, run by EarthWeb; its URL is
You should also visit O'Reilly & Associates' Java site at There you'll
find information about other books in O'Reilly's Java Series, and a pointer to the home page for
Learning Java, where you'll find the source
code examples for this book.
The comp.lang.java newsgroup can be a good source of information and announcements, and a
place to ask intelligent questions.
Conventions Used in This Book
The font conventions used in this book are quite simple.
Italic is used for:
· Unix pathnames, filenames, and program names
· Internet addresses, such as domain names and URLs
· New terms where they are d fined
Boldface is used for:
· Names of GUI buttons and menus
Constant width is used for:
· Anything that might appear in a Java program, including method names, variable
names, and class names
· Command lines and options that should be typed verbatim on the screen
· Tags that might appear in an HTML document
Constant width bold
is used for:
· In code examples, text that is typed by the user
In the main body of text, we always use a pair of empty parentheses after a method name to
distinguish methods from variables and other creatures.
In the Java source listings, we follow the coding conventions most frequently used in the Java
community. Class names begin with capital letters; variable and method names begin with
lowercase. All the letters in the names of constants are capitalized. We don't use underscores to
separate words in a long name; following common practice, we capitalize individual words (after
the first) and run the words together. For example: thisIsAVariable , thisIsAMethod( ) ,
ThisIsAClass , and THISI SACONSTANT.
How to Contact Us
We have tested and verified all the information in this book to the best of our abilities, but you
may find that features have changed or that we have let errors slip through the production of the
book. Please let us know of any errors that you find, as well as suggestions for future editions, by
writing to:
O'Reilly & Associates, Inc.
101 Morris St.
Sebastopol, CA 95472
1-800-998-9938 (in the U.S. or Canada)
1-707-829-0515 (international/local)
1-707-829-0104 (fax)
You can also send messages electronically. To be put on our mailing list or to request a catalog,
send email to:
info@oreilly.com
To ask technical questions or to comment on the book, send email to:
bookquestions@oreilly.com
We have a web site for the book, where we'll list examples, errata, and any plans for future
editions. You can access this page at:
For more information about this book and others, see the O'Reilly web site:
Chapter 1. Yet Another Language?
The greatest challenges and most exciting opportunities for software developers today lie in
harnessing the power of networks. Applications created today, whatever their intended scope or
audience, will almost certainly be run on machines linked by a global network of computing
resources. The increasing importance of networks is placing new demands on existing tools and
fueling the demand for a rapidly growing list of completely new kinds of applications.
We want software that works— consistently, anywhere, on any platform— and that plays well with
other applications. We want dynamic applications that take advantage of a connected world,
capable of accessing disparate and distributed information sources. We want truly distributed
software that can be extended and upgraded seamlessly. We want intelligent applications— like
autonomous agents that can roam the Net for us, ferreting out information and serving as
electronic emissaries. We know, to some extent, what we want. So why don't we have it?
The problem has been that the tools for building these applications have fallen short. The
requirements of speed and portability have been, for the most part, mutually exclusive, and
security has been largely ignored or misunderstood. There are truly portable languages, but they
are mostly bulky, interpreted, and slow. These languages are popular as much for their high-l vel
functionality as for their portability. And there are fast languages, but they usually provide speed
by binding themselves to particular platforms, so they can meet the portability issue only halfway.
There are even a few recent safe languages, but they are primarily offshoots of the portable
languages and suffer from the same problems.
1.1 Enter Java
The Java™ programming language, developed at Sun Microsystems under the guidance of Net
luminaries James Gosling and Bill Joy, is designed to be a machine-independent programming
language that is both safe enough to traverse networks and powerful enough to replace native
executable code. Java addresses the issues raised here and may help us start building the kinds
of applications we want.
Initially, most of the enthusiasm for Java centered around its capabilities for building embedded
applications for the World Wide Web; these applications are called app ets. Applets could be
independent programs in themselves, or sophisticated frontends to programs running on a server.
More recently, interest has shifted to other areas. With Java 2, Java has the most sophisticated
toolkit for building graphical user interfaces; this development has allowed J va to become a
popular platform for developing traditional application software. Java has also become an
important platform for server-side applications, using the servlet interface, and for enterprise
applications using technologies like Enterpris JavaBeans™. And Java is the platform of choice
for modern distributed applications.
This book shows you how to use Java to accomplish real programming tasks, such as building
networked applications and creating functional user interfaces. There's still a chap er devoted to
applets; they may become more important again when the Java 2 (and subsequent) versions of
the Java platform are more widely distributed in web browsers.
1.1.1 Java's Origins
The seeds of Java were planted in 1990 by Sun Microsystems patriarch and chief researcher, Bill
Joy. Since Sun's inception in the early '80s, it has steadily pushed one idea: "The network is the
computer." At the time though, Sun was competing in a relatively small workstation market, while
Microsoft was beginning its domination of the more mainstream, Intel-bas d PC world. When Sun
missed the boat on the PC revolution, Joy retreated to Aspen, Colorado, to work on advanced
research. He was committed to accomplishing complex tasks with simple software, and founded
the aptly named Sun Aspen Smallworks.
Of the original members of the small team of programmers assembled in Aspen, James Gosling
is the one who will be remembered as the father of Java. Gosling first made a name for himself in
the early '80s as the author of G sling Emacs, the first version of the popular Emacs editor that
was written in C and ran under Unix. Gosling Emacs became popular, but was soon eclipsed by a
free version, GNU Emacs, written by Emacs's original designer. By that time, Gosling had moved
on to design Sun's NeWS window system, which briefly contended with the X Window System for
control of the Unix graphical user interface (GUI) desktop in 1987. While some people would
argue that NeWS was superior to X, NeWS lost out because Sun kept it proprie ary and didn't
publish source code