Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Chapter 9 Network Programming 1 Overview • Java has rich class libraries to support network programming at various levels. • There are standard classes that support server and client sockets, datagram sockets, and multicast sockets. • There are standard classes that support remote method invocation (RMI). 2 Overview • Support for network programming is in packages such as java.net and java.rmi • There are also related standard packages for security, cryptography, and server-side scripting. • Additional third-party packages support technologies such as CORBA. 3 Overview • Java networking reflects TCP/IP as the de facto standard for networking infrastructure, but the Java interfaces and classes abstract from low-level TCP/IP implementation details. – Classes such as InetAddress disclose the underlying IP infrastructure. 4 Overview • Although network applications ultimately must be tested in a distributed environment with physically machines, initial testing can be done a standalone machine using the localhost IP address, which is 127.0.0.1 in dotted-decimal notation. 5 Sockets • Java supports sockets of various types. • The Socket class supports TCP client sockets, that is, a socket used by a client to send requests to a server. • The ServerSocket class supports TCP server sockets, that is, sockets used by a server to await client requests. 6 Sockets • In a typical client/server application based on sockets, – A client opens a client Socket to the server by specifying the server’s Internet address and the port number on which the server listens. – The server’s ServerSocket listens for clients. When a client connects, the accept() method returns a reference to the client socket. 7 Sockets – The Socket has associated input and output streams through which the client and the server can exchange data, including serialized objects. – Once a transaction completes, the Socket is closed, which breaks the connection. 8 Sockets • Single-threaded servers are called iterative servers. Multithreaded servers are called concurrent servers. • In a typical concurrent server, the thread T that listens for clients constructs and starts separate threads to handle each client so that T can focus exclusively on listening for clients. 9 Sockets • The java.net package includes a SocketImp class for applications that need to deal with firewalls, proxy servers, and the like. • The Socket and ServerSocket classes have a default socket implementation that meets most needs. 10 Datagram sockets • The DatagramSocket and DatagramPacket classes support IPbased networking. • The MulticastSocket class supports group-based socket applications. – Multicast sockets use datagrams. 11 Datagram sockets • In a typical datagram application, – The sender constructs a DatagramPacket to store the cargo bytes to be sent to a receiver. The packet is addressed to a server and sent through a DatagramSocket. – The receiver constructs a DatagramPacket to receive, through a DatagramSocket, the sent packet of bytes. 12 Serialization over sockets • Serialization over sockets is attractive because of its simplicity and power. • An object can serialized to an ObjectOutputStream constructed from the socket’s output stream, and then deserialized from an ObjectInputStream associated with a socket’s input stream. 13 Java Secure Sockets Extension • The JSSE package supports secure Internet communications based on the Secure Sockets Layer and Transport Layer Security protocols in the TCP/IP suite. • For legal reasons, the JSSE must be provided as a separate package available for free at http://java.sun.com/products. 14 Applets • An applet is a typically small program embedded in another application, generally a Web browser that provides a JVM. • An applet’s host program provides an applet context in which the applet executes. • An applet is generally launched from an HTML document with an APPLET tag that specifies the URL for the applet bytecodes 15 Applets • At the technical level, – An applet is an object whose class descends ultimately from Applet or JApplet. – An applet is an embeddable Panel, which is a simple Container window. – An applet’s class must be public. – An applet typically overrides the inherited init, start, stop, and paint methods. 16 Applets • When a Web browser downloads an applet, it typically – Invokes the init method to enable once-only initialization (e.g., setting colors, fonts, and the like) – Invokes the start method. If the applet is multithreaded, other threads can be constructed and started in this method. 17 Applets – Provides the applet real-estate in which to display itself, that is, the applet’s Panel and embedded components. – If the page that launched the applet is exited, the browser typically invokes the stop method, which then can perform appropriate cleanup operations. If the launching page is entered again, the browser again invokes start. 18 Applets • Applets in the same context can communicate straightforwardly with one another by, for example, invoking one another’s accessible methods. • Applets can be packaged in compressed JAR (Java Archive Files) for efficient downloading. 19 Applet security • Applets typically execute under a strict security manager that prevents an applet from – Accessing the local disk to read, write, delete, or execute files. – Loading nonstandard libraries. – Opening connections to arbitrary hosts. 20 Applet security • The tight applet security is sometimes described as sandbox security to suggest that an applet must “play” within a confined area from which it must not venture. • An applet is allowed to open a socket to the server from which is downloaded, thus enabling socket-based communications. 21 Applets and host programs • Any Java application can download an applet’s bytecodes, load the applet, and invoke the usual applet methods such as init and start. • In summary, any Java application can act as an applet’s host program. – In this respect, an applet shows itself to be the bean or component that it truly is. 22 RMI • Remote method invocation allows a Java program executing on one machine to invoke methods that execute on another machine. • At the implementation level, an RMI client gets a reference to a remote object whose methods, exposed in an RMI interface, then can be invoked by the client. 23 RMI • RMI uses serialization over sockets to handle (1) argument passing from a client invocation to a server execution and (2) a return value from a server to the invoking client. • RMI technology thus leverages underlying socket technology. 24 RMI • A typical RMI client – Sets its security manager to an RMISecurityManager. – Declares a reference of an interface type (e.g., Iface1) that the server implements. – Invokes the lookup method with the registered name of the server. – Invokes the methods declared in IFace1. 25 RMI • A code segment from a sample client: System.setSecurityManager( new RMISecurityManager() ); try { Ihello hi = (Ihello) Naming.lookup( “rmi://kalinnt.cti.edu/hello” ); hi.sayHi(); hi.sayBye(); } catch( Exception e ) {/*...*/} 26 RMI • A typical RMI server – Creates a public interface that extends java.rmi.Remote. Each declared method throws a RemoteException. – A public class implements the interface by appropriately defining the methods therein. The server generally extends the UnicastRemoteObject to handle argument and return value marshalling. 27 RMI – The server invokes the Naming method bind or rebind to register a server object under a symbolic name such as “HelloServer.” – The rmic utility is run on the compiled server code to generate a skeleton and a stub, which handle low-level RMI interactions. The skeleton is the server’s proxy and the stub is downloaded automatically to the client to act as the client’s proxy. 28 RMI • A code segment from a sample server: public interface Ihello extends Remote { public String sayHi() throws Remote Exception; public String sayBye() throws RemoteException; } 29 RMI • A code segment from a sample server: public class HelloServer extends UnicastRemoteObject implements IHello { public HelloServer throws RemoteException {/*...*/} public String sayHi() throws RemoteException {/*...*/} } // continued on next slide 30 RMI public static void main( String[ ] a ){ try { Naming.rebind( “hello”, new HelloServer() ); } catch( RemoteException e ) {/*...*/} catch( MalformedURLException e ) {/*...*/} } } // end of class 31 RMI • Once the server has been rmic compiled and started, the rmiregistry utility is started on the server machine. – The registry must be active so that clients can invoke lookup to locate a specific RMI server object. • The server application is then started to await clients. 32 RMI activation • A standard RMI server runs continuously waiting for clients. An alternative is RMI activation, which starts a server only when a client connects to invoke a method remotely. 33 RMI and Jini • RMI activation provides the infrastructure for Jini technology, which allows small digital devices (e.g., cellular phones) and software modules to be mutually accessible through a network. • Jini technology extends the registry and naming services available in RMI. 34 RMI summary • RMI technology leverages socket technology. • Jini and Enterprise Java Bean technologies leverage RMI technology. • RMI is highly flexible. For instance, an applet can be an RMI client, and a servlet can be an RMI server. 35 CORBA technology • RMI requires, in effect, that the client and the server be written in the same language, Java. • RMI requires that the client know the server’s URL. • CORBA (Common Object Request Broker Architecture), by contrast, supports language and location transparency. 36 CORBA technology • CORBA clients and servers can be written in different languages. • CORBA clients can access servers through symbolic names given to the CORBA naming service. – CORBA clients need not know the server’s URL. 37 CORBA technology • CORBA serves as an ORB, or object request broker. – A CORBA client requests access to an object that some CORBA server provides. • At the syntax level, CORBA is quite similar to RMI: a client typically uses a reference of an interface type to invoke methods remotely. 38 CORBA technology • The nonstandard org.omg package and its subpackages support CORBA under Java. • CORBA is an alternative to RMI in contexts in which Java is not the exclusive language. – If Java is used on both the client and the server side, RMI has efficiency and “ease of use” advantages over CORBA. 39