Tod Nielsen on Java and the Value of Operating-System Integration

MSDN Interview

May 7, 1998

The last time we brought you Tod Nielsen here at MSDN Online was back in January when he wrote about Microsoft's latest dealings with the U.S. Department of Justice. This time we asked Tod, who oversees all of Microsoft's developer relations efforts, to address two new and timely developer topics.

First, we asked him for an update on Java. Where does Microsoft stand with Java today and where is it headed?

Second, we asked Tod to explain the value of integrating new features and technologies into the operating system. In particular, we wanted him to explain why Microsoft claims this practice benefits developers.

Here is a transcript of his conversation with MSDN Online's John Swenson.

MSDN: There's been a lot of confusing debate lately about Java being a disappointment, Java being a success in some ways, Java failing to achieve much on the client side, but Java maybe having some applicability on the server side, and so on. What's really going on with Java, and how does Microsoft fit into the picture?

Nielsen: Java has had a very public presence since it was first announced a couple of years ago, sort of like a child actor who comes out and has a lot of attention on him. Any time you have a disproportionate amount of attention, momentum, and marketing behind a technology, there's always going to be some disappointments. There's no way that a new technology can live up to all of the expectations that were placed upon Java.

It's interesting when you actually look back at when C++ first came out, or when dBASE was introduced, or when other innovations came out in our industry. They all to some extent went through this, "Wow, it's going to change the world, make the world a better place" expectation. They eventually settled back and found their appropriate niche in our industry.

In the case of Java, the promise of "write once, run anywhere" was exciting to developers. To think that I can build a fully functional fast application that can run perfectly on any computer without any compromise! Who wouldn't want that? But the reality is, write once run anywhere forced developers to compromise. What developers discovered when they started playing with the technology, is that generic or "one-size-fits-all" applications aren't what their users are willing to pay for.

Users want the best software for their machine. They don't want compromised software that's less functional, slower performing, and may not run well on the machines they have. Those are the compromises that have caused developers to wonder, "Whoa, what's really happening with my support of Java?"

This is a huge issue for Java on the client side, but Windows 3.1 is probably the biggest issue developers face when using Java on the client. Microsoft has the best (Java) virtual machine on Windows 3.1, and we still suck. The reason we suck is because Windows 3.1 is a 16-bit operating system, and Java assumes a 32-bit environment. As a result, on Win 3.1 Java is just not acceptable. There are 60 million Windows 3.1 machines in active use today, and developers trying to pursue "write once, run anywhere" cannot afford to ignore 60 million desktops. That's a lot of "anywhere" to skip over.

Fortunately, there's now a good alternative on the client—Dynamic HTML. One of the most exciting things in our industry happened last December, when Netscape and Microsoft said, "We agree on the specifications being fostered by the W3C. We agree on HTML 4.0, on the Document Object Model, and on all the standards the W3C is fostering." This means developers are now going to be able to target those standards and have their client-side applications run on Microsoft's or Netscape's Internet technologies. In other words, if you really want to deliver cross-platform, client-side applications, invest in DHTML.

That said, there are of course still things you can't do with Dynamic HTML and scripting that you can do by taking advantage of the underlying OS. But for some applications—such as a basic form with data entry, data binding, and some validation—Dynamic HTML is all that's really necessary for the UI. Then Dynamic HTML is the best choice.

MSDN: Where does the success of Dynamic HTML and these other Web standards leave Java? On the server?

Nielsen: Now that Java has retreated from the client, some people are saying, "The Java 'platform' didn't work on the client, but it will work on the server."

The reality is that when developers start building software with Java, they realize Java is a great programming language. And with Microsoft's tools, they can continue to use Java and build applications with it.

But Java isn't the most functional or efficient way to exploit the system services of an operating system. Since the server is all about performance, optimization, and scalability, I believe it is going to cause Java developers to do what they've already done with Java on the client, and that is use Java to write native code.

Microsoft is going to continue to heavily invest in the Java programming language. We think it's a great language, just like Visual Basic and C++. We'll invest to make Java a powerful way to build applications. Customers don't want a bloated Java middleware operating system. We are not investing in moving that forward. But absolutely we are investing in the language.

MSDN: Has Microsoft's Java strategy changed recently with the release of its new Windows Foundation Classes, which will be part of the new Visual J++ 6.0? (Editor's note: see John Swenson's interview titled "Anders Hejlsberg Tells How His Team Designed WFC.")

Nielsen: Absolutely not. Our strategy has remained consistent ever since we announced on March 12, 1996, our license agreement with Sun. We may have done a poor job communicating that strategy at times, but it has remained the same. That strategy is:

If a developer wants to write a great Windows application, Microsoft wants to make that easy. WFC is aimed at making it easy for Java developers to build great Windows applications. However, I want to be perfectly clear—these applications are tied to Windows if you use WFC. They do not run on other platforms or on other virtual machines; they are Windows applications.

If a developer doesn't want that, and wants to attempt to write generic Java software, we also support that (through the Java virtual machine in Internet Explorer and Windows). A few weeks ago PC Magazine did a comprehensive review and reported that Microsoft's Java virtual machine was the fastest, most functional, and most compatible virtual machine on the market.

MSDN: When and where does Microsoft recommend that developers use Java?

Nielsen: Again, it's a developer's choice. Our approach is that a developer should be able to use any language and any tool they want to build their application. When building an application, developers want to build the best application they can. In order to do that, you have to take advantage of the native services of an operating system. This is validated by some recent research we have which shows that the majority of Java developers are writing applications that make native method calls. The best applications are always native applications.

Whatever operating system it is—Windows, Macintosh, UNIX, whatever—it is not efficient for developers to arbitrarily constrain themselves from providing native access to the integrated and optimized system services provided by the operating system. Bottom line, use any tool or language you want, but take advantage of the operating system services and other integrated system services for building your application.

MSDN: So there's no right or wrong place for Java; it's what each developer finds comfortable.

Nielsen: Correct. We think there is no right or wrong, from a language perspective.

MSDN: Why won't Microsoft support 100 percent Pure Java?

Nielsen: Well, No. 1, there are differences in every single Java virtual machine, in all of the 117 or however many different virtual machine licensees there are. Each virtual machine has different bugs; each one has different implementations and characteristics.

The perception of some in the marketplace is that 116 virtual machines are 100 percent completely compatible, and then there are those evil guys from Microsoft with their renegade virtual machine. But the fact is, if you remove Microsoft's virtual machine technology from the equation and just test your Java application on the other 116 virtual machines, you'll see performance, functionality, features, and bugs vary so much that developers actually have to test their application for each specific virtual machine.

Again, the recent comprehensive technical review by PC Magazine (see www.zdnet.com/pcmag/features/java98/290323.html) found that Microsoft's virtual machine was the industry's most compatible. As far as supporting 100% Pure Java goes, we believe that we actually support JDK 1.1 (Sun's current Java Development Kit) better than anyone else. We do not support JNI (Sun's proposed interface for linking Java applications with platform-specific code, such as native C and C++ code), but JNI is not about Pure Java. JNI is about writing native code.

MSDN: A judge in the Sun-Microsoft lawsuit recently forced Microsoft to remove the steaming cup logo from all its products. Will that affect developers using Microsoft products?

Nielsen: It has no impact on developers or customers or anyone using our products. This is a preliminary decision about the use of marketing logos. People can continue to use, buy, develop, and target our technologies; this has no impact on them whatsoever. All this ruling impacts is two logos we had on our Web sites and the Internet Explorer retail box that has the Java logo on it. Other than that there is no impact.

MSDN: Microsoft recently unveiled a preview release of Visual J++ 6.0. Will developers be able to use this new tool to build cross-platform Java applications?

Nielsen: Yes. Developers can use it to build either native Windows applications or cross-platform Java applications. But Visual J++ 6.0 is optimized for taking full advantage of Windows and using WFC. You can use its full GUI editor to do some really exciting things. But if a developer says, "I don't want to take advantage of Windows, I want to write generic Java," they can use Visual J++ 6.0 in that way, and not take advantage of any of the optimizations or additional features it has for writing Windows applications.

MSDN: Why did Microsoft add delegates and multicast delegates to Visual J++ 6.0? Do these pollute Java?

Nielsen: No. Delegates and multicast delegates are a great feature that allow developers to write tighter, more efficient, more functional code. We believe that any developer who looks at these technologies will say, "Wow, this makes writing event handlers a lot easier. It makes writing applications easier." However, once again delegates are a completely optional feature. It is up to the developer to decide whether to use them or not.

So we don't believe delegates pollute Java. The problem we have is there's no objective standards body that we can work with to evolve and improve this technology. Microsoft works really well with the W3C and other standards bodies that collaborate with the industry to make technologies better. The frustrating thing about Java for us right now is there's no official body that we can work with on these innovations.

That said, we are making the documentation and specifications for what we've done available on our Web site (http://msdn.microsoft.com/visualj/), for anybody who wants to implement them. They're free. They're good for everybody in the Java community, but at the moment there is no standards body we can work with on this.

MSDN: Microsoft recently licensed Hewlett-Packard's Java virtual machine in order to integrate Java language support into very small devices that use Windows CE. Why did Sun react so strongly to this?

Nielsen: What Sun responded to is the fact that Hewlett-Packard came out with a virtual machine that is not licensed directly from Sun. HP developed what some people refer to as a "clean room" virtual machine.

Here's an example of what this virtual machine might mean. If Sun was going to charge $10 per copy of its virtual machine used on these embedded devices, H-P could now come out and say, "Hey, you can pay us 50 cents and we do the same thing." So the industry and Sun realized that there is now an alternate provider of some Java technologies and that Sun is not the sole provider of Java virtual machines.

This is analogous to what happened with the dBase industry, where Ashton-Tate reigned for a long time before companies like Nantucket and Fox Software came out with dBASE clones. When they did, dBASE developers became Xbase developers, and they could choose the tool that best met their needs from multiple vendors, not just Ashton-Tate.

MSDN: One more Java question. What's going on with the Sun's lawsuit against Microsoft over Java? There hasn't been much news on this in a while, except for that ruling about Sun's steaming-cup logo. Do developers targeting Microsoft's platforms have any reason to be concerned about the ultimate outcome of this lawsuit?

Nielsen: It should have no impact on developers whatsoever. Again, if there's any impact it should all be related to marketing logos.

In September there's going to be a hearing before the judge—another preliminary hearing. We believe the case will go to trial in the Spring '99 time frame. So there's no immediate action expected. And whatever happens, it should only impact marketing logos, not products or technology.

MSDN: Let's move on to the second major topic of this interview, the value of integrating new features and technologies into operating systems. Should developers care that the government is trying to stop Microsoft from continuing to integrate new technologies and features into its operating systems? Does this integration benefit developers, or just Microsoft?

Nielsen: Yes, developers should care. Absolutely they should care. The reason they should care is because, as operating systems evolve, this integration of new technologies makes their jobs easier.

Developers tell me all the time that they don't want to write "infrastructure code"; they want to write "application code." They want to create and sell applications. They don't get any joy—or money—out of writing low-level system or infrastructure code. Developers want to be able to call a tested, reliable, system service and have the OS provide them with that functionality without them having to worry about it.

As our industry continues to evolve and change, there are going to be more and more things that developers are going to want to take advantage of in their applications. And if a government were to arbitrarily decide—effective immediately—that there could be no new innovation in operating systems, it would be a disaster for developers.

Here's an example from the past about why integration is important. Imagine if you were writing a DOS application in the late 1980s. Consumers had to buy a separate product in order to handle memory management to get beyond the 640K memory barrier. We heard about this problem all the time from developers. ISVs such as Lotus said, "Help us! This is a disaster. Our users are building big spreadsheets and they're running into the 640K barrier. They have to buy a separate product to help configure our applications. Our support costs have gone up. Help!"

When we integrated memory management into the operating system, that allowed companies like Lotus to reduce their support costs and allowed their users to easily build large spreadsheets. In general, this was a win-win situation for everyone—consumers and developers alike.

MSDN: Can you talk specifically about integrating Internet technologies into the operating system? That's obviously the hot topic right now. Why should developers care if the government tries to stop Microsoft from integrating Internet technologies into its operating systems?

Nielsen: Developers should care. Here's why. Let's say, for example, you want to build an application that automatically downloads some new script or software update from the Web, or takes the user to some page you recently updated on your Web site. Maybe you want the page to appear just within a particular frame in your application.

You don't want to tell your user to launch a separate browser, go to some cryptic URL, click here, and find this application. You want it all just to happen automatically, as an integrated part of your application. Well, by integrating these Internet technologies into the operating system, developers can build on them and take advantage of these technologies in their core applications. They can build applications that enable these scenarios, as well as other scenarios Microsoft hasn't even thought of. Any arbitrary decision that says, "This feature or that functionality can't be integrated into the operating system," drives an obstacle in the way of developers and prevents them from being able to innovate in some specific way.

Bill Gates recently announced a paper on this topic, which is posted on the Microsoft Web site at http://www.microsoft.com/innovation/default.htm. This paper does a good job going through the issue of integration and why it is good for developers and consumers.

MSDN: I understand you've spent a lot of time lately explaining to the press that what ISVs say they really want from Microsoft is a stable, consistent, reliable platform. What do you mean by that?

Nielsen: As I mentioned earlier, developers don't want to write infrastructure code; they want to write application code. A large percentage of the investment on most software development projects these days goes into testing. Developers have to ask, "Are there bugs in my software? Is this code stable and reliable? Is it backward compatible?" A huge amount of resources are invested into the testing process.

Developers want to benefit from Microsoft's testing resources, to reduce their own testing. They want to be able to call services in the underlying operating system and know these services already have been tested. They want to know that these services are going to work on different hardware configurations. They don't want to waste their own resources testing that kind of stuff. Developers want Microsoft to provide a stable, reliable, consistent, integrated set of services that they can build applications on top of and not have to spend time debugging.

MSDN: What about the issue of disclosing information to developers? Microsoft plays such an important role in the computer industry. Does it do enough to keep outside developers informed of the many new products and technologies it's developing?

Nielsen: I think so. Of course it is my job to make sure that developers have all the information they need in order to build successful Windows applications, so I'm probably not the most objective person to ask this question. It's usually uninformed people who make the allegations that Microsoft isn't open with developers, that we have secrets we keep from them. The fact of the matter is my organization (the Developer Relations Group) is focused solely on making sure every developer in the world knows what's going on with our operating systems, long before they ship.

We had our first meetings with ISVs on Windows NT 5.0 in August 1995. By the time NT 5.0 ships, we will have spent almost three and a half years working with the developer community to tell them what features are in NT 5.0 and what services and APIs to use in their applications. We've had many meetings, events, and design previews.

The Microsoft Developer Network sent out about 160 CDs of content in January to its MSDN subscribers. That content is updated every quarter, and the number of CDs MSDN sends to developers is growing. If people are going to accuse us of anything, they might accuse us of providing too much information too early. But to say we're shielding, preventing, or blocking access to information is ridiculous.

The other question you alluded to is this myth that Microsoft's applications and tools are successful because they use "secret APIs." In other words, they use technology no outside developers have access to. That is categorically false. Every API, every interface that our tools or our applications group uses, is publicly available to all developers. Anyone who wants them can easily find out about them and take advantage of them.

It is true that within our systems software, there are some undocumented APIs. The reason they are undocumented is because they're not intended for applications to build on top of. They're part of the infrastructure to keep our system services glued together, sort of like the foundation for a house. An example of this is our Java virtual machine, which has 31 undocumented APIs. The reason they're there is so we can integrate our virtual machine with the browser technologies. We don't document these APIs because we don't want developers to use them, and because they may change in the future. They're there for the operating system, not for applications.

Netscape has 27 undocumented APIs in its Java virtual machine for the exact same reasons. They're not documented for the same reasons ours aren't documented. They're for infrastructure work, foundation work. Netscape doesn't want developers to take advantage of them. These APIs are just a necessary component of building together system services.

Microsoft provides everything our own applications and tools group use to the entire developer community, to everyone at the same time. The mantra of my organization is: full disclosure, equal access, and collaborative development. We want every developer to be able to get the information, get it at the same time, and have the same level of access to information that Microsoft's own application developers have. We also want developers to be able to collaborate with us and help us make our software better.

MSDN: One final question. Do you think Microsoft has an extra obligation or responsibility to share more information with developers than its competitors share, since Microsoft has enjoyed so much success in the marketplace?

Nielsen: I don't know about obligation or responsibility or anything like that, but it's interesting to note why Microsoft is successful and why Windows is the most popular operating system. It's because we do share everything with developers.

End users buy applications. They don't buy operating systems. Microsoft has learned that the way to success is to give developers the information and opportunities they need to be successful. That's what makes us a successful operating system vendor.

If the government were to say to Microsoft, "You have to be more open," I would look forward to having some people from the government spend some time with my organization and me. I'd love to show someone all that we do for the developer community, and get their feedback on what we can do better.

My purpose in life is to be open and work with the developer community. If there are things we can do better, I would love to know what they are. I don't need legislation to say, "Be more open." That's already my job. If people have suggestions on what we can do to be more open, I'd love to hear them.

MSDN: Thanks. That should do it until next time we have some hot developer topics to ask you about.

Nielsen: Great.

Comments? Send us e-mail.