In a meeting with Microsoft officials last week, I heard a bit of trivia that should have been obvious but that surprised me nonetheless. When asked whether Microsoft would support Sun Microsystems' server-based Java technology in the next Windows .NET Server (Win.NET Server) version, John Montgomery, the group product manager for the Developer Platform and Evangelism Group at Microsoft, said no but noted that Sun was as free to build on Microsoft's server platform as anyone else. Montgomery then explained that the world would have been a very different place if Sun had made different decisions at crucial points in its relationship with Microsoft. Here's what happened, and how things might have turned out much differently.
In December 1995, Microsoft announced an abrupt strategy shift in which the company reorganized its business around the Internet. The announcement, touched off by Bill Gates's earlier "Internet Tidal Wave" memo to employees at the company, included a couple of shocking interoperability revelations: Microsoft would expand its licensing of Spyglass's Web browser code to port the Microsoft Internet Explorer (IE) product to Windows 3.x, UNIX, and the Macintosh; and the company would license Java, the popular Web-oriented programming language.
Java had an interesting beginning at Sun, the high-end server and enterprise-class UNIX vendor. According to popular legend, developer James Gosling had decided to create a new programming language for a set-top box that the company was then designing but later scrapped. Looking out his office window for inspiration, Gosling saw a tree and dubbed the object-oriented language "Elm." But the name Elm was already taken, so Gosling settled on Java. Over the next few years, Java sat in limbo as Sun's set-top box plans folded. But with the rise of the Internet, Gosling saw that a small and elegant programming language like Java could be quite useful, and so it was redesigned for that purpose.
Microsoft originally didn't trust Sun or Java because of the possibility that developers would prefer Java over Windows. Java applications, applets, and services run in a software "sandbox," a protected environment that sits on top of various OSs such as UNIX, Windows, and the Mac OS. If developers were to accept Java as the overlying platform for their OSs, Windows would lose its importance.
So Microsoft surprised everyone and licensed the Java technology from Sun. According to the licensing agreement, Microsoft would be able to "modify, adapt, and create derivative works of Sun's Java technology," which is exactly what the company did, creating a Java version that ran better on Windows and offered unique Windows-only features. During 1996 and 1997, Microsoft invested heavily in Java, releasing Java interfaces to various Microsoft applications and creating a Java development environment called Visual J++ (VJ++). The company even held Java-oriented developer events and was reportedly working on Java components for Microsoft Office. A future version of Visual Studio (VS) was going to generate Java byte codes—the underlying executable format that programs written in Java use.
The company's distributed Java strategy was interesting. Sensing a move to Internet-based software subscriptions—a term more common today than it was 4 or 5 years ago—Microsoft began adapting its Windows-only component technologies (which the company referred to by the umbrella term Windows DNA) to include cross-platform hooks through Java. Java would have been the gatekeeper, or glue, between software components running on Windows servers. And with Java, Microsoft finally had an interoperability strategy for communicating with non-Windows systems.
If you're familiar with what became .NET, the information in the preceding paragraph should sound familiar. But somewhere along the line, Microsoft's plans for Java completely fell apart. Sun sued Microsoft in October 1997 for violating the Java licensing terms. And when it became clear that Sun was going to win the case—as it eventually did in an early 2001 settlement, Microsoft slowly but surely walked away from Java and did its own thing. "Had Sun not decided to compete through the courts, we would have happily continued using Java, and .NET never would have happened," Montgomery said.
Faced with the prospect of not being able to improve Java, Microsoft started working up internal strategies for cross-platform, Internet-based subscription software. The company had already hired longtime Borland software architect Anders Hejlsberg, who created the Turbo Pascal compiler and the Delphi Visual Component Library (VCL), to work on Java technologies. Hejlsberg was set to working up a new, Java-like programming language eventually named C#. But C# isn't Hejlsberg's most important contribution to Microsoft. His creation of the logical and powerful class library and runtime environment Common Language Runtime (CLR) is credited with making .NET a huge hit with developers.
In some ways, the Sun-Microsoft feud was a good thing. The .NET platform as it now stands is more powerful than anything the company could have accomplished with Sun, thanks to .NET's from-scratch architecture, support for multiple programming languages, and use of standards-based technologies such as XML and Simple Object Access Protocol (SOAP). And, in response to criticism of Sun for not doing the same for Java, Microsoft has taken the high road and worked to make key portions of .NET open standards that are available for anyone to use. Microsoft will also open more of .NET to standards bodies over the next few years, Montgomery said.
Sun, of course, is still positioning Java for Web services, and the possibility exists that Java will be in place years from now, working side by side with .NET technologies. But if Sun could have found some way of working with Microsoft, avoided its lengthy and ultimately damaging court case, and positioned Java as an open standard, Sun might have driven the move to the Web services platforms of the future. Instead, although Java will be a player in Web services, its position will probably be as a minor player relegated to non-Microsoft platforms. Do you think Sun would do it differently if it had a second chance?