 Hello everyone. I am Mrs. Supriya Ambarkar from Vulture Institute of Technology, Solapur. Today we are going to cover a topic on case study, that is an RMI. Basics of RMI we are going to cover in this topic, distributed object concept, then RMI process and binding of client to objects, then parameter passing techniques, design issues, components of RMI architecture and etc. The learning outcome of this session, at the end of this session, student will be able to explain the distributed objects concept, students will be able to state the execution steps of RMI. Now, first we will consider the basics of RMI. RMI is basically remote method invocation. Here we are able to invoke a particular method, which is remotely available. So, in distributed system, we are having a client-server paradigm and RPC handles the interface communication mechanism. So, this principle of RPC can be applied to handle objects, means invoking that remote objects. With this concept, objects in different procedures can communicate with each other through remote object invocation. So, this is an extension of local method invocation. Now, we will see the distributed object concept. Now, first we will consider the basics of objects. Objects are the set of data and its methods. Here an object invokes other objects by a particular method. So, by passing arguments and parameters, we are able to suppose to invoke that method. So, in this diagram, the remote objects and remote references are available. Objects in other processes can invoke a method that only belongs to its remote interface, which means local objects are invoked in the remote interface and in other methods, M is implemented by the remote objects. So, in such a way, the distributed objects are going to work. Now, we will consider the distributed shared object concept. How processes across the network share the objects? Here, objects are going to consider in terms of the distributed shared object. So, in distributed system, it uses the client-server model or architecture and the server manages the objects and client to invoke that method, which is we want to call as an RMI. So, this technique sends the request message to the server, which executes that method of object and returns the result message back to the client. In this diagram, we are able to see the local object, then distributed shared object, the particular process with an interface, then network. Now, we will consider the RMI and LMI, remote method invocation and local method invocation. Here, in this diagram, we are able to see the remote method invocation and local method invocation with an object in terms of B and F. These are the remote objects and both must have remote interfaces. Client can invoke the remote object interfaces. So, here B is available to A also. So, client can receive an RMI, which means the reference is passed as an argument or results of RMI, where the B, C, D, E have a local invocation. So, this is in terms of RMI and LMI. Now, we will consider the different design issues in RMI. Here, we want to consider the two main points, RMI invocation, semantics and level of transparency. In terms of semantics, maybe semantic, at least one semantic, at most one semantics are there. So, maybe semantics. Here, client may not know whether this remote method is executed once or not at all. So, this in terms of maybe, at least once semantics, here, server has executed the method at least once. At most once, here, the server executes the method exactly once. So, this is in terms of semantics. Then, level of transparency means hiding the internal RMI processes such as marshaling the data, marshaling the results, message passing, locating and contacting the remote objects for a particular client. So, this is about level of transparency. So, we want to consider these two design issues for RMI. Now, we will see the flow diagram of RMI. How client invokes a particular method which is remotely available via a remote object. So, stub and skeleton concepts are there. Then, remote reference layers are available at both the sites, client as well as server side. TCP IP layer means network is available. Via, we are able to suppose to call a remote objects. Those objects are available at remote site. So, this is in flow diagram. Now, we will see the list of RMI components. The list considered client, server, remote objects, proxy, remote reference module, stub, skeleton, communication module, the binder concepts. In this slide, we will see the details of that components which will be considered under RMI architecture. Here, client side and server side both are available. So, client having a remote reference module, server also having a remote reference module. For communication purpose, for request reply purpose, communication module is available. Server side, different servants are available via which we are able to suppose to bind a naming concept with a particular remote objects. Here, the client want to make a request. So, remote object B is available at server side. Via skeleton dispatcher concept, the server will be able to give a reply. So, reply in terms of what? Reply in terms of remote object. So, via communication module, the client is able to call that particular remote object. So, in such a way, the method is going to invoke by a particular client from a server via RMI concept. So, remotely method availability is applicable or available for a particular client. In this particular slide, we are able to see the RMI execution components. Here, the communication module, that is in part of the RMI, particular RMI concepts. So, client and server process both are involved for the communication module. Then, remote reference module, it is responsible for translating between local and remote object references and creating remote object references. So, this is in part. So, this is a task for the remote reference module. This module uses a remote object table which will be required to map a local to remote object references. So, this is in terms of remote reference module. Now, we will consider the RMI software. So, this is an middleware layer, consists of proxy, then dispatchers, skeletons are available. So, this is an middleware layer via which we are able to suppose to make the communication. Server programs are there. It contains the classes for dispatchers, and remote objects it supports. Client programs, the looks of the particular remote object reference using a particular binder. So, here the binder concept is very important in terms of what? This is a one kind of a service which maintains a table of textual names to be remote object reference. And according to that, servers use this service for the remote object references. So, without binder concept, RMI is not going to work. So, RMI is very important. Now, we will see the RMI execution process. So, client side, they having the class objects. Local objects are there. At the server side, distributed shared objects. They want to register particular distributed objects via a particular naming service with a location service and accordingly the name object handle the particular naming service. Address protocols are available. So, via a naming service, the server is able to look up a particular remote object in which location it is available. The server is able to redirect that particular method via that particular remote object to a particular client. So, make the contact with a distributed shared object via client. So, this is an RMI execution process. Now, pause the video and write down your answer. When we say that the method invocation is local and remote. So, we want to consider that. The method invocation between objects in the same process is called local invocation. Whereas, those between different processes are called remote invocation. So, this is an difference or the concept of local and remote invocations. Now, we will see the different types of objects are available. So, objects are basically you can say the classified into the two types based on the time of binding and based on the time of existence. The based on time binding objects are again classified into runtime and compile time. Then second based on how long they exist can be classified into transient and persistent. So, transient objects exist only when the time when the server manages the object. And persistent objects exist even if they are not contained in the server process address space means client manages the persistent object and store its state on any secondary storage. So, this is all about the different types of objects we want to consider. So, these are the references which I have referred for this particular topic. Thank you one and all.