Part I--Clarifying the .Net message
Part III--Why .NET will benefit other platforms
1. The breadth of Microsoft's market presence. You would be hard pressed to find a software market where Microsoft does not have a strong presence. They have a popular database in SQL Server, a game console in XBox, handhelds that run PocketPC, server and desktop operating systems, a software library that includes business workhorses such as the Office suite, and CRM solutions through its Great Plains division (purchased by Microsoft over a year ago), just to name a few.
Granted, other companies, notably IBM, operate in multiple software markets. IBM has not turned all of its products into Java products, however, while Microsoft plans to migrate their entire product library to .NET. The reason so many Microsoft standards have become de facto development standards is that Microsoft uses those technologies internally. COM's popularity was driven by the degree to which Microsoft used COM in its own products. This made it a business requirement for competitors to support COM, simply because their products would look less feature-rich without the reusable, cross-language COM functionality offered by Microsoft products.
With .NET, Microsoft has the ultimate software and hardware unification platform. Once all of Microsoft's product line is unified around .NET, companies that fail to become at least compatible with .NET will find themselves at a competitive disadvantage. This extends beyond the Windows universe. .NET will exist on non-Microsoft platforms due to Microsoft's Shared Source CLI (a.k.a. "Rotor"), the efforts of Ximian (through its Mono project) and dotGNU. Hooking into the pool of Windows developers will be a competitive advantage on alternative platforms, which will serve as an incentive that drives .NET adoption far beyond Windows.
2. The CLR is standardized through the ECMA.
Though this only defines core functionality (excluding .NET notables, such as ASP.NET, WinForms and ADO.NET, to name a few), it also leaves room for more to be standardized as a result of an international negotiating process among interested parties. This helps to undermine the impression that .NET is just a land grab by Microsoft. It means that companies besides Microsoft have the power to guide the base .NET standard, something important to companies such as IBM who, though committed to Java, would prefer a standardized infrastructure over one where a competitor (Sun) has the final say.
In addition, there are economic advantages to a smaller core standard. Companies are free to write whatever classes they feel best suits the needs of their product without being constrained by a heavyweight standard controlled by another company. This creates product differentiation potential, which is a reason why companies would favor .NET.
Another benefit is the opportunity a smaller core standard creates for class library competition. The Java model ensures that every vendor conforms to a large class library "blessed" by Sun. In contrast, the .NET model allows individual implementations to compete on their merits, all built on the same simple and standardized core. The distinction is subtle, but serves as another reason that companies will favor .NET.
3. Microsoft's development tools.
Microsoft is in the singular position of being the leading development tools vendor for its own developer community. Visual Studio lies at the heart of its tools effort. Every iteration of Visual Studio includes support for Microsoft's latest technology innovations, with the aim of making use of that new technology as simple as possible for developers. Visual Studio.NET follows the same strategy, making it simple to write .NET versions of everything from GUI applications and ASP.NET web sites to Windows services (formerly NT Services) using the same development tool.
Visual Studio's role in driving .NET adoption should not be underestimated. Though few companies will be anxious to rewrite their software in the current slow economic environment, they won't have to. One of the key advantages of .NET over Java is simplified native invocation through P/Invoke. In the meantime, Visual Studio's current success ensures that .NET is considered for any new development. Given the lifespan of most custom software (short and task-specific), this is the pebble that could cause an avalanche.
4. Microsoft generates revenue from .NET.
This gives .NET a competitive advantage in the battle for mindshare with Java. Sun generates little from Java beyond its ability to tempt developers away from the Microsoft camp. Few of Sun's Java products are strong revenue generators, whereas Microsoft has a range of .NET-compatible products (development tools, server products, desktop applications, etc.) from which they can generate revenue. That revenue will be spent to make alliances with third parties to support .NET, as well as invested back into .NET to move the platform forward.
Contrast that with Sun's attempt to drive J2EE popularity by including its formerly fee-based products in Solaris. Though that will probably help to boost J2EE popularity among those who purchase Solaris systems (Solaris is one of the most popular operating systems upon which to run a J2EE server), it removes yet another means for Sun to generate revenue from Java's success. Microsoft has the flexibility to offer lots of .NET products for free (IIS will always be free with its server OSes) simply because they have so much revenue-generating .NET infrastructure they can sell.
Software benefits from seamless interoperability with other types of software. This is particularly true in a world where networks are ubiquitous and computing devices extend far beyond the traditional computer. In such a market, breadth is a very good thing. It creates innovations in software design (Netscape didn't dream up a "componentized" web browser reusable in third-party apps, an operating system company did).
Even more important, it gives a company the knowledge required to ensure that diverse software products interoperate seamlessly.
Microsoft is simply the best positioned to make a cross-platform, cross-market unification technology such as .NET work correctly because Microsoft is involved in all the markets which could benefit from unification. Java might have been that unification technology (based on Java's early popularity among Microsoft developers), but, right or wrong, Sun's lawsuits ensured it wasn't. Today, even if Sun managed to convince every OEM to ship with Java pre-installed (or got the courts to make that happen), it would not change the fact that ALL of Microsoft's products will eventually be ".NETtified," nor erase the knowledge Microsoft has in-house regarding the unification needs of disparate markets. Companies targeting non-Microsoft platforms will still have an interest in plugging in to the wider Windows development community (which will be .NET-oriented, thanks to Microsoft's efforts), and can do so easily through Microsoft's Shared Source CLI, Ximian's Mono and dotGNU.
.NET will conquer the world. Yet, as I'll show next week, even dyed in the wool Unixophiles will learn to love .NET.
John Carroll is a software engineer who lives in Switzerland. He specializes in the design and development of distributed systems using Java and .Net. He is also the founder of Turtleneck Software.