Java Network Programming and Distributed Computing

Java Network Programming and Distributed Computing

4.5 2
by David Reilly
     
 

ISBN-10: 0201710374

ISBN-13: 9780201710373

Pub. Date: 03/25/2002

Publisher: Addison-Wesley

Java™ Network Programming and Distributed Computing is an accessible introduction to the changing face of networking theory, Java™ technology, and the fundamental elements of the Java networking API. With the explosive growth of the Internet, Web applications, and Web services, the majority of today’s programs and applications

Overview

Java™ Network Programming and Distributed Computing is an accessible introduction to the changing face of networking theory, Java™ technology, and the fundamental elements of the Java networking API. With the explosive growth of the Internet, Web applications, and Web services, the majority of today’s programs and applications require some form of networking. Because it was created with extensive networking features, the Java programming language is uniquely suited for network programming and distributed computing.

Whether you are a Java devotee who needs a solid working knowledge of network programming or a network programmer needing to apply your existing skills to Java, this how-to guide is the one book you will want to keep close at hand. You will learn the basic concepts involved with networking and the practical application of the skills necessary to be an effective Java network programmer. An accelerated guide to networking API, Java™ Network Programming and Distributed Computing also serves as a comprehensive, example-rich reference.

You will learn to maximize the API structure through in-depth coverage of:

  • The architecture of the Internet and TCP/IP
  • Java’s input/output system
  • How to write to clients and servers using the User Datagram Protocol (UDP) and TCP
  • The advantages of multi-threaded applications
  • How to implement network protocols and see examples of client/server implementations
  • HTTP and how to write server-side Java applications for the Web
  • Distributed computing technologies such as Remote Method Invocation (RMI) and CORBA
  • How to access e-mail using the extensive and powerful JavaMail™ API
  • This book’s coverage of advanced topics such as input/output streaming and multi-threading allows even the most experienced Java developers to sharpen their skills. Java™ Network Programming and Distributed Computing will get you up-to-speed with network programming today; helping you employ innovative techniques in your own software development projects.

    The companion Web site, http://www.davidreilly.com/jnpbook, offers downloadable source code, a list of FAQs about Java networking, and useful links to networking resources.

    0201710374B03012002

    Product Details

    ISBN-13:
    9780201710373
    Publisher:
    Addison-Wesley
    Publication date:
    03/25/2002
    Edition description:
    New Edition
    Pages:
    464
    Product dimensions:
    7.20(w) x 9.10(h) x 1.10(d)

    Table of Contents

    Preface.

    Acknowledgments.

    1. Networking Theory.

    What Is a Network?

    How Do Networks Communicate?

    Communication across Layers.

    Advantages of Layering.

    Internet Architecture.

    Internet Application Protocols.

    TCP/IP Protocol Suite Layers.

    Security Issues: Firewalls and Proxy Servers.

    Summary.

    2. Java Overview.

    What Is Java?

    The Java Programming Language.

    The Java Platform.

    The Java Application Program Interface.

    Java Networking Considerations.

    Applications of Java Network Programming.

    Java Language Issues.

    System Properties.

    Development Tools.

    Summary.

    3. Internet Addressing.

    Local Area Network Addresses.

    Internet Protocol Addresses.

    Beyond IP Addresses: The Domain Name System.

    Internet Addressing with Java.

    Summary.

    4. Data Streams.

    Overview.

    How Streams Work.

    Filter Streams.

    Readers and Writers.

    Object Persistence and Object Serialization.

    Summary.

    5. User Datagram Protocol.

    Overview.

    DatagramPacket Class.

    DatagramSocket Class.

    Listening for UDP Packets.

    Sending UDP Packets.

    User Datagram Protocol Example.

    Building a UDP Client/Server.

    Additional Information on UDP.

    Summary.

    6. Transmission Control Protocol.

    Overview.

    TCP and the Client/Server Paradigm.

    TCP Sockets and Java.

    Socket Class.

    Creating a TCP Client.

    ServerSocket Class.

    Creating a TCP Server.

    Exception Handling: Socket Specific Exceptions.

    Summary.

    7. Multi-threaded Applications.

    Overview.

    Multi-threading in Java.

    Synchronization.

    Interthread Communication.

    Thread Groups.

    Thread Priorities.

    Summary.

    8. Implementing Application Protocols.

    Overview.

    Application Protocol Specifications.

    Application Protocols Implementation.

    Summary.

    9. HyperText Transfer Protocol.

    Overview.

    HTTP and Java.

    The Common Gateway Interface (CGI).

    Summary.

    10. Java Servlets.

    Overview.

    How Servlets Work.

    Using Servlets.

    Running Servlets.

    Writing a Simple Servlet.

    SingleThreadModel.

    ServletRequest and HttpServletRequest.

    ServletResponse and Http Response.

    ServletConfig.

    ServletContext.

    Servlet Exceptions.

    Cookies.

    HTTP Session Management in Servlets.

    Summary.

    11. Remote Method Invocation (RMI).

    Overview.

    How Does Remote Method Invocation Work?

    Defining an RMI Service Interface.

    Implementing an RMI Service Interface.

    Creating Stub and Skeleton Classes.

    Creating an RMI Server.

    Creating an RMI Client.

    Running the RMI System.

    Remote Method Invocation Packages and Classes.

    Remote Method Invocation Deployment Issues.

    Using Remote Method Invocation to Implement Callbacks.

    Remote Object Activation.

    Summary.

    12. Java IDL and CORBA.

    Overview.

    Architectural View of CORBA.

    Interface Definition Language (IDL).

    From IDL to Java.

    Summary.

    13. JavaMail.

    Overview.

    Installing the JavaMail API.

    Testing the JavaMail Installation.

    Working with the JavaMail API.

    Advanced Messaging with JavaMail.

    Summary.

    Index. 0201710374T03292002

    Customer Reviews

    Average Review:

    Write a Review

    and post it to your social network

         

    Most Helpful Customer Reviews

    See all customer reviews >

    Java Network Programming and Distributed Computing 4.5 out of 5 based on 0 ratings. 2 reviews.
    Guest More than 1 year ago
    Most of my experience in network programming comes from W. Richard Stevens¿ ¿UNIX Network Programming¿, where there¿s lots of detail in the TCP/IP protocol, and using C to implement it. At the time, the professor teaching the course tried to provide us with comparable programs in Java, but not having a good Java networking book to consult from was a drawback to those segues.

    This book serves as an excellent companion to Stevens¿ book, so that you can get the feel for how Java accomplishes networking capabilities. I still prefer the TCP/IP detail that Stevens¿ book provides, but that¿s mainly because I like the language independent concept of networking.

    I created a small client2client messaging applet, sent it to a couple of friends for testing, and enjoyed how quickly and easily it was to get it working. Java abstracts a lot of the detail away from the user, since it was designed from the get-go to include networking capabilities, and this book uses those abstractions to its advantage. I¿ll probably want to get my hands dirty and see how much hands-on control I can get with Java sometime later.

    (Reilly*2)¿s book is a great way to just jump into network programming without getting your head too tangled with TCP/IP intricacies. This is not to say that the book doesn¿t cover those details, but it doesn¿t delve into them as deeply as Stevens¿ book does. In my view, that¿s a drawback to it being an absolute reference, but for many who just want to start developing client/server apps, this may be just what you¿re looking for.

    Guest More than 1 year ago
    Do you already program in Java? Do you want to go beyond building neat GUIs for applets or desktop applications? Java has two great strengths. It was built with graphical objects (widgets) being an inherent part of the language. This is an immense strategic advantage over earlier text-based languages like C and C++. For graphics, those needed special graphics libraries that were not part of the original languages, and which varied from vendor to vendor and between operating systems. The ease of use of Java widgets led to its rapid gain of programmers' mindshare. Indeed, if you look at a row of Java books in a bookstore, you will see most packed with attractive diagrams of cool graphics. But there is a second great advantage of Java. It was designed with Internet awareness from its inception. C and C++, due to their earlier vintage, have to use libraries that vary with the operating system. Java gives you a consistent interface to network programming, independent of the operating system. It is to this exposition that this book from Addison-Wesley is devoted. Written by two Queenslanders, it assumes that you already know the rudiments of Java. This is not a book for tyros. If you want to write a network client (for example, a specialised mail reader), or a multiplayer online game, or a software agent that trolls the Internet, then this book can be very useful. It describes how to use TCP sockets, UDP datagrams, multithreading, HTTP and other topics. It expands on CGI for building applets. For client-server applications, it devotes entire chapters to servlets and RMI (Remote Method Invocation). If you need to use CORBA, maybe because you have some legacy code that you want to write a Java program to interact with, then you will find a chapter expounding on it. If you have already been programming Java GUIs, then this book will expose you to a more abstract class of problems. There is no visual feedback from widget layouts here. What feedback you get is from text-based output. What you have to design against are problems based on data flow across a network. The authors have written clearly, and the code examples are well done, illustrating simply the desired concepts, without tangling you in the details. The only slight critique I have is that there is no comparative assessment of the network capabilities of Java vis-a-vis C#/.NET. The latter pair is an even newer language/programming environment that also has networking built in. But this may be unfair and straying from the book's scope. C# and .NET have just been released by Microsoft, and it is not certain if they will gain much traction. But if they do, you will undoubtedly see many books arguing the relative merits.