Jini Supporting Ubiquitous and Pervasive Computing

Size: px
Start display at page:

Download "Jini Supporting Ubiquitous and Pervasive Computing"

Transcription

1 Jini Supporting Ubiquitous and Pervasive Computing Kasper Hallenborg and Bent Bruun Kristensen Maersk Mc-Kinney Moller Institute University of Southern Denmark Odense M, 5230, Denmark Abstract. The overall purpose of this article is partly to give a brief overview of the TangO conceptual model, partly to explore the Jini technology as a means for support of pervasive systems in general and the TangO conceptual model in particular, and to emphasize the advantages and weaknesses of the Jini technology for ubiquitous computing. We will validate our survey of the Jini Technology against the TangO model in general, and through an implementation of a Pervasive Shopping Mall in particular. 1 Introduction During the last centuries our everyday life has gradually become more and more globalized; we have reached a state where physical borders and distances only have weak impact on our collaborations and interactions. In the information ages we experienced new means of accessing an infinitive amount of information through the internet, and we are no longer constrained by technological issues for these matters on stationary PC s. But, the age of pervasive computing, we are about to enter, raises new challenges for researchers. Small intelligent devices will ubiquitously be deployed in our environment. These artifacts will even initiate interactions between humans and computers, which depend on the current context and preferences of the human. Interactions can happen anywhere and anytime, as it is clearly stated by Mark Weiser in 1991, In the 21st century the technology revolution will move into the everyday, the small and the invisible... As previous evolutions this will not happen overnight. One of the greatest challenges for ubiquitous computing (UbiComp) is the infrastructure for connecting devices and retrieving reliant and relevant contextual information. There seams to be an endless number of applications for this area, because we more or less could replace human activities with these intelligent devices, but social issues must be addressed in order to create useful and usable applications. No matter how simple the task seams to be, we will discover that an enormous amount of information must be taken into account, and it is very hard to predict and adapt to individual behaviors of the user. Devices will be smaller and more powerful; eventually they will disappear, as stated by Mark Weiser The most profound technologies are those that disappear. They weave them-selves into the fabric of everyday life until they are indistinguishable from it. This research was supported in part by Danish National Centre for IT Research, CfPC-Project No. 212, Flexible Inter Processing (FLIP) and The A. P. Mller and Chastine Mc-Kinney Mller Foundation.

2 These are the challenges for research and development in pervasive computing. An important issue for deploying artifacts into a pervasive world is to have an architecture supporting spontaneous collaboration among these devices. In this paper we will briefly describe a conceptual model (TangO) for modelling artifacts of the pervasive world. We will investigate the Jini technology from Sun to clarify if Jini offers the required supporting architecture for a pervasive system in terms of the TangO model. After examining the features and details of Jini, we will relate the capabilities of Jini against those required by the TangO model in general. Further we will describe an implementation of a Pervasive Shopping Mall, which we have designed and implemented to get some practical experience with the Jini technology. The system provides various functionality to customers in a mall, such a maps, guidance, event-notification and pop-up commercial when shops of interests are being approached. 2 Tango Conceptual Model We need a way to model these applications and scenarios of the pervasive world, in order to get a common vocabulary for talking about these systems. The TangO conceptual model [12] is an approach for such a modelling tool. 2.1 Abstraction and Spaces According to [12] we interact with artifacts in physical, informational, and conceptual form and we classify the artifacts as either tangible objects, habitats, or associations as illustrated by figure 1. habitats associations spaces Fig. 1. Illustration of tangible objects, habitats, and associations in physical, informational, and conceptual spaces. Tangible Object: an artifact that has been modelled and designed for the pervasive world, incorporating design factors from each of the spaces. Habitat: a logical context in which tangible objects exist and interact. Association: a relation by which tangible objects and habitats collaborate in a given way at a given time the actual collaboration is not predetermined by properties of objects and habitats. We elaborate on the understanding of the TangO conceptual model by discussing tangible objects, habitats, and associations at an abstract level, and exemplify these concepts by the example at the intuitive level. In relation to our example a mall will work as a habitat for the shops and persons, which are seen as tangible objects. The advertising activities are seen as examples on associations. The conceptual aspect of for example an advertisement includes in our understanding usually a good offer, usually a time limited offer, often quantity

3 limited, and we know that the (underlying) intention probably is to tempt us to come to the shop and in addition or instead buy something not planned and at standard price. The physical aspects of the advertisement include big boards at the shop announcing the offer (especially the price) as well as advertisements from newspapers. The informational aspect of advertisement includes the view from a printing house with properties such as size, format, contents, dates etc. The spaces are not discussed further in this article. Tangible Object, Habitat, Association We distinguish between descriptions and instances of each of the concepts tangible object, habitat, and association. By a description we establish a denotation for the mall habitat, whereas the individual malls are instances of the description. Instances of any of the concepts may be created (and deleted) dynamically. Instances of habitats enable tangible objects to move in (or out) of a habitat. The existence of tangible objects enables the instantiation of associations between individual formations of tangible objects. In our example a new mall may be established, shops may be organized within the mall, customers may visit the mall, and advertisements may be announced from shops to customers. Only tangible objects of type shop can be established in the mall tangible objects of type persons can only visit the mall. We return to how to use the qualification of a tangible object to protect and control the possibilities of the functionality in a later section. 2.2 Habitat: Basics We distinguish between physical and logical habitats (and mixtures of these). Both kinds of habitats may be limited in time, but only physical habitats have spatial limitations. The mall (and the shops in the mall) usually has opening hours and both have physical boundaries. We return to the problems with physical boundaries in a later section. Habitats may be related either by being at same level or by one habitat being local to another. The mall may have a cinema as one of its facilities. The cinema may be seen as a habitat itself local to the mall habitat and the various theaters within the cinema may in turn be considered local habitats of the cinema. We return to the problems with visibility of local habitats in a later section. As mentioned habitats may be created and added to our system. As part of the creation various relations to existing habitats may be created as well. Habitats may also be removed from the system in this case attention must be given to local habitats and to inhabitating tangible objects. 2.3 Tangible Object: Basics Tangible objects exist in habitats. A tangible object may be in several habitats at the same time in which case such habitats are seen as overlapping (a trivial case of this is the local/enclosing habitat when a person is in the cinema that person is also in the mall). In certain food courts at malls the restaurants often share a common eating area. This may be seen as an example of overlapping habitats for each restaurant we see the eating area as an integrated part of the restaurant habitat. The collection of tangible objects inhabitating a habitat at a given time has an implicit relation between them. Because they are in the same habitat the (collection of) tangible objects are visible for each other. A tangible object may

4 not want to utilize the relation or it may even refuse to be utilized through the relation, but potentially the collection of tangible objects is related. The shops of a mall probably utilize knowledge of each other s existence in the mall. A person entering a mall may want to utilize the mall to get in contact with relatives also in the mall or may choose to obtain anonymity for other visitors in the mall. A tangible object may be created and removed. Both operations have explicit potential consequences for tangible objects inhabitating the same habitats. When a shop is established in a mall the existing shops will observe its arrival. Tangible objects may dynamically enter and leave habitats again with consequences for other related tangible objects. When a person leaves the mall the advertisements from the shops in the mall cannot reach the person anymore and the person is outside the possibilities for the person search facility. We return to the problems of the legibility of a tangible object to enter (or leave) a habitat in a later section. We return to the problem with tangible objects being open to the public or anonymous in a later section. 2.4 Association: Basics Associations exist between tangible objects. An association can be temporary or permanent. An example of a temporary association is the advertisement from a shop to a person the advertisement lasts until either it expires or the person leaves the mall. Different kinds of associations exist. An association can be a simple relationship between tangible objects (possibly only supporting mutual knowledge of each other) or it can provide collaboration between collections of tangible objects. The simple relationship may be seen as a more general association with respect to for example collaboration as a more special type. The shops of the mall may only have knowledge of each other but no collaboration, whereas the interaction between several persons in the mall who utilize the search person facility is an example of an association of the collaborative kind. Associations can be established between tangible objects within the same or in distinct habitats (in the last case some alternative knowledge of its other is necessary, while there is an implicit knowledge available in the first case). The tangible objects must be potential visible to each other. Associations can be preserved in the case where a tangible object leaves a habitat alternatively, it may have consequences dependent on the nature of the association. When a person leaves a mall that person can probably not be available for the search facility of that mall anymore. On the other hand if the person has established a permanent customer association to shops in the mall such associations are typically preserved no matter if the person is actually in the mall or not. The creation or deletion of an association has explicit consequences for the associated tangible objects. If a search facility association is established between certain persons visiting a mall (assuming that the persons agree to take part in it) the persons may be involved in interaction and collaboration with various other persons potentially leading to physical or informational contact between typically familiar persons. 3 Jini Technology Jini tm technology is a Java tm -based architecture for spontaneous networking. Participants in a Jini community require no previously knowledge of each other, and can take full advantages of the dynamic class loading and type-checking of the Java language, which requires a Java virtual machine (JVM) for all participants. Surrogate architectures connecting device and applications, which is incapable of joining the Jini community, is a way to work around these limitations.

5 A Jini community is established around one or more Lookup Services, which organize the services deployed in the community and respond to requests from clients. The Lookup service is itself a Jini service, acting as a bootstrapping service. References to these Lookup Services are obtained either by unicast or multicast discovery protocols defined by Jini. Service providers deploys their services to the Jini Community by registering the services in Lookup Services, and obtains an unique ServiceID in return, which must be used for all future registrations to the same or other Lookup Services, to eliminate multiple responses to requesting clients. A service is a serialized Java object which resides in the Lookup Service after registration. Typically, the service object is just a proxy object, using the RMI protocol for remote invocations of a backend service object located in the Service Provider. The clients requests services from discovered Lookup Services by sending a ServiceTemplate, which defines the services of interest. The service template can contain any combinations of a unique service id, class types of the requested service, or a set of attributes, which have been registered with the service. The main idea of Jini for supporting spontaneous networking is achieved by a leasing principle, which means that services are leased into the community. When a service provider registers a service in the Lookup Service it obtains a lease, which must be renewed before it expires, otherwise the Lookup Service automatically deregister the service. Clients can register for changes in the Jini community, such as new, discarded, or changed services, using remote event registrations. By the same principle clients and service providers can register for events of new or discarded Lookup Services. Even event-registrations are leased in the community, so automatic cleanup can be initiated for non-responding clients. These are the real benefits of Jini, and enables opportunity to create a self-maintaining ubiquitous environment. 3.1 Jini protocol services Jini is basically build on three basic protocols, the discovery protocol for finding Lookup Services, which could be either unicast or multicast discoveries. The join protocol for joining services to the Jini community, and the lookup protocol for requesting services. The reference Jini API implemented by Sun has a number of helper classes abstracting the underlying protocols. LookupDiscoveryManager, which manages the discovery protocol, for both clients and service providers. It automatically keeps track of all Lookup Services in the community, and event notifications will be delegated to listeners through this object. The LookupDiscoveryManager manages both multicast and unicast discoveries, by setting group names and locators, respectively, which can be modified dynamically during the lifecycle of the object. Simpler managers for either just multicast or unicast discoveries in also part of the net.jini.discovery package. JoinManager, which manages the deployment of a service for the service provider. It maintains the renewal of service registrations based on a default or given LeaseRenewalManager, and communicates with the Jini community through the delegated discovery manager. The manager automatically deploys the service into known Lookup Services or future discovered Lookup Services. The attributes describing the service can dynamically be modified through the JoinManager, which keeps the consistence for a multi-deployed service up to date. ServiceDiscoveryManager, which manages service discoveries for clients. It collaborates with a sets of discovered Lookup Services through a given or default discovery manager, just like the JoinManager. The client could either poll the lookup method for requested services, or register for events,

6 when services matching a given ServiceTemplate are discovered, discarded, or changed. The event listeners cannot be registered directly in the Service- DiscoveryManager, but in a LookupCache, which is created and kept up-to-date through the ServiceDiscoveryManager. The helper classes reduces the complexity of Jini applications and removes the focus from the fundamental protocols, but users must still be familiar with Jini principle and understand some of the basic aspects of the attributes, locators, groups, events, and leases for taking full advantages of the helper classes. The hard part of using Jini for a distributed system, it not due the understanding of the principles of Jini, but more the complicated scripts for compiling and running the applications. Usually, some development time must be reserved for struggling with codebase, policy parameters, setting up HTTP servers for code retrieval, and combining the relevant class files into downloadable jar files. 4 Jini Features In this section we will describe some of the features and capabilities of using Jini for supporting various general architectural aspects and concepts of pervasive and ubiquitous computing. Some techniques are well supported, while others either need some additional adjustments or workarounds, or are not supported at all. Because Ubicomp systems are so different in nature, it is hard to describe the features in terms of real systems, but examples will be given, and the descriptions is more an evaluation of the Jini Technology. In the next section some of the features and Jini in general, will be evaluated in terms of the TangO conceptual model. 4.1 Services and discoveries As stated previously, Jini is based on a Service and Discovery architectural approach, which have become quiet popular as web-services and internet applications have invaded our everyday life. The basic idea is that some system, a server, a device or whatever offers a service, which can be requested by clients. The clients locate these services by discoveries, either through one or more central servers (the approach taken by Jini) or directly from the service provider. Some approaches, like JXTA [21], just offers a set of protocols and all communications is done through XML messages. Compared to Jini, full implementations are provided by the reference implementation for establishing and handling communication. The communication is done by RMI, thus it requires no parsing of XML messages, but alternative implementations of the Jini protocols could use almost any communication methods. The list of service-based architectures is long, including SOAP [23], Sun Web Services [16], J2EE [15], Brazil [14], ECA, WSDL, KnowNow [11], and a lot of other standards specifies parts of such an architecture, like describing services by XML documents, but the protocols and communications principles for discovering and requesting these services, must be provided by a another standard. Jini includes it all, protocols for communications, means for describing services and an advanced event-system for asynchronous notifications of clients in the community. Thus, compared to many of the other architectures Jini offers a fairly complex architectural backbone for spontaneous collaborations between peer-to-peer clients. More standards will appear, but the concepts of services and discoveries seams to survive, not just for the near future, which is a positive argument for using Jini, but the strong trends for sending everything by XML, may leave Jini as a stand alone product, which is hard to integrate with other systems or require extra experiences from the programmers. Of course Jini implementations could use or shift towards more XML-based protocols, but it might violate some of the original ideas of Jini, and for performance reason some of the other standards might be more appropriate.

7 4.2 Experience required Jini is more or less defined by a set of Java APIs, thus programming with Jini should be quiet easy for Java programmers. But, some experience and detailed knowledge of the Jini protocols and ideas are required for taking full advantage of the Jini technology. Set up a simple system, deploying a service, and looking it up from a client is quiet easy, and experienced Java programmers would be able to create a simple Jini service and client in less than an hour. The hard part of using Jini for such simple systems is not writing the actual code but setting up the Jini system. One of the strong arguments for using Jini is for creating self-maintaining and re-configurable devices, which can handle changing network connectivity. But, setting up the Jini system in the right way, actually requires some detailed knowledge of classpaths, codebases, HTTP repositories and security policies, and could easily require several hours of work, even for an experienced programmer. Providing the right stub and class files for clients through HTTP servers and codebases, usually requires several tests before everything is running smoothly. The good thing is, that a Lookup service never have to be restarted when first loaded, at least theoretically, thus when the system is set up it could run forever. Then the programmer could care less about these setting, and only additional HTTP servers may be required by new service providers, or perhaps multiple activation daemons, when running Jini in a distributed environment. Creating well-behaved services requires more than just a quick survey of the API documentation. Deploying a new instance of a service when recovering from a network failure or system breakdown, seams to work fine from the service providers perspective, but for clients in the community, who are looking for services of such a type, should not be notified about the appearance of a new service, when it comes alive again. The service has previously been discovered as a new service, and the client might already have lost interest for this particular service. The problem is that Jini services joining the community are assigned a unique service-id, which is transparent for all lookup services, where the services are deployed. Thus, after a system failure in the service provider, the service is restarted but the service-id is lost. It is avoided by setting a persistent-storage for all services, to which service-id and other configuration settings are stored. When restarting the service, settings from the storage could be retrieved and used in the join process. It is just one example, where the programmer has to know some details of the Jini protocols, in order to create a well-behaved service, because these ideas are not supported by the Jini API or utility classes. One way to work around these problems of using Jini is by relying on a service toolkit, which extends the Jini concept by more user-friendly interfaces, and hides some of the details of the low-level Jini protocols, by providing a set of utility and helper class for Jini system. Such a toolkit is described in [9]. 4.3 Spontaneous networking One of the fundamental ideas behind Jini is support for spontaneous networking, where network resources are not assumed to be reliable. The Jini system is a self-maintaining environment, where all peers could be notified about changes in the Jini community, such as deployment of new services or discarding existing ones. So a service or a resource is only trusted for a given lease duration, which is granted by the Jini community for any type of registration, such as service or event registrations. If a lease has not been renewed before it expires, the Jini community removes the registered service and free any resources related to that registration. This is a very strong mean for handling network systems with a high failure rate, or scenarios with a high number of spontaneous and dynamic arrivals and departures of collaborators of the network. It requires a minimum or almost none control and checking of the participating artifacts regarding their

8 current state and connectivity to the network, but is not a bullet-proof technique. Network failures could still happen within a lease period, resulting in dangling references. For a service, which is transferred as a serialized object to the lookup service, full access to service will continue even after the lease has expired, thus only the conceptual aspect of a service from a connected service provider is violated. If the deployed service object is just a proxy for a backend service, the client have to check for RemoteExceptions in any interactions with the service objects, which removes some of the transparent and high-level support for spontaneous networking, but the alternatives would require unlimited amount of performance. Any peer, who intentionally leaves the community before the end of the lease periods, should cancel all registrations to the community and discard deployed services. Then event notifications will be sent from the community to listening peers, which could have interest in such changes or even abort interaction with a service from a provider. The event system is an important piece of the spontaneous networking paradigm, because clients could listen for almost any type of changes, deployment or discarding of a particular service in the community. The event system is also efficient, because deployment of a new service requires no scanning of participants or initial negotiations before collaborations can be established. Jini offers little or no support for automating the process, clients must register for all events of interests and add appropriated listeners. A toolkit, like the one mentioned above, could enhance the interface to this event system, and provide a basic setup of registrations and listeners. 4.4 Serialized or backend The lookup service in a Jini community is the central repository for all services. More than one lookup service can exist within the same community, and the set of joined services do not have to be distinct. The utility classes of the reference implementation handles multiple joins as a single service completely transparent for the client, which is one of the strong arguments for the unique service-id mentioned above. A service object in a lookup service could be a full-blown service represented by a serialized object, or just a proxy object to a backend service residing in the service provider. A simple and full service is just a serialized Java object residing in the lookup service, which is completely independent of the JVM of the original service provider. This type of service is useful for providing static information or simple functional results. Providers have to be careful about using this type of service, because contextual information will be dependant and retrieved from the client not the provider. Any information send to the service object will never leave the client s JVM, thus it will have no impact on returned service objects for future requests to the lookup service, because the service is not transferred back to the lookup service after end of use. Such services is useful for instance to describe artifacts in a pervasive system, each device could provide a descriptive service, exposing any information, which could be useful and are allowed to be retrieved by any other artifact in the community. It could even be limited to a selected group of participants, by joining the service to a specific group in the lookup service, but the default Jini system, do not prohibit any client from joining any group. The alternative to the simple service object is a proxy object to a backend service. Typically, the service is implemented as an extension of the Unicast- RemoteObject, which is a server object from the Java RMI library. Stub objects to the service will be registered in the lookup service representing a remote interface through which the clients can interact with the backend service. In other words will the stub object act as a proxy object to the backend service, but the client cannot tell the difference. By this mean we can make the service

9 behavior dependant upon the current state of the provider, not the client, and even contextual information can be retrieved from the provider. This type of service is even more constructive than the simple, because all the simple services could be implemented by this mean as well (properly not that efficient), but there is a huge set of complex service, which could not be implemented by the simple service. Consider a moving artifact with some sort of positioning device, like a GPS receiver, it could provide a service giving proximity information to a certain object (could be an argument to a service method), which have to rely on sensor data of the provider. Alternatively, the provider could redeploy or update the service, whenever the context information is updated, which would scale very badly for most applications, but that is a trade-off between polling the service and change the service according to the current situation, which is left as a typical design decision to the programmer. 4.5 Event system One of the most important features of Jini is the event system, which is built on the same well-known principles from the GUI libraries of Java (AWT and Swing); the main difference is the distributed aspect. Some additional concerns have to be taken into account for a remote event model, compared to an event system in a single JVM. Within a single JVM we can assume a generated event always will be delivered, otherwise it would be most likely that the entire JVM has crashed, but in a distributed system failure could happen in the communication or the listener could have crashed or been temperately disconnected. Even the sequence of the event notifications cannot be assumed to be received by the same order of generation. Furthermore the latency for an event send from the generator to the listener must be considered in the design phase of the system. These problems makes it somewhat harder to work with events in a distributed system, than within a single JVM, but Jini comes with a utility packages (mercury), which is best described as an event-mailbox. 4.6 Administrating services Jini offers the opportunity that service providers can make their service administrable. Basically, it means that any client can modify the configuration of a deployed service, not the actual service object itself unless the service allows it, but settings like the attributes for the service, joined groups of the community, or even destroy the service. For a service to be administrable it must implement the Administrable interface, which defines a getadmin method. By invocation of this method, the service object returns an object implementing the administrable methods for the service. The Jini API defines 3 general interfaces for administrable services, named JoinAdmin, DestroyAdmin and StorageLocationAdmin. Through the first interface you can modify the set of lookup services to which the service is deployed, either by groups (multicast) or specific URLs (unicast), and the attributes set with the service. The DestroyAdmin allows you to destroy a service and notify the community from a client. The last one let you retrieve or specify a new storage location for services with persistent storage. It is still up to the service provider to decide whether a service should be administrable from clients or not, it depends on whether the service object implements the Administrable interface or not. The service provider itself could still administrate the service without implementing the interface, but clients, who have to lookup the service through a lookup service, would only have access to methods defined by the service provider, and the Administrable interface is a reasonable way to handle these ideas. The only problem with administrating services in Jini is security and authentication of the client, but this goes for every part of Jini. It seams that according

10 to the fundamental ideas of Jini, every participant of the community could be trusted. The lookup service does not care about which client request which services, as long as the service is available, a lease will be granted for the client. The only way to differentiate between the clients, is by grouping services in the lookup service, but there is no way of restricting which clients have access to which groups. Truthfully, most of these problems can be handled by extending the basic reference implementations from Sun, but then Jini fails as a complete and easy architecture for pervasive and ubiquitous computing. 4.7 Landlord leases The default lease principle of Jini described above could be manipulated in several ways. The Jini utility packages includes an API for customized lease handling, known as the Landlord lease system. Basically the Landlord system provides a set of interfaces and a paradigm of programming custom leases in Jini, but you have to do all the work by yourself. You must implement the Landlord interface for your lease grantor, which includes methods for renewing and cancellation of leases. How you will give access to the resources hold under lease, you have to decide by yourself, no methods has been specified, because it depends on the logical context and content of the lease grantor, as for the core Jini classes where register and notify are the names of the methods for registering services and event notifications respectively. Whenever you will grant a lease to a client, a new instance of the LandlordLease is created through the LandlordLeaseFactory, which is an inner class of the LandlordLease class, and takes a requested lease duration, a cookie for the resource, and a reference to the landlord object as arguments. The last part is important, because your landlord will be a remote object to your LandlordLeases, which are returned to the clients. By this mean LandlordLeases could be managed by the default LeaseRenewalManager of Jini, because when the manager wants the lease to be renewed the lease setup a RMI callback to the landlord, and asks for a new lease duration. You decide the leasing policy in terms of the methods for renewing and cancellation of lease, and the method for getting the lease in the first place. 4.8 User Interfaces Jini specifies no way of providing user interfaces for services; a client must rely on the interface specified by the service provider. This might be good enough for a number of smart Jini-enabled devices collaborating in a Jini community, where they are completely aware of each other and the services provided, but as soon as humans are participating in the community through PCs, PDAs, etc. and wants to interact with services, or the details of the service interface are unknown to the clients, more advanced user interfaces are required. Graphical User Interfaces (GUIs) is currently the way to support the most flexible interactions between humans and computers, thus the requirement for providing GUIs for services can not be left out of a successful architecture for pervasive computing. There are a number of ways to provide UIs for services, but several issues have to be taken into consideration, because in order to support a number of different client platforms, the service object must provide different GUIs, like for PDAs, Swing or AWT based, etc. A project named ServiceUI [1] has been started in the Jini Community [17], which hopefully will become part of the Jini specification in the future. The basic idea behind the ServiceUI project is that UIs should be provided as attributes to the service being deployed. Another problem of working with GUIs is static references to the GUI environment of the instantiator of the GUI object, which means that the service provider cannot instantiate the GUI as serialized objects

11 and provide them for the clients, because for most GUI libraries like Swing and AWT, the GUI object will then hold references to the memory space of the service provider. To work around this, the GUI objects provided as attributes to the service, must be GUI factories, so the real GUI will be instantiated by the client using the factory methods. The ServiceUI API defines a wrapper entry for these factories, known as the UIDescriptor public class UIDescriptor extends AbstractEntry { public String role; public String toolkit; public Set attributes; public MarshalledObject factory; } public UIDescriptor(); public UIDescriptor(String role, String toolkit, Set Attributes, MarshalledObject factory); public final Object getuifactory(classloader parentloader) throws IOException, ClassNotFoundException; where the toolkit indicates the required GUI library on the client, such as javax.swing or java.awt. The role specifies the purpose of the GUI, three types have been defined in the ServiceUI API; MainUI, AdminUI, and AboutUI. The set of attributes could contain any information used to describe the GUI. The factory member holds the factory object for the GUI as a marshalled object appropriate for serialization. Currently, eight standard factory classes have been defined in the ServiceUI API; DialogFactory, FrameFactory, JComponentFactory, JDialogFactory, JFrameFactory, JWindowFactory, PanelFactory, and WindowFactory, all representing the corresponding classes from the java.awt and javax.swing packages. Specialization still has to be performed in order to specialize for GUIs with other constraints, such as GUIs for PDAs, or they could be classified by the attributes. 4.9 Describing services by attributes In order to extend the search possibilities for services deployed in the community, services could have a list of attributes attached to the services. By this mean the clients do not have to know either the class-type or the serviceid of the service. The lookup process is initiated by the client setting up a ServiceTemplate, which partly consist of attributes to be matched by the services of interest. Attributes must implement the Jini Entry interface, but are typically specializations of the AbstractEntry class, which implement basic object methods. An entry A matches an entry B if it is the same or a subclass of B, and all their common public and non-primitive fields are equal. Jini comes with a set of standard entry types for describing standard information, such as service info, status, name, address, and location. Because attributes could be manipulated through the administrative interface, we must be able to control, whether an attribute could be changed by anyone or not. This is handled by the ServiceControlled interface, which is implemented by 3 of the standard entries (ServiceInfo, Status, ServiceType). When the client have received an administrative proxy object, like JoinAdmin, for the join process of a service provider, it will implement methods such as addattributes and modifyattributes. The administrative object will forward these messages to the JoinManager of the service, which have two versions of these methods. A strict version editing the attributes straight forward as expected, and a safe version with a flag indicating if services should be checked to determine if they are service controlled. If the administrative object forwards these messages through a checked safe version, then clients, who are attempting to manipulate service controlled entries will receive a SecurityException.

12 If services are discovered through the ServiceDiscoveryManager helper classes, a ServiceItemFilter could be used in the lookup process in addition to the ServiceTemplate. This interface defines a check method taking service items found by the standard lookup process as argument, and any additional checking of the service or attributes could be performed by customized implementations of this method, such as checking if a given value in an attributes is within an interval of accepted values, because traditional entry matching just compare entries by equality Java Spaces, support of transactions In addition to the infrastructure support, Jini offers a tuple space like service, known as JavaSpaces. As previous tuple spaces, such as the Linda System [8], JavaSpaces works as a distributed shared memory, but in contrast to tuples in the Linda System, JavaSpaces can store real Java objects, and be used to anything from a shared blackboard to a transaction model. The malaho service included in the Jini utility packages is a transaction manager for distributed clients. The approach for using transactions is rather simple, because basically you create a transaction object using the factory methods of the TransactionFactory class; either a standard or a nested transaction. Once the transaction has been created, clients can start grouping operations into the transaction. Currently, JavaSpaces is the only service in Jini supporting transactions, and the three basic operations on the space (read, take, and write) take a transaction object as argument. All operations grouped into a transaction using these methods will be executed when the transaction is being committed, and changes made to the space will first take effect if all operations are committed. Until the transaction have been committed, only clients holding the transaction object could read the space as it would look after committing the transaction, this is useful if a set of objects wants to hide information for all participants of the community. If they share a transaction object, the information could be put onto the space by one of the transaction holders and read by another. Eventually, the information could be securely removed from the space before the transaction will be committed, and other clients will never notice the content of the space has changed. As pervasive systems emerge into our everyday, many of these services, which are ubiquitously deployed in our environment, will be provided by companies and charged by use. Thus, transactions will be required in order to confirm if a user have received a service or not Jini on constrained devices The reference implementation of Jini provided by Sun is based on RMI from Java 2, which makes the real requirement of running Jini a JVM capable of running java code from the JDK 1.2. Thus, currently it is not possible to run Jini on PDA s using only reference implementations from Sun, because the latest implementation of the PersonalJava run-time environment for the Pocket PCs supports only JDK The J2ME implementations for Palm computers are even more constrained than PersonalJava. One way to run Jini on a Pocket PC, would be to the wipe out the Pocket PC operating system and install Linux onto the device, which includes a full JDK 1.4 (Blackdown). Several other approaches are possible as well, because PsiNaptic [18] have made their own implementation (JMatos) of the Jini protocols, which can collaborate with a standard Jini community. Recently, they have even enabled very constrained devices without a JVM or Java to participant in a Jini community and provide services to the community. Another approach is the SavaJE [19] operating system for ARM processors in

13 particular, which supports a full JDK 1.4.1, making it fully capable of running Jini. 5 Taking Jini for a Tango Previously, we have shown that creating a direct mapping between the TangO conceptual model and the Jini technology is clearly a hard job [10]. The different requirements for the TangO concepts in various applications make it impossible to make a simple and general solution fitting every purpose. Thus, it would be more interesting to investigate if Jini is useful and useable for implementing applications in respect to the TangO model. We will address the problems and concerns which have to be taking into account, when Jini is used as a networking architecture for such applications. The question is not whether it is possible to use Jini for such applications, because various workarounds and adapters can be added in standard Java code, but in stead we will examine if Jini is appropriate and do not violate the conceptual ideas of the model. Because the TangO model is closely connected to ubiquitous and pervasive systems in general, the outcome will clarify and expose the strengths and weaknesses of Jini supporting such systems as well. 5.1 Fundamental behavior of habitats and tangible objects Some of the most fundamental and important properties of artifacts in the pervasive world, is to dynamically move around and collaborate with a variety of other participants. In terms of the TangO model, we have various tangible objects which dynamically move from habitat to habitat and establish associations with other inhabitants. We could even have nested habitats, such as a local habitat limited by physical borders within a larger habitat, or logically as a more narrow classification of a wide collection of inhabitants. The number of levels in this hierarchy of nested habitats could be infinitive, but typically the most constrained habitats would have higher precedence, and only those have to be considered. Habitats with lower priority would just define some level of default behavior or functionality of the inhabitants. The basic functionality of moving in and out of habitats, establishing and breaking of associations between the habitat and the tangible object or among the tangible objects, is properly supported by Jini through the infrastructure for spontaneous networking. An advanced event system could be set up by the programmer in order to achieve the required model of the pervasive world with collaborative behavior. The challenge is collaborate within nested habitats. One way to achieve this by the help of Jini would be through groups in the community. Each lookup service is registered for one or more groups, into which the services can be registered. A client specifies the groups of interest in the multicast discovery protocol, thus we can selectively choose among a set of coordinated or nested habitats, but the clients have to be familiar with these group names, for instance through a service retrieval when entering the larger habitat. There is no built-in support for prioritizing the visible groups in a community, so the clients must chose the appropriate service or behavior using its own set of rules. This is a natural approach when thinking of human behavior, but it requires some amount of intelligence for complex systems. In many situations, when the tangible objects are augmentations of the real world, and closes the gap between a human user and the virtual world, a list of options could be presented to the user, and let the human do simple considerations. Jini could easily be extended with various tools supporting such ideas, but it would require some amount of work to do it in an intelligent way. The other part of merging or adjusting behavior from two or more habitats is

14 badly supported by the core implementation of Jini. Basically, it is the same problem, because if the functionality of a local habitat has to be adjusted or take advantage of functionality from the surrounding habitat, the habitat has to lookup the services and interprets them itself, and afterwards modifies its own behavior. Alternatively, the clients must merge these services from different habitats to gain something useful and appropriate, but it depends seriously on the problem of the current situation. Again helper classes and tools would be useful to assist the programmer with these decision rules. 5.2 The world of associations It is clearly hard to concretizing associations closer than those conceptual ideas presented in section 2. An association could be any kind of dependency or collaboration among participants. These associations are so different from system to system that is would be hard to systemize the development process, but the creation and establishment of associations are well supported by the Jini infrastructure. The event system would be handy to trigger the creations of new associations among participants in a habitat, or between the habitat and inhabitating tangible objects. Usually associations define some form of peer-to-peer communication between clients, which is easily achieved using backend services in Jini, but in some situations more than two participants must share a common communication media and collaborate all together. One participant could act as a master and manage and route the information to the others, but the approach suffers from the risk of a sudden failure of the master, due to network problems, system failures, etc. The JavaSpaces service available in the Jini system could be helpful in this situation, where all participants could communication through the space acting as an advanced blackboard for writing information and objects to other participants. This information could even be hidden for other participants by the help of transactions, but transactions could also be useful to secure individual parts of the collaborations. As anything, which is serializable, could be send as information or services through the Jini community, then almost anything programmable in Java could be used to construct associations, thus the programming model for association is as rich as we can get it, and should not cost us any trouble, just hard work for the programmer, because it would be hard to generalize from these associations. A toolkit could still offer some helper classes to setup the event system for creating and establishing the associations, and support the collaborative behavior between participants, so development and programming of these associations could be done on a more abstract level. 5.3 Describing unknown services to tangible objects Tangible objects would typically be introduced into new and unknown habitats when they move around in the pervasive world. They would have no idea of the functionality provided by the current habitat. They would try to retrieve these services and adjust or embed them into their current behavior, using the most profound and advanced intelligence of the artifact. Thus, the tangible objects require some form of dynamical adaptation and retrieval capabilities of unknown behavior at run-time. The hard part of using Jini to deploy services in a generic programming environment, is to describe the services in an appropriate way. These descriptions must be given in terms of attributes, but then these special attributes must be known by all clients and the service provider. Whereas dynamic class loading and codebases makes it possible for a client to retrieve services, which implementation is completely unknown beforehand. This is challenging in the perspective of pervasive computing, where artifacts could be introduced to a new habitat,

15 and are completely unaware of the functionality provided by the habitat. One way, would be to define a few general service types, which only have the purpose of transferring the real service with the whole functionality to the client, using dynamic class loading, codebases, and everything needed to setup the tangible object for the current habitat. Of course this mean raises the questions of vulnerability and privacy of the artifact, and the only means for preventing such attacks are security policies and trusted signed jar-files in codebases. Several attempts have tried to run Jini on top of an encrypted RMI, or similar protocols, but it requires a lot of customization. Another approach, which could be appropriate in some situations, is adapters or converting of services. In [22] it is described how a special service could be deployed in the Jini community with the sole purpose of converting services to an appropriate form. Basically, the service listens for services of known types that it has converters for. Whenever a service of type A is discovered, the service instantiates a new service of type B using the internal converter or adapter from type A to type B, and deploy the service into the community. When the original service is removed from the community, the converter service also takes care of cleaning up and removing the converted instances. It could be a useful mean for closing the gap between known and unknown services, by converting service to a more general form, known by more or all tangible objects. 5.4 Authentication, admission, and security When tangible objects move between habitats or retrieve functionality from the habitat, it all happen transparent to issues of privacy and security, not to speak about the constraints on being part of a habitat. From a conceptual point of view it is easy to limit the functionality to a selected group of artifacts, or decide if a tangible object is inhabitating a habitat or not. We have terms of security, privacy polices, user authentication, etc. to describe the allowances of the artifact, but from a programmer s point of view these concepts are not achieved that easy. Jini have little or no support for these problems, and it is up to the developer to customize the services and clients to achieve the necessary results. The default implementation of Jini from Sun works on standard RMI, thus there is no encryption or security whatsoever, but experiments and third party implementations have tried to cover this area, and could be used if necessary, because the Jini specification is open to almost any underlying protocols. Jini have no support for user authentication either, which could be useful by the lease grantor, in order to restrict the number of clients to a given service. The argument for not building authentication support into the lookup service, was that is would be fairly easy for hackers to sniff the authentication information, when no encryption is used and then pretend to be the user itself. Another problem of using authentication is that clients typically would trust lookup services, if they have logged in by a username and password. But, if a hacker has come across this information, he could setup a bugous lookup service, and Jini viruses could be born as services in this lookup service. Truthfully, some of these problems could be prevented by the sake of security policies and signed jar-files in codebases, as mentioned previously, but the problem of granting a lease for a service to a client is not just about identifying the user or not, it is also about context. Physical habitats are typically limited by physical borders, and it would clearly violate the concept of a habitat if the services are provided to any interested clients, which on their own decide if they are inhabitants or not. We cannot trust clients on such issues and grants for accepted clients only, would be a more natural approach too. The default lease grantor of a Jini community, the lookup service, has no restrictions for granting the lease. Any service provider registering a new service into the community will receive a lease registering for

16 a given lease duration, and clients requesting services from the lookup service will achieve full access to all services of a requested group. As described in the previous section the landlord leases is a way to implement custom lease grantors, but it suffers from some limitation in relation to decide whether a tangible object is in a habitat or not. For instance no information about the context of the client could be provided, when the lease have to be renewed. Thus, for a physical habitat, where crossing of borders determine if you are in or out, the landlord have to contact the clients and retrieve the necessary contextual information, which is inappropriate in stead of just providing the information in the lease renewing process, and makes the clients more complex in order to allow such a communication, but it gives a simple and general approach for the landlord system. Extending the default LandlordLease class is a technique to workaround this problem, but again you have to set up everything by yourself. Logical habitat could give a problem too, because we want to use the multicast discovery process of Jini in order not to set up any network addresses and configurations, but it would only work across a limiting number of gateways and not through firewalls. For a logical habitat the inhabitating artifacts could theoretically be spread all over the world, which seriously would disqualify the use of multicast protocols. To work around this problem, the client of a logical habitat must extract the URL of the lookup service representing the habitat, and use unicast discovery to reach this lookup service, when it is outside the reach of a multicast approach. 6 Pervasive Shopping Mall We have experimented with the implementation of a pervasive shopping mall, to get some practical experience with Jini for a scenario, which easily could be described in terms of the TangO conceptual model. We have tried to come up with some features for such a system, and the number of applications to support customers and staff members of the mall are endless, thus we haven chosen to implement just a few of these features, which were challenging to the Jini architecture. The system have never been tested in a real setup, which have not been the intension either, it has the sole purpose of experimenting and focusing on Jini as a supporting architecture. Thus, we allowed to use simplified techniques like GPS receivers to achieve the position information, which would not have worked in a real indoor shopping mall environment, but for a test case it does not matter. 6.1 Functionality of the system The main focus of the system was to provide support and information for customers in the mall. They could be provided with a map of the mall, showing their current location and properly highlight target stores. Shops could provide commercial to the customers, so when customers are in proximity of the shops, these ads will pop up on their screen if they accepted it by categories of interest. A number of other thoughts could be implemented as well, such as information about public transportation when you are close to an exit, announcement of special events in the mall, or even a friend-searching facility, which discover friends and relatives in the area, or a more general approach, which locate other people fulfilling some customized criteria. Such a feature might be restricted to a local habitat, such as a cafe-area or enabled when the same two people have stayed in the same narrow area and have been in proximity of each other for a while.

17 6.2 For the TangO point of view In terms of the TangO model, we could clearly identify some of the concepts in the mall example. The mall itself is a true definition of a habitat, not just for the customers acting as tangible objects within the mall, but also for the shops, which themselves are physical artifacts in the mall, but they are also informational artifacts to the mall, in relation to setting up the functionality of the mall, such as a map. 6.3 Implementation of the system The implementation of the system is build using the toolkit described in [9], which defines simple but general conceptual objects for the Jini community. The mall is the primary service provider in the system, which provides the functionality of the habitat. By the service made available to the customers of the mall, the customers could retrieve a GUI including a map and a message panel, where notification from shops and the mall would be announced according to the selected interests. The GUI is showed in figure 2. We have experimented with the ServiceUI API for transferring GUIs in the Jini Community, which also gave a convenient approach for announcing the functionality to the customer, even when they were unaware of the services provided. We just looked for services with an MainUI GUI object as an attribute. Fig. 2. Illustration of GUI downloaded by clients. Picture taken from hp.dk When the customer retrieves and initiates the UI hiding the low-level details of the functionality, they select the type of input for their current location, which could be either a GPS sensor on a specified COM port, or a selected file containing GPS sentences, which is intended for an indoor demo mode of the application. Coordinates from the GPS sensor is converted to Cartesian coordinates and related to the coordinates for the center of the mall, which can be inputted in the mall administrative window. The customer registers for messages and commercials through the GUI, and the event system of Jini makes it simpel to display new such services discovered or changed. Similar could the shops retrieve a map for selecting the spot in the mall, they want to rent. Afterwards they can start deploying commercials to the jini community in terms of serialized java object, because there is no backend functionality of a commercials. Both simpel text strings, styled documents and pictures are understood by the GUI of the customer.

The Jini architecture. Johan Petrini and Henning Sundvall

The Jini architecture. Johan Petrini and Henning Sundvall The Jini architecture Johan Petrini and Henning Sundvall Distributed Systems Fall 2002 Abstract A technology has been developed that exemplifies a new approach to the architecture of computing systems.

More information

Jini Technology Overview

Jini Technology Overview Jini Technology Overview Bob Scheifler Senior Staff Engineer Sun Microsystems, Inc Talk outline very brief Jini overview Jini lookup service in some depth service types and type matching attributes and

More information

Distributed Systems/Middleware JavaSpaces

Distributed Systems/Middleware JavaSpaces Distributed Systems/Middleware JavaSpaces Alessandro Sivieri Dipartimento di Elettronica e Informazione Politecnico, Italy sivieri@elet.polimi.it http://corsi.dei.polimi.it/distsys Slides based on previous

More information

A Tutorial on The Jini Technology

A Tutorial on The Jini Technology A tutorial report for SENG 609.22 Agent Based Software Engineering Course Instructor: Dr. Behrouz H. Far A Tutorial on The Jini Technology Lian Chen Introduction Jini network technology provides a simple

More information

Philadelphia Area Java Users' Group December 12, 2001

Philadelphia Area Java Users' Group December 12, 2001 Jini: What it is, how we use it, and where it's going Philadelphia Area Java Users' Group December 12, 2001 Michael Ogg CTO, Valaran Corporation http://www.valaran.com ogg@valaran.com Jini Overview v1.0

More information

Ubiquitous Computing Summer Supporting distributed applications. Distributed Application. Operating System. Computer Computer Computer.

Ubiquitous Computing Summer Supporting distributed applications. Distributed Application. Operating System. Computer Computer Computer. Episode 11: Middleware Hannes Frey and Peter Sturm University of Trier Middleware Supporting distributed applications Distributed Application Middleware Operating System Operating System Operating System

More information

Jini and Universal Plug and Play (UPnP) Notes

Jini and Universal Plug and Play (UPnP) Notes Jini and Universal Plug and Play () Notes Abstract Jini and are overlapping technologies. They both address the area of device connectivity and the ability to dynamically make use of new devices on the

More information

Service-Oriented Programming

Service-Oriented Programming Service-Oriented Programming by Guy Bieber, Lead Architect, ISD C4I, Motorola ABSTRACT - The Service-Oriented Programming (SOP) model is the most exciting revolution in programming since Object Oriented

More information

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications Distributed Objects and Remote Invocation Programming Models for Distributed Applications Extending Conventional Techniques The remote procedure call model is an extension of the conventional procedure

More information

Computer and Automation Research Institute Hungarian Academy of Sciences. Jini and the Grid. P. Kacsuk

Computer and Automation Research Institute Hungarian Academy of Sciences. Jini and the Grid. P. Kacsuk Computer and Automation Research Institute Hungarian Academy of Sciences Jini and the Grid P. Kacsuk Laboratory of Parallel and Distributed Systems MTA SZTAKI Research Institute kacsuk@sztaki.hu www.lpds.sztaki.hu

More information

Software Paradigms (Lesson 10) Selected Topics in Software Architecture

Software Paradigms (Lesson 10) Selected Topics in Software Architecture Software Paradigms (Lesson 10) Selected Topics in Software Architecture Table of Contents 1 World-Wide-Web... 2 1.1 Basic Architectural Solution... 2 1.2 Designing WWW Applications... 7 2 CORBA... 11 2.1

More information

UPnP Services and Jini Clients

UPnP Services and Jini Clients UPnP Services and Jini Clients Jan Newmarch School of Network Computing Monash University jan.newmarch@infotech.monash.edu.au Abstract UPnP is middleware designed for network plug and play. It is designed

More information

Jini Architecture Specification

Jini Architecture Specification Jini Architecture Specification A Jini system is a Java technology-centered, distributed system designed for simplicity, flexibility, and federation. The Jini architecture provides mechanisms for machines

More information

DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S. TANENBAUM MAARTEN VAN STEEN. Chapter 1. Introduction

DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S. TANENBAUM MAARTEN VAN STEEN. Chapter 1. Introduction DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S. TANENBAUM MAARTEN VAN STEEN Chapter 1 Introduction Modified by: Dr. Ramzi Saifan Definition of a Distributed System (1) A distributed

More information

BA (Hons) Degree in Computing Final Year Project Report (2001/2002)

BA (Hons) Degree in Computing Final Year Project Report (2001/2002) BA (Hons) Degree in Computing Final Year Project Report (2001/2002) A Framework for an Agent-based Development Environment with Jini / JavaSpace Internet Integrated Development Environment Framework (Internet-IDEF)

More information

JavaSpaces technology for distributed communication and collaboration. Chih-Yao Hsieh

JavaSpaces technology for distributed communication and collaboration. Chih-Yao Hsieh JavaSpaces technology for distributed communication and collaboration Chih-Yao Hsieh Computer Science and Engineering University of Texas at Arlington chsieh@cse.uta.edu Abstract This paper will give an

More information

Wendy Lee CHAPTER 1 INTRODUCTION. Jini which is based on Java platform is a network technology from Sun

Wendy Lee CHAPTER 1 INTRODUCTION. Jini which is based on Java platform is a network technology from Sun An Introduction to the Madison Framework for Connecting JINI with Mobile Devices By Wendy Lee CHAPTER 1 INTRODUCTION 1.1 Background Jini which is based on Java platform is a network technology from Sun

More information

Screen Saver Science: Realizing Distributed Parallel Computing with Jini and JavaSpaces

Screen Saver Science: Realizing Distributed Parallel Computing with Jini and JavaSpaces Screen Saver Science: Realizing Distributed Parallel Computing with Jini and JavaSpaces William L. George and Jacob Scott National Institute of Standards and Technology Information Technology Laboratory

More information

Implementing Jini Servers without Object Serialization Support

Implementing Jini Servers without Object Serialization Support Implementing Jini Servers without Object Serialization Support Tero Hasu Helsinki University of Technology Telecommunications Software and Multimedia Laboratory tero.hasu@hut.fi Abstract Jini is a technology

More information

Implementing a Numerical Data Access Service

Implementing a Numerical Data Access Service Implementing a Numerical Data Access Service Andrew Cooke October 2008 Abstract This paper describes the implementation of a J2EE Web Server that presents numerical data, stored in a database, in various

More information

[Course Overview] After completing this module you are ready to: Develop Desktop applications, Networking & Multi-threaded programs in java.

[Course Overview] After completing this module you are ready to: Develop Desktop applications, Networking & Multi-threaded programs in java. [Course Overview] The Core Java technologies and application programming interfaces (APIs) are the foundation of the Java Platform, Standard Edition (Java SE). They are used in all classes of Java programming,

More information

CS 575: Software Design

CS 575: Software Design CS 575: Software Design Introduction 1 Software Design A software design is a precise description of a system, using a variety of different perspectives Structural Behavioral Packaging Requirements, Test/Validation

More information

SERVICE DISCOVERY IN MOBILE PEER-TO-PEER ENVIRONMENT

SERVICE DISCOVERY IN MOBILE PEER-TO-PEER ENVIRONMENT SERVICE DISCOVERY IN MOBILE PEER-TO-PEER ENVIRONMENT Arto Hämäläinen Lappeenranta University of Technology P.O. Box 20, 53851 Lappeenranta, Finland arto.hamalainen@lut.fi Jari Porras Lappeenranta University

More information

The Myx Architectural Style

The Myx Architectural Style The Myx Architectural Style The goal of the Myx architectural style is to serve as an architectural style that is good for building flexible, high performance tool-integrating environments. A secondary

More information

DESIGN PATTERN - INTERVIEW QUESTIONS

DESIGN PATTERN - INTERVIEW QUESTIONS DESIGN PATTERN - INTERVIEW QUESTIONS http://www.tutorialspoint.com/design_pattern/design_pattern_interview_questions.htm Copyright tutorialspoint.com Dear readers, these Design Pattern Interview Questions

More information

Trading Services for Distributed Enterprise Communications. Dr. Jean-Claude Franchitti. Presentation Agenda

Trading Services for Distributed Enterprise Communications. Dr. Jean-Claude Franchitti. Presentation Agenda Page 1 Trading Services for Distributed Enterprise Communications Dr. Jean-Claude Franchitti Presentation Agenda Enterprise Systems Technology Classifications Naming, Directory, and Trading Services in

More information

Electronic Payment Systems (1) E-cash

Electronic Payment Systems (1) E-cash Electronic Payment Systems (1) Payment systems based on direct payment between customer and merchant. a) Paying in cash. b) Using a check. c) Using a credit card. Lecture 24, page 1 E-cash The principle

More information

T NAF: Jini & EJB

T NAF: Jini & EJB T-110.453 NAF: Jini & EJB Dr. Pekka Nikander Chief Scientist, Ericsson Research NomadicLab Adjunct Professor (docent), Helsinki University of Technology Lecture outline Introduction Jini model Lookup Leases

More information

ESET Remote Administrator 6. Version 6.0 Product Details

ESET Remote Administrator 6. Version 6.0 Product Details ESET Remote Administrator 6 Version 6.0 Product Details ESET Remote Administrator 6.0 is a successor to ESET Remote Administrator V5.x, however represents a major step forward, completely new generation

More information

JavaStat: A Distributed Statistical Computing Environment

JavaStat: A Distributed Statistical Computing Environment New URL: http://www.r-project.org/conferences/dsc-2001/ DSC 2001 Proceedings of the 2nd International Workshop on Distributed Statistical Computing March 15-17, Vienna, Austria http://www.ci.tuwien.ac.at/conferences/dsc-2001

More information

Distributed Technologies - overview & GIPSY Communication Procedure

Distributed Technologies - overview & GIPSY Communication Procedure DEPARTMENT OF COMPUTER SCIENCE CONCORDIA UNIVERSITY Distributed Technologies - overview & GIPSY Communication Procedure by Emil Vassev June 09, 2003 Index 1. Distributed Applications 2. Distributed Component

More information

Page 1. Extreme Java G Session 8 - Sub-Topic 2 OMA Trading Services

Page 1. Extreme Java G Session 8 - Sub-Topic 2 OMA Trading Services Extreme Java G22.3033-007 Session 8 - Sub-Topic 2 OMA Trading Services Dr. Jean-Claude Franchitti New York University Computer Science Department Courant Institute of Mathematical Sciences Trading Services

More information

A Custom Lookup Service for UPnP Services and Jini Clients

A Custom Lookup Service for UPnP Services and Jini Clients A Custom Lookup Service for UPnP Services and Jini Clients Jan Newmarch School of Network Computing Monash University jan.newmarch@infotech.monash.edu.au Abstract UPnP is middleware designed for network

More information

ARCHER Metadata Schema Editor. User Guide METADATA EDITOR. Version: 1.1 Date: Status: Release

ARCHER Metadata Schema Editor. User Guide METADATA EDITOR. Version: 1.1 Date: Status: Release ARCHER Metadata Schema Editor User Guide METADATA EDITOR Version: 1.1 Date: 2008-08-26 Status: Release Change History Version Date Author Description 0.1D 2008-04-15 Ron Chernich First Draft 1.0 2008-05-01

More information

Open challenges in ubiquitous and net-centric computing middleware

Open challenges in ubiquitous and net-centric computing middleware Open challenges in ubiquitous and net-centric computing middleware bodhuin/canfora/preziosi/tortorella@unisannio.it RCOST Research Centre On Software Technology University of Sannio Benevento, Italy Thierry

More information

Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions

Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions Chapter 1: Solving Integration Problems Using Patterns 2 Introduction The Need for Integration Integration Challenges

More information

Distributed Systems Theory 4. Remote Procedure Call. October 17, 2008

Distributed Systems Theory 4. Remote Procedure Call. October 17, 2008 Distributed Systems Theory 4. Remote Procedure Call October 17, 2008 Client-server model vs. RPC Client-server: building everything around I/O all communication built in send/receive distributed computing

More information

Chapter 18 Distributed Systems and Web Services

Chapter 18 Distributed Systems and Web Services Chapter 18 Distributed Systems and Web Services Outline 18.1 Introduction 18.2 Distributed File Systems 18.2.1 Distributed File System Concepts 18.2.2 Network File System (NFS) 18.2.3 Andrew File System

More information

Two Phase Commit Protocol. Distributed Systems. Remote Procedure Calls (RPC) Network & Distributed Operating Systems. Network OS.

Two Phase Commit Protocol. Distributed Systems. Remote Procedure Calls (RPC) Network & Distributed Operating Systems. Network OS. A distributed system is... Distributed Systems "one on which I cannot get any work done because some machine I have never heard of has crashed". Loosely-coupled network connection could be different OSs,

More information

Creational. Structural

Creational. Structural Fitness for Future of Design Patterns & Architectural Styles Design patterns are difficult to teach, so we conducted a class collaboration where we all researched and reported on a variety of design patterns

More information

Middleware. Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004

Middleware. Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004 Middleware Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004 Outline Web Services Goals Where do they come from? Understanding middleware Middleware as infrastructure Communication

More information

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico Modellistica Medica Maria Grazia Pia INFN Genova Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico 2002-2003 Lezione 9 OO modeling Design Patterns Structural Patterns Behavioural Patterns

More information

15-498: Distributed Systems Project #1: Design and Implementation of a RMI Facility for Java

15-498: Distributed Systems Project #1: Design and Implementation of a RMI Facility for Java 15-498: Distributed Systems Project #1: Design and Implementation of a RMI Facility for Java Dates of Interest Assigned: During class, Friday, January 26, 2007 Due: 11:59PM, Friday, February 13, 2007 Credits

More information

Software Architecture

Software Architecture Software Architecture Does software architecture global design?, architect designer? Overview What is it, why bother? Architecture Design Viewpoints and view models Architectural styles Architecture asssessment

More information

UNIT V *********************************************************************************************

UNIT V ********************************************************************************************* Syllabus: 1 UNIT V 5. Package Diagram, Component Diagram, Deployment Diagram (08 Hrs, 16 Marks) Package Diagram: a. Terms and Concepts Names, Owned Elements, Visibility, Importing and Exporting b. Common

More information

Distributed Systems. The main method of distributed object communication is with remote method invocation

Distributed Systems. The main method of distributed object communication is with remote method invocation Distributed Systems Unit III Syllabus:Distributed Objects and Remote Invocation: Introduction, Communication between Distributed Objects- Object Model, Distributed Object Modal, Design Issues for RMI,

More information

1.1 Observer Pattern for Web Services

1.1 Observer Pattern for Web Services A pre-release (version 2004-07-26) of a section from a masters thesis by Tomas Johansson, tojo@kth.se 1/5 1.1 Observer Pattern for Web Services 1.1.1 Name and Source Observer pattern ( for Web Services

More information

Thin Client for Web Using Swing

Thin Client for Web Using Swing Thin Client for Web Using Swing Raffaello Giulietti and Sandro Pedrazzini SUPSI, Dipartimento di Informatica ed Elettrotecnica, Galleria 2, CH-6928 Manno, Switzerland TINET SA CH-6928 Manno, Switzerland

More information

Chapter 4. Fundamental Concepts and Models

Chapter 4. Fundamental Concepts and Models Chapter 4. Fundamental Concepts and Models 4.1 Roles and Boundaries 4.2 Cloud Characteristics 4.3 Cloud Delivery Models 4.4 Cloud Deployment Models The upcoming sections cover introductory topic areas

More information

Menu Driven Configuration A CFEngine Special Topics Handbook

Menu Driven Configuration A CFEngine Special Topics Handbook Menu Driven Configuration A CFEngine Special Topics Handbook CFEngine AS Efficient organizations strive for simplicity and clockwork repetitive procedures to extend and streamline their operations, but

More information

iserver Free Archimate ArchiMate 1.0 Template Stencil: Getting from Started Orbus Guide Software Thanks for Downloading the Free ArchiMate Template! Orbus Software have created a set of Visio ArchiMate

More information

The Design Patterns Matrix From Analysis to Implementation

The Design Patterns Matrix From Analysis to Implementation The Design Patterns Matrix From Analysis to Implementation This is an excerpt from Shalloway, Alan and James R. Trott. Design Patterns Explained: A New Perspective for Object-Oriented Design. Addison-Wesley

More information

DreamFactory Security Guide

DreamFactory Security Guide DreamFactory Security Guide This white paper is designed to provide security information about DreamFactory. The sections below discuss the inherently secure characteristics of the platform and the explicit

More information

05 Indirect Communication

05 Indirect Communication 05 Indirect Communication Group Communication Publish-Subscribe Coulouris 6 Message Queus Point-to-point communication Participants need to exist at the same time Establish communication Participants need

More information

Service Discovery in Pervasive Computing Environments

Service Discovery in Pervasive Computing Environments Service Discovery in Pervasive Computing Environments Presented by Jamal Lewis and Shruti Pathak CS 570 Computer Networks Instructor Dr. Feng Zhu Introduction What is it? Pervasive Computing Environments

More information

SAS 9.2 Foundation Services. Administrator s Guide

SAS 9.2 Foundation Services. Administrator s Guide SAS 9.2 Foundation Services Administrator s Guide The correct bibliographic citation for this manual is as follows: SAS Institute Inc. 2009. SAS 9.2 Foundation Services: Administrator s Guide. Cary, NC:

More information

Architectural Styles I

Architectural Styles I Architectural Styles I Software Architecture VO/KU (707023/707024) Roman Kern KTI, TU Graz 2015-01-07 Roman Kern (KTI, TU Graz) Architectural Styles I 2015-01-07 1 / 86 Outline 1 Non-Functional Concepts

More information

Page 1. CS 194: Distributed Systems Distributed Coordination-based Systems. Coordination Systems. Taxonomy of Coordination Models

Page 1. CS 194: Distributed Systems Distributed Coordination-based Systems. Coordination Systems. Taxonomy of Coordination Models Coordination Systems CS 194: Distributed Systems Distributed Coordination-based Systems Scott Shenker and Ion Stoica Computer Science Division Department of Electrical Engineering and Computer Sciences

More information

Chapter 10 Web-based Information Systems

Chapter 10 Web-based Information Systems Prof. Dr.-Ing. Stefan Deßloch AG Heterogene Informationssysteme Geb. 36, Raum 329 Tel. 0631/205 3275 dessloch@informatik.uni-kl.de Chapter 10 Web-based Information Systems Role of the WWW for IS Initial

More information

CS5412: TRANSACTIONS (I)

CS5412: TRANSACTIONS (I) 1 CS5412: TRANSACTIONS (I) Lecture XVII Ken Birman Transactions 2 A widely used reliability technology, despite the BASE methodology we use in the first tier Goal for this week: in-depth examination of

More information

A RESOURCE AWARE SOFTWARE ARCHITECTURE FEATURING DEVICE SYNCHRONIZATION AND FAULT TOLERANCE

A RESOURCE AWARE SOFTWARE ARCHITECTURE FEATURING DEVICE SYNCHRONIZATION AND FAULT TOLERANCE A RESOURCE AWARE SOFTWARE ARCHITECTURE FEATURING DEVICE SYNCHRONIZATION AND FAULT TOLERANCE Chris Mattmann University of Southern California University Park Campus, Los Angeles, CA 90007 mattmann@usc.edu

More information

BEAAquaLogic. Service Bus. Interoperability With EJB Transport

BEAAquaLogic. Service Bus. Interoperability With EJB Transport BEAAquaLogic Service Bus Interoperability With EJB Transport Version 3.0 Revised: February 2008 Contents EJB Transport Introduction...........................................................1-1 Invoking

More information

Executing Evaluations over Semantic Technologies using the SEALS Platform

Executing Evaluations over Semantic Technologies using the SEALS Platform Executing Evaluations over Semantic Technologies using the SEALS Platform Miguel Esteban-Gutiérrez, Raúl García-Castro, Asunción Gómez-Pérez Ontology Engineering Group, Departamento de Inteligencia Artificial.

More information

Socket attaches to a Ratchet. 2) Bridge Decouple an abstraction from its implementation so that the two can vary independently.

Socket attaches to a Ratchet. 2) Bridge Decouple an abstraction from its implementation so that the two can vary independently. Gang of Four Software Design Patterns with examples STRUCTURAL 1) Adapter Convert the interface of a class into another interface clients expect. It lets the classes work together that couldn't otherwise

More information

A Load Balancing technique through Jini in Distributed Processing

A Load Balancing technique through Jini in Distributed Processing International Conference of Advance Research and Innovation (-2015) A Load Balancing technique through Jini in Distributed Processing Rajeev Sharma *, Rupak Sharma Department of Computer ScienceEngineering,

More information

DISTRIBUTED OBJECTS AND REMOTE INVOCATION

DISTRIBUTED OBJECTS AND REMOTE INVOCATION DISTRIBUTED OBJECTS AND REMOTE INVOCATION Introduction This chapter is concerned with programming models for distributed applications... Familiar programming models have been extended to apply to distributed

More information

Incompatibility Dimensions and Integration of Atomic Commit Protocols

Incompatibility Dimensions and Integration of Atomic Commit Protocols The International Arab Journal of Information Technology, Vol. 5, No. 4, October 2008 381 Incompatibility Dimensions and Integration of Atomic Commit Protocols Yousef Al-Houmaily Department of Computer

More information

CptS 464/564 Lecture 18

CptS 464/564 Lecture 18 CptS 464/564 Lecture 18 2nd November 2004 Checkpoint What have we covered so far? Paradigms and Models: frameworks for the discussion of DS What is the plan ahead? Next: examples of distributed systems

More information

Chapter 9. Software Testing

Chapter 9. Software Testing Chapter 9. Software Testing Table of Contents Objectives... 1 Introduction to software testing... 1 The testers... 2 The developers... 2 An independent testing team... 2 The customer... 2 Principles of

More information

Comprehensive Guide to Evaluating Event Stream Processing Engines

Comprehensive Guide to Evaluating Event Stream Processing Engines Comprehensive Guide to Evaluating Event Stream Processing Engines i Copyright 2006 Coral8, Inc. All rights reserved worldwide. Worldwide Headquarters: Coral8, Inc. 82 Pioneer Way, Suite 106 Mountain View,

More information

Integrating Handhelds into Environments of Cooperating Smart Everyday Objects

Integrating Handhelds into Environments of Cooperating Smart Everyday Objects Integrating Handhelds into Environments of Cooperating Smart Everyday Objects Frank Siegemund and Tobias Krauer Institute for Pervasive Computing Department of Computer Science ETH Zurich, Switzerland

More information

CHAPTER - 4 REMOTE COMMUNICATION

CHAPTER - 4 REMOTE COMMUNICATION CHAPTER - 4 REMOTE COMMUNICATION Topics Introduction to Remote Communication Remote Procedural Call Basics RPC Implementation RPC Communication Other RPC Issues Case Study: Sun RPC Remote invocation Basics

More information

Database Management System Prof. D. Janakiram Department of Computer Science & Engineering Indian Institute of Technology, Madras Lecture No.

Database Management System Prof. D. Janakiram Department of Computer Science & Engineering Indian Institute of Technology, Madras Lecture No. Database Management System Prof. D. Janakiram Department of Computer Science & Engineering Indian Institute of Technology, Madras Lecture No. # 20 Concurrency Control Part -1 Foundations for concurrency

More information

Introduction to Distributed Systems

Introduction to Distributed Systems Introduction to Distributed Systems Other matters: review of the Bakery Algorithm: why can t we simply keep track of the last ticket taken and the next ticvket to be called? Ref: [Coulouris&al Ch 1, 2]

More information

Einführung in die Erweiterte Realität

Einführung in die Erweiterte Realität Einführung in die Erweiterte Realität - 7. Context Toolkit - Gudrun Klinker Dec. 2, 2003 Literature Anind K. Dey, Gregory D. Abowd, and Danieal Salber, A Conceptual Framework and a Toolkit for Supporting

More information

Adaptive Cluster Computing using JavaSpaces

Adaptive Cluster Computing using JavaSpaces Adaptive Cluster Computing using JavaSpaces Jyoti Batheja and Manish Parashar The Applied Software Systems Lab. ECE Department, Rutgers University Outline Background Introduction Related Work Summary of

More information

COURSE SYLLABUS ANDROID. Industrial Training (4 MONTHS) PH : , Vazhoor Road Changanacherry-01.

COURSE SYLLABUS ANDROID. Industrial Training (4 MONTHS) PH : , Vazhoor Road Changanacherry-01. COURSE SYLLABUS ANDROID Industrial Training (4 MONTHS) PH : 0481 2411122, 09495112288 E-Mail : info@faithinfosys.com www.faithinfosys.com Marette Tower Near No. 1 Pvt. Bus Stand Vazhoor Road Changanacherry-01

More information

Assignment 5. Georgia Koloniari

Assignment 5. Georgia Koloniari Assignment 5 Georgia Koloniari 2. "Peer-to-Peer Computing" 1. What is the definition of a p2p system given by the authors in sec 1? Compare it with at least one of the definitions surveyed in the last

More information

CMSC 433 Programming Language Technologies and Paradigms. Spring 2013

CMSC 433 Programming Language Technologies and Paradigms. Spring 2013 1 CMSC 433 Programming Language Technologies and Paradigms Spring 2013 Distributed Computing Concurrency and the Shared State This semester we have been looking at concurrent programming and how it is

More information

Advanced Topics in Operating Systems

Advanced Topics in Operating Systems Advanced Topics in Operating Systems MSc in Computer Science UNYT-UoG Dr. Marenglen Biba 8-9-10 January 2010 Lesson 10 01: Introduction 02: Architectures 03: Processes 04: Communication 05: Naming 06:

More information

The goal of the Pangaea project, as we stated it in the introduction, was to show that

The goal of the Pangaea project, as we stated it in the introduction, was to show that Chapter 5 Conclusions This chapter serves two purposes. We will summarize and critically evaluate the achievements of the Pangaea project in section 5.1. Based on this, we will then open up our perspective

More information

ADVANCED SOFTWARE DESIGN LECTURE 4 SOFTWARE ARCHITECTURE

ADVANCED SOFTWARE DESIGN LECTURE 4 SOFTWARE ARCHITECTURE ADVANCED SOFTWARE DESIGN LECTURE 4 SOFTWARE ARCHITECTURE Dave Clarke 1 THIS LECTURE At the end of this lecture you will know notations for expressing software architecture the design principles of cohesion

More information

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University CS 555: DISTRIBUTED SYSTEMS [RPC & DISTRIBUTED OBJECTS] Shrideep Pallickara Computer Science Colorado State University Frequently asked questions from the previous class survey XDR Standard serialization

More information

CS2 Advanced Programming in Java note 8

CS2 Advanced Programming in Java note 8 CS2 Advanced Programming in Java note 8 Java and the Internet One of the reasons Java is so popular is because of the exciting possibilities it offers for exploiting the power of the Internet. On the one

More information

A short introduction to Web Services

A short introduction to Web Services 1 di 5 17/05/2006 15.40 A short introduction to Web Services Prev Chapter Key Concepts Next A short introduction to Web Services Since Web Services are the basis for Grid Services, understanding the Web

More information

(9A05803) WEB SERVICES (ELECTIVE - III)

(9A05803) WEB SERVICES (ELECTIVE - III) 1 UNIT III (9A05803) WEB SERVICES (ELECTIVE - III) Web services Architecture: web services architecture and its characteristics, core building blocks of web services, standards and technologies available

More information

Remote Method Invocation Benoît Garbinato

Remote Method Invocation Benoît Garbinato Remote Method Invocation Benoît Garbinato 1 Fundamental idea (1) Rely on the same programming paradigm for distributed applications as for centralized applications In procedural languages, we will rely

More information

Internet Application Developer

Internet Application Developer Internet Application Developer SUN-Java Programmer Certification Building a Web Presence with XHTML & XML 5 days or 12 evenings $2,199 CBIT 081 J A V A P R O G R A M M E R Fundamentals of Java and Object

More information

Contextion: A Framework for Developing Context-Aware Mobile Applications

Contextion: A Framework for Developing Context-Aware Mobile Applications Contextion: A Framework for Developing Context-Aware Mobile Applications Elizabeth Williams, Jeff Gray Department of Computer Science, University of Alabama eawilliams2@crimson.ua.edu, gray@cs.ua.edu Abstract

More information

Linda, JavaSpaces & Jini

Linda, JavaSpaces & Jini ECE 451/566 - Introduction to Parallel and Distributed Computing Linda, JavaSpaces & Jini Manish Parashar parashar@ece.rutgers.edu Department of Electrical & Computer Engineering Rutgers University Linda

More information

JXTA for J2ME Extending the Reach of Wireless With JXTA Technology

JXTA for J2ME Extending the Reach of Wireless With JXTA Technology JXTA for J2ME Extending the Reach of Wireless With JXTA Technology Akhil Arora Carl Haywood Kuldip Singh Pabla Sun Microsystems, Inc. 901 San Antonio Road Palo Alto, CA 94303 USA 650 960-1300 The Wireless

More information

Grid Programming Models: Current Tools, Issues and Directions. Computer Systems Research Department The Aerospace Corporation, P.O.

Grid Programming Models: Current Tools, Issues and Directions. Computer Systems Research Department The Aerospace Corporation, P.O. Grid Programming Models: Current Tools, Issues and Directions Craig Lee Computer Systems Research Department The Aerospace Corporation, P.O. Box 92957 El Segundo, CA USA lee@aero.org Domenico Talia DEIS

More information

Design Pattern What is a Design Pattern? Design Pattern Elements. Almas Ansari Page 1

Design Pattern What is a Design Pattern? Design Pattern Elements. Almas Ansari Page 1 What is a Design Pattern? Each pattern Describes a problem which occurs over and over again in our environment,and then describes the core of the problem Novelists, playwrights and other writers rarely

More information

COURSE SYLLABUS. Complete JAVA. Industrial Training (3 MONTHS) PH : , Vazhoor Road Changanacherry-01.

COURSE SYLLABUS. Complete JAVA. Industrial Training (3 MONTHS) PH : , Vazhoor Road Changanacherry-01. COURSE SYLLABUS Complete JAVA Industrial Training (3 MONTHS) PH : 0481 2411122, 09495112288 E-Mail : info@faithinfosys.com www.faithinfosys.com Marette Tower Near No. 1 Pvt. Bus Stand Vazhoor Road Changanacherry-01

More information

BIOTECHNOLOGY COMPUTING FACILITY. OnCore Facility Scheduler v1.0. OCF Scheduler. Resource User Guide

BIOTECHNOLOGY COMPUTING FACILITY. OnCore Facility Scheduler v1.0. OCF Scheduler. Resource User Guide BIOTECHNOLOGY COMPUTING FACILITY OnCore Facility Scheduler v1.0 OCF Scheduler Resource User Guide OCF Scheduler RESOURCE USER GUIDE BIOTECHNOLOGY COMPUTING FACILITY - DIVISION OF BIOTECHNOLOGY Arizona

More information

Getting started with Inspirometer A basic guide to managing feedback

Getting started with Inspirometer A basic guide to managing feedback Getting started with Inspirometer A basic guide to managing feedback W elcome! Inspirometer is a new tool for gathering spontaneous feedback from our customers and colleagues in order that we can improve

More information

DS 2009: middleware. David Evans

DS 2009: middleware. David Evans DS 2009: middleware David Evans de239@cl.cam.ac.uk What is middleware? distributed applications middleware remote calls, method invocations, messages,... OS comms. interface sockets, IP,... layer between

More information

WHITE PAPER Cloud FastPath: A Highly Secure Data Transfer Solution

WHITE PAPER Cloud FastPath: A Highly Secure Data Transfer Solution WHITE PAPER Cloud FastPath: A Highly Secure Data Transfer Solution Tervela helps companies move large volumes of sensitive data safely and securely over network distances great and small. We have been

More information

MONitoring Agents using a Large Integrated Services Architecture. Iosif Legrand California Institute of Technology

MONitoring Agents using a Large Integrated Services Architecture. Iosif Legrand California Institute of Technology MONitoring Agents using a Large Integrated s Architecture California Institute of Technology Distributed Dynamic s Architecture Hierarchical structure of loosely coupled services which are independent

More information

Applying Code Generation Approach in Fabrique Kirill Kalishev, JetBrains

Applying Code Generation Approach in Fabrique Kirill Kalishev, JetBrains november 2004 Applying Code Generation Approach in Fabrique This paper discusses ideas on applying the code generation approach to help the developer to focus on high-level models rather than on routine

More information