Upcoming Events

Cloud Connect
Santa Clara
Feb 13-16, 2012

Cloud Connect brings together the entire cloud eco-system to better understand the transformation we're experiencing and promises to be the defining event of the cloud computing industry. Learn about the latest cloud technologies and platforms from thought leaders in Cloud Connect’s comprehensive conference.

Register Now!

More Events »

Subscribe to Newsletter

  • Keep up with all of the latest news and analysis on the fast-moving IT industry with Network Computing newsletters.
Sign Up





Java Brews Up a Storm in the Enterprise

Christy Hudgins-Bonafield interviewed Galen Hunt and Yi-Min Wang researchers working on the Microsoft Millennium project.

For Microsoft's description of the Millennium project go to HTTP://research.microsoft.com/sn/millennium

Q: The way I understand Millennium is that it's primarily aimed at cloaking the complexity of distributed applications from the applications developer with secondary goals of network discovery and performance-tuning. Is this accurate? How would you describe the architecture's goals?

Hunt: Millennium is a long-term research project to eliminate the distinction between distributed and local computing. The primary goal is to help people who write applications or use distributed computers, so that it appears they have a single computer before them. Self-tuning and self-configuring are enabling features for the first goal. In other words, if we create a system where you don't worry about distribution, you won't use it if its performance is terrible. By making it self-tuning, self-configuring and self-modifying, it can adapt and adjust its behavior and exploit performance opportunities so you get performance out of the system and don't pay a price for the higher level of abstraction.

Q: How does it accomplish this performance measurement?

Hunt: The Coign prototype (working technology) decides how to distribute your program and do it automatically for you to get the best performance. It does some profiling inside the application. Coign modifies the application to measure how its components communicate and how often. Profiling data is combined with a network-discovery system that figures out how much bandwidth is available on the network, what the latency is of the network and how fast server CPUs are. By combining information about the application with this network information we harvest through profiling technology and discovery, we can tune the application.

Q: Is this done during development or proactively as the application works across the network?

Hunt: It's a little of both. The end goal is to do it proactively on the running application. The system will modify the application and modify itself to get the best possible performance. Our goal is to take it completely out of the application developer's hands. In Coign, that has occurred. In Coign, the application developer doesn't know about the performance of the network or even that he or she is creating a distributed application; and the system adjusts the application to get the best performance.

Q: How does the OS adapt to take advantage of new resources?

Hunt: If you are just upgrading the network to a faster network, the system automatically adjusts through the mechanisms I've described. If you imagine putting the Holodeck on the computer, you will need to have drivers and things to talk to. No one has a magic solution to plugging an arbitrary device into a network and anything can use it. Anyone who says they have such a magic solution is selling smoke and mirrors.

Q: What are the most fundamental technological differences between the research directions defined in Millennium and those outlined so far for Sun's Jini?

Hunt: At a very high level, Sun is attempting to provide a "dial-tone" infrastructure between distributed programs. That is, a way to connect, say, your Java app on one machine to a printer on another. Microsoft already has a dial-tone infrastructure for communicating between distributed programs. The Millennium project is trying to make the dial tone completely invisible. We want to make creating distributed applications at least as easy as creating nondistributed applications. We will do so by making the network completely invisible to the applications. Programs running in a Millennium environment will see a large network of computers as a single computer. Millennium is the next step in the evolution of the relationship between networks and computers.

Q: Can you explain what you mean when you say that Sun's Java Remote Method Invocation requires distributed objects to inherit from a special class while the Borg Millennium Prototype (a distributed Java-only Virtual Machine) creates a single virtual machine image across multiple computers?

Hunt: Java RMI only lets objects communicate with each other if the programmer follows a specific set of rules. If I use RMI, I have to modify the program's source code to make the program distributed. If I use Borg, I just run the program. Borg automatically makes the program distributed without requiring any source-code modification or any effort on the part of the programmer. It does so because Borg creates a distributed environment underneath the program.

Q: What are you using for discovery? Broadcast notification protocols? Pings? Code on the device?

Hunt: A little of all of the above.

Q: What protocol are you using?

Hunt: We are using internal protocols now for discovery. We're examining what applications they have to know, what don't they have to know. How to best present the information to the system is something we want to know. These questions aren't all answered yet.

Q: When you say Coign and Borg are prototypes, do you mean they are actual working models?

Hunt: Yes, we have two actual working systems with Coign and Borg. They are working systems, but they are not the end Millennium.

Q: For those are you using a pinging or notification type of system?

Hunt: The one in Coign is a pinging type of system; the one in Borg is more notification-oriented. We are evaluating the trade-offs.

Q: Have you reached any preliminary conclusions?

Wang: Different system attributes may need different types of mechanisms. We are talking comprehensive monitoring.

Q: I know the goal here is to hide distributed processing from the programmer, but some high-level programmers need to know about the underlying system. Is this possible?

Hunt: Yes, they can be aware of it. One purpose of the work being done by Yi-Min Wang for fast DCOM over a SAN is to create a configurable DCOM. This is being done in part to let really knowledgeable programmers fine-tune the system to meet their needs. Most programmers will rely on Millennium to fine-tune applications, but we will allow sophisticated users to fine-tune.

Ying: But here we are pushing the limits. Developers know if they use assembler languages they can get better performance than C, but the vast majority use C or C++ or Java. Our goal is only the very, very sophisticated programmers will try to get access to low-level configurability.

Q: You mentioned SANs, system-area networks, can you explain more about what you are doing with SAN? What is DCOM over SAN?

Wang: SANs are fast user-level networks that eliminate intermediate copying between buffers and bypass the OS kernel to significantly speed up low-level networking applications. But the trend toward higher-level object-oriented distributed programming introduces additional intermediate copying and system intervention. The DCOM-over-SAN project is investigating architectural and implementational optimizations to let these higher-level applications enjoy the benefits of next-generation high-speed networking.

Q: My best understanding of Borg is that it is essentially a Java Virtual Machine. Right?

Hunt: Borg itself is essentially a distributed JVM. A JVM just runs on one machine and a distributed JVM runs on multiple machines. So if you run a Java application on top of a regular JVM it just runs on one machine. You can use Sun's Remote Method Invocation, [which in Microsoft implementations is replaced by the remote method invocation in COM] to talk to others, but the program runs on one machine. With Borg and its distributed JVM, the application actually runs on all the machines at once.

Q: So, you have used a Microsoft-flavored Java Virtual Machine to create a distributed operating system?

Hunt: Essentially, it's a distributed environment. It's a distributed JVM over a regular operating system. We leverage NT.

Q: So what are the important differences in Borg and Coign?

Hunt: Borg is a distributed JVM based on Java. Coign is a system for COM-based applications regardless of language. It's a run-time environment for COM applications that will convert a nondistributed COM application into a distributed COM application without any programmer intervention or access to the source code.

Q: The purpose of COM itself is to cloak the developer from the intricacies of distributed computing. When you say that there is no programmer intervention, do you mean that the programmer no longer has to enter demarcation points?

Hunt: Yes.

Q: Explain to me again how do you do this?

Hunt: We use scenario-based profiling. You turn on Coign and run an application through representative scenarios of how you expect it to be used. Through these profiling scenarios, Coign measures the communication taking place inside the application and figures out where the objects are and how they're talking. You then basically flip a switch, and you create a distributed version of the application that minimizes communications, taking into account network performance and how the objects talk to each other.

Q: This sounds almost like creating a kind of template, not really something like artificial intelligence, right?

Hunt: It's definitely not AI, but I wouldn't call it a template. The profiling scenarios involve just running the application, and we could do that at the end-user site. I ship you an application and you install it and for the first week or so after installation you run it. Coign watches what you are doing and how you use it and at the end of the week, it creates a distributed version matching how you use it and the characteristics of your network. It is all done binary.

Q: So what did you do when you found this worked? Did you jump up and down and go outside and run around a track? How much do you think this means?

Hunt: Coign has never been done before. What do you want me to say? It's the best thing since sliced bread? I showed this to some experienced scientists working in the field 20 to 30 years and they were impressed.

Q: When did you realize it worked?

Hunt: Coign was working about June or so.

Q: How do directory services bear on this?

Hunt: Obviously in doing distributed services there's room for a directory to tell you things. And we plan on doing some initial work. For Continuum, we plan to leverage the Microsoft ActiveDirectory infrastructure in NT 5.0. But a directory isn't the solution to the distributed application problem. A directory tells you what you've put into it, but it doesn't tell you what you need to discover about your system. You get out of it what you put into it. The system figures out with Millennium what is going on whether you give it to it or not.

Q: Are there any advantages to using Java as a language in Millennium? I'm talking Microsoft-flavored Java here.

Hunt: We are language-neutral.

Q: In Millennium are you trying to bring desktop components onto the network and discover and install them there?

Hunt: We have plug and play stuff in Millennium. You could say that Millennium is the next logical step. We are trying to do global plug and play. There is discovery of different types of devices. The Millennium team isn't going to solve the problem of how to talk to devices per se. The OS product groups have solved that. They have a good solution that they are shipping. Device recognition and all of that is a layer way underneath what Millennium will be. It's just infrastructure we'll exploit.

Q: What is the comparable counterpart within Microsoft to Sun's JavaSpaces?

Hunt: The function of JavaSpaces is subsumed in Millennium. JavaSpaces is a way to provide shared memory space. It's one particular API to access shared memory space, but it has weaknesses. There are reasons Linda (which is loosely followed in JavaSpaces) didn't take off. It places big restrictions on how you access the shared memory space. There are better ways to access the shared memory space. We know of them and are exploiting them, and we'll hopefully add to them to what we do.

Q: When I ask analysts about Millennium their reaction tends to be: "Microsoft has a lot of research going on and can instantly produce a project when it needs to respond to a competitive threat-whether the project will appear or not before Methusala dies and is reborn and dies again is the question?"

Hunt: We have been working on Millennium quite awhile. It's not something we threw up as an answer to Jini. We feel we are down the research path years ahead of what they are trying to do. In fact, the whole Millennium comparison was Sun's idea. My take is that Sun is trying to compare their preannounced product to our bleeding-edge research to cast themselves as more futuristic than they really are. We are a research lab. We are doing computer science research, and when it pays off and we feel it has value we will turn technology over to our products people as quickly as we can. We published the Millennium position paper almost two years ago at the HotOS conference. We have researchers who have been actively working on it since then.

Q: What can you tell me about the team working on Millennium?

Hunt: Several members of our group created the Mach OS at Carnegie Mellon University. Members of the group did most of the early work on the NetShow Theatre server, created the MMOSA operating system for Microsoft's ITV project, and have implemented IPv6 for NT. Yi-Min, who came from AT&T, has an extensive background in fault-tolerance.

Q: How far along is the group toward its goals? Is there a timeline for completion of the research?

Hunt: We've built some very successful prototypes that have demonstrated the feasibility of true seamless distributed environments. Borg showed that it could be done for the limited world of Java applications. Coign has shown that we can do it with a wide class of commercial COM applications. However, I would say that we have just started to scratch the surface. This is a research project. It's goals are extremely aggressive and optimistic. We have already produced some revolutionary results. We will continue to do so. We joke that we are on a five-year plan. At the end of this five years, we'll start another five-year plan! I suspect what you are really asking is, "When will we see Millennium as a Microsoft product?" The answer is probably never. Millennium is a research vehicle. As parts of it become successful the technology will be given to our product groups. We have found that technology transfer is much more efficient and faster than product transfer. We have a particularly good relationship with the COM team.

Q: Is Continuum strictly an effort to extend the layer of abstraction above distributed computing beyond Java to other languages or is it more?

Hunt: It's more. It is an attempt to do what we did for Borg and Coign for any app. There's more in there, but, we'll say it's that and a little bit more. It's a developing prototype so we have some really rough ideas of how we'll expand it.

Q: How does the OS adapt to take advantage of new resources?

Hunt: If you are just upgrading the network to a faster network, the system automatically adjusts through the mechanisms I've described. If you imagine putting the Holodeck on the computer, you will need to have drivers and things to talk to. There's no magic solutions to plugging into a network and everyone can use it.



Print This Page


e-mail E-mail this URL

Research and Reports

Hypervisor Derby
August 2011

Network Computing: August 2011

TechWeb Careers