Sponsored Link •
Frank Sommers and Bill Venners recently caught up with Jini architect Jim Waldo at JavaWorld's San Francisco office. In this interview, Waldo talks about the impact of mobility on distributed systems, Jini as a tool to reengineer the corporate MIS infrastructure, the importance of type systems, and the semantic web. (November, 2001)
Frank Sommers: During your JavaOne 2001 presentation, you talked about how the network's "edge" forces us to rethink how we build our networked information systems. Considering that the three largest cell phone manufacturers alone produce about six new cell phones every second, most of which access the Internet, that edge is expanding very fast. How does mobility impact our network-based software architectures?
Jim Waldo: Mobility is an interesting new wrinkle in our networks. We have always built networks with the idea that the things the network hooks together don't move around much. If you move your machine from one place to another, it essentially becomes a different machine. It's hard to convince the network that it's the same. Your identity may be the same if you have certificates issued by a certificate authority, or if you can log in through some network-wide login mechanism. But, say, if you take your laptop from one office to another, your machine gets a new IP address through DHCP (Dynamic Host Configuration Protocol) or some other mechanism. As far as the network is concerned, it's a different machine.
One way to deal with that problem is to consider the machinery and the things that move around as being "relocateable" services. Just as objects can move around the network, objects can move outside the network and relocate themselves, find services, and offer services that are in a different place.
If I move from place to place, there are pieces of information associated with me: my current phone number, my current location, the home directory with which I'm working, and where my mail is delivered. One way to deal with this is to have a static location where everything that knows my location goes, and that then forwards the needed information to me. This is the notion mobile IP takes, for instance. It works as long as you assume that the network doesn't break and you're never out of touch with your home network -- assumptions that are, generally, false.
Another way to deal with this is to say that when I move from one place to another, there are a set of services associated with me: a service that tells where I am, or one that tells how to contact me. You need to register those services locally, and propagate those services on the network.
The easiest way to do that is to return to where those services were and add a forwarding address. But you may also have a hierarchy of lookup services, so that when you look for services that represent an individual, you have some hint as to where that person last was. But if hints don't work, you may go into higher-level lookup services until something directs you to the current location.
In essence, the physical device becomes an implementation of the service. Implementations change over time. So, if you move from one place to another, you may change the implementation of the machine by which the service is being offered, but it's the same service.
Frank Sommers: Many people associate mobility with small devices. But you're saying that size does not matter when it comes to mobility.
Jim Waldo: Small devices are an interesting form of a service's mobile implementation. But Jini is not about devices any more than Java is about applets. Jini is about services and their users, and hooking the two together. You can implement those services in any appropriate way: as a device, as a piece of software, or as a collection of other services. It really isn't about devices. It's about accomplishing things on the network, and isolating what you want done, described by a Java interface, from how it gets done, which is an implementation.
Motion is really just a form of change. Jini is really about networks' ability to change without having to stop and restart. It lets networks change in chaotic and spontaneous ways. One way change can happen is when a networked service moves around. Another way is when something gets pulled off or put on the network. Those are all ways networks experience change all the time.