O'Reilly - Java Network Programming (2nd edition) (2000).pdf
(
2578 KB
)
Pobierz
3270029 UNPDF
Preface
Java™'s growth over the last five years has been nothing short of phenomenal. Given
Java's rapid rise to prominence and the general interest in networking, it's a little
surprising that network programming in Java is still so mysterious to so many. This
doesn't have to be. In fact, writing network programs in Java is quite simple, as this
book will show. Readers with previous experience in network programming in a Unix,
Windows, or Macintosh environment should be pleasantly surprised at how much
easier it is to write equivalent programs in Java. That's because the Java core API
includes well-designed interfaces to most network features. Indeed, there is very little
application layer network software you can write in C or C++ that you can't write
more easily in Java.
Java Network Programming
endeavors to show you how to take
advantage of Java's network class library to quickly and easily write programs that
accomplish many common networking tasks. These include:
•
Browsing pages on the Web
•
Parsing and rendering HTML
•
Sending email with SMTP
•
Receiving email with POP and IMAP
•
Writing multithreaded servers
•
Installing new protocol and content handlers into browsers
•
Encrypting communications for confidentiality, authentication, and guaranteed
message integrity
•
Designing GUI clients for network services
•
Posting data to CGI programs
•
Looking up hosts using DNS
•
Downloading files with anonymous FTP
•
Connecting sockets for low-level network communication
•
Distributing applications across multiple systems with Remote Method
Invocation
Java is the first language to provide such a powerful cross-platform network library
that handles all these diverse tasks.
Java Network Programming
exposes the power
and sophistication of this library. This book's goal is to enable you to start using Java
as a platform for serious network programming. To do so, this book provides a
general background in network fundamentals as well as detailed discussions of Java's
facilities for writing network programs. You'll learn how to write Java applets and
applications that share data across the Internet for games, collaboration, software
updates, file transfer and more. You'll also get a behind-the-scenes look at HTTP, CGI,
TCP/IP, and the other protocols that support the Internet and the Web. When you
finish this book, you'll have the knowledge and the tools to create the next generation
of software that takes full advantage of the Internet.
About the Second Edition
In the first chapter of the first edition of this book, I wrote extensively about the sort
of dynamic, distributed network applications I thought Java would make possible.
One of the most exciting parts of writing this second edition was seeing that virtually
all of the applications I had postulated have indeed come to pass. Programmers are
using Java to query database servers, monitor web pages, control telescopes, manage
multiplayer games, and more, all by using Java's ability to access the Internet. Java in
general, and network programming in Java in particular, has moved well beyond the
hype stage and into the realm of real, working applications. Not all network software
is written in Java yet, but it's not for a lack of trying. Efforts are well under way to
subvert the existing infrastructure of C-based network clients and servers with pure
Java replacements. It's unlikely that Java will replace C for all network programming
in the near future. However, the mere fact that many people are willing to use web
browsers, web servers, and more written in Java shows just how far we've come since
1996.
This book has come a long way too. The second edition has been rewritten almost
from scratch. There are five completely new chapters, some of which reflect new
APIs and abilities of Java introduced since the first edition was published (
Chapter 8
,
Chapter 12
, and
Chapter 19
), and some of which reflect my greater experience in
teaching this material and noticing exactly where students' trouble spots are (
Chapter
4
, and
Chapter 5
). In addition, one chapter on the Java Servlet API has been removed,
since the topic really deserves a book of its own; and indeed Jason Hunter has written
that book,
Java Servlet Programming
(O'Reilly & Associates, Inc., 1998).
However, much more important than the added and deleted chapters are the changes
inside the chapters that we kept. The most obvious change to the first edition is that all
of the examples have been rewritten with the Java 1.1 I/O API. The deprecation
messages that tormented readers who compiled the first edition's examples using Java
1.1 or later are now a thing of the past. Less obviously, but far more importantly, all
the examples have been rewritten from the ground up to use clean, object-oriented
design that follows Java's naming conventions and design principles. Like almost
everyone (Sun not excepted), I was still struggling to figure out a lot of the details of
just what one did with Java and how one did it when I wrote the first edition in 1996.
The old examples got the network code correct, but in most other respects they now
look embarrassingly amateurish. I've learned a lot about both Java and object-oriented
programming since then, and I think my increased experience shows in this edition.
For just one example, I no longer use standalone applets where a simple frame-based
application would suffice. I hope that the new examples will serve as models not just
of how to write network programs, but also of how to write Java code in general.
And of course the text has been cleaned up too. In fact, I took as long to write this
second, revised edition as I did to write the original edition. As previously mentioned,
there are 5 completely new chapters, but the 14 revised chapters have been
extensively rewritten and expanded to bring them up-to-date with new developments,
as well as to make them clearer and more engaging. This edition is, to put it frankly, a
much better written book than the first edition, even leaving aside all the changes to
the examples. I hope you'll find this edition an even stronger, longer lived, more
accurate, and more enjoyable tutorial and reference to network programming in Java
than the first edition.
Organization of the Book
This book begins with three chapters that outline how networks and network
programs work.
Chapter 1
, is a gentle introduction to network programming in Java
and the applications that it makes possible. All readers should find something of
interest in this chapter. It explores some of the unique programs that become feasible
when networking is combined with Java.
Chapter 2
, and
Chapter 3
, explain in detail
what a programmer needs to know about how the Internet and the Web work.
Chapter
2
describes the protocols that underlie the Internet, such as TCP/IP and UDP/IP.
Chapter 3
describes the standards that underlie the Web such, as HTTP, HTML, and
CGI. If you've done a lot of network programming in other languages on other
platforms, you may be able to skip these two chapters.
The next two chapters throw some light on two parts of Java that are critical to almost
all network programs but are often misunderstood and misused: I/O and threading.
Chapter 4
explores Java's unique way of handling input and output. Understanding
how Java handles I/O in the general case is a prerequisite for understanding the
special case of how Java handles network I/O.
Chapter 5
explores multithreading and
synchronization, with a special emphasis on how they can be used for asynchronous
I/O and network servers. Experienced Java programmers may be able to skim or skip
these two chapters. However,
Chapter 6
, is essential reading for everyone. It shows
how Java programs interact with the Domain Name System through the
InetAddress
class, the one class that's needed by essentially all network programs. Once you've
finished this chapter, it's possible to jump around in the book as your interests and
needs dictate. There are, however, some interdependencies between specific chapters.
Figure P.1
should allow you to map out possible paths through the book.
Figure P.1. Chapter prerequisites
Chapter 7
, explores Java's
URL
class, a powerful abstraction for downloading
information and files from network servers of many kinds. The
URL
class enables you
to connect to and download files and documents from a network server without
concerning yourself with the details of the protocol that the server speaks. It lets you
connect to an FTP server using the same code you use to talk to an HTTP server or to
read a file on the local hard disk.
Once you've retrieved an HTML file from a server, you're going to want to do
something with it. Parsing and rendering HTML is one of the most difficult
challenges network programmers face. Indeed, the Mozilla project has been struggling
with that exact problem for more than two years.
Chapter 8
, introduces some little-
known classes for parsing and rendering HTML documents that take this burden off
your shoulders and put it on Sun's.
Chapter 9
, investigates the network methods of one the first classes every Java
programmer learns about,
Applet
. You'll see how to load images and audio files from
network servers and track their progress. Without using undocumented classes, this is
the only way to handle audio in Java 1.2 and earlier.
Chapter 10
through
Chapter 14
discuss Java's low-level socket classes for network
access.
Chapter 10
, introduces the Java sockets API and the
Socket
class in particular.
It shows you how to write network clients that interact with TCP servers of all kinds,
including whois, finger, and HTTP.
Chapter 11
, shows you how to use the
ServerSocket
class to write servers for these and other protocols in Java.
Chapter 12
,
shows you how to protect your client/server communications using the Secure Sockets
Layer (SSL) and the Java Secure Sockets Extension ( JSSE).
Chapter 13
, introduces
the User Datagram Protocol (UDP) and the associated classes
DatagramPacket
and
DatagramSocket
for fast, reliable communication. Finally,
Chapter 14
, shows you
how to use UDP to communicate with multiple hosts at the same time. All the other
classes that access the network from Java rely on the classes described in these five
chapters.
Chapter 15
through
Chapter 17
look more deeply at the infrastructure supporting the
URL
class. These chapters introduce protocol and content handlers, concepts unique to
Java that make it possible to write dynamically-extensible software that automatically
understands new protocols and media types.
Chapter 15
, describes the
URLConnection
class that serves as the engine for the
URL
class of
Chapter 7
. It shows
you how to take advantage of this class through its public API.
Chapter 16
, also
focuses on the
URLConnection
class but from a different direction; it shows you how
to subclass this class to create handlers for new protocols and URLs. Finally,
Chapter
17
explores Java's somewhat moribund mechanism for supporting new media types.
Chapter 18
and
Chapter 19
introduce two unique higher-level APIs for network
programs, Remote Method Invocation (RMI) and the JavaMail API.
Chapter 18
,
introduces this powerful mechanism for writing distributed Java applications that run
across multiple heterogeneous systems at the same time while communicating with
straightforward method calls just like a nondistributed program.
Chapter 19
, acquaints
you with this standard extension to Java that offers an alternative to low-level sockets
for talking to SMTP, POP, IMAP, and other email servers. Both of these APIs provide
distributed applications with less cumbersome alternatives to lower-level protocols.
Who You Are
This book assumes you have a basic familiarity with the Java language and
programming environment, in addition to object-oriented programming in general.
This book does not attempt to be a basic language tutorial. You should be thoroughly
familiar with the syntax of the language. You should have written simple applications
and applets. You should also be comfortable with the AWT. When you encounter a
topic that requires a deeper understanding for network programming than is
customary—for instance, threads and streams—I'll cover that topic as well, at least
briefly.
You should also be an accomplished user of the Internet. I will assume you know how
to
ftp
files and visit web sites. You should know what a URL is and how you locate
one. You should know how to write simple HTML and be able to publish a home
page that includes Java applets, though you do not need to be a super web designer.
However, this book doesn't assume that you have prior experience with network
programming. You should find it a complete introduction to networking concepts and
network application development. I don't assume that you have a few thousand
networking acronyms (TCP, UDP, SMTP . . .) at the tip of your tongue. You'll learn
what you need to know about these here. It's certainly possible that you could use this
book as a general introduction to network programming with a socket-like interface,
then go on to learn the Windows Socket Architecture (WSA), and figure out how to
write network applications in C++. But it's not clear why you would want to: Java lets
you write very sophisticated applications with ease.
Plik z chomika:
Witek63
Inne pliki z tego folderu:
Wrox - J2EE Design Patterns Applied (Chapter 5) (2002).pdf
(1437 KB)
Wrox - Professional J2EE with BEA WebLogic Server (2000).pdf
(4123 KB)
Wrox - J2EE Design Patterns Applied (Chapter 3) (2002).pdf
(535 KB)
Wrox - Expert One-on-One - J2EE Development without EJB (2004).pdf
(8141 KB)
Wordware - JBuilder 8.0 - JFC and Swing Programming (2003).pdf
(6648 KB)
Inne foldery tego chomika:
C ++ - programowanie - kurs video PL (video tutorial PL)
C++ Programowanie PL
C++ Qt Programming
CodeIgniter
Complete IT Books Pack
Zgłoś jeśli
naruszono regulamin