When Microsoft launched .NET a few years ago, the company promised that the technology would answer complaints customers had made about earlier interoperability software and also supply a platform on which developers could build Web services. Compared with COM, COM+, and the alphabet-soup-like sea of acronym-laden technologies that followed those specifications, .NET is far more elegant, and built on open standards. But like much existing technology, the era in which .NET was conceived is rapidly passing. As a result, .NET has had to change with the times, and its future success will depend upon how easily it continues to change.
Web services, in many ways, are a bust. From a theoretical standpoint, most people agree that local applications are more powerful when they can access remote services. For example, a word processor with a built-in dictionary is a powerful tool, but a word processor that can connect to a live, always-updated dictionary is even more powerful. The problem with Web services is that they aren't an end but rather the means to an end. No one is particularly interested in purchasing Web services. What people can rally around, however, are more powerful applications.
Microsoft understands this reality. That's why the company now offers its consumer-oriented Web services through MSN's online service: Consumers can grok the benefits of an online service fairly readily, but ask them to subscribe to an online calendaring service and they'll give you a blank stare. For the enterprise, Microsoft is adding Web services to many of its products, including an update to MSN Messenger software that ships this week. The day is quickly coming when the phrase "Powered by .NET" will carry some meaning.
For .NET, one market that will increase in importance is mobile devices. Microsoft has always envisioned .NET as a cross-platform solution, and one of the reasons this technology exists is because the company saw the industry moving from the general-purpose PCs we use today to a wider variety of specialized hardware that spans multiple categories. For example, one day, smart connected refrigerators will be able to automatically order a gallon of milk or a carton of eggs when stocks of those products dwindle. In the near term, however, non-PC computing devices will primarily exist in the form of Tablet PCs, PDAs such as the Pocket PC, smart cell phones, and other similar devices. These mobile devices are always connected. In many ways, they are simply smaller versions of our PCs.
To support mobile devices, Microsoft offers developers the .NET Compact Framework, a beta toolkit based on Windows CE .NET (formerly code-named Talisker) that simplifies developing or porting applications and services to Pocket PCs and other devices. The .NET Compact Framework is surprisingly powerful. One of its neatest features helps developers port PC applications to smaller devices by using a "degradable" UI that adapts to the devices. So, you might run such an application on a standard PC with full functionality but experience slightly more limited capability on a Pocket PC.
Currently, the .NET Compact Framework is in beta, and Microsoft will ship the beta 2 release with the first major Visual Studio .NET upgrade, code-named Everett, in early 2003. Everett will let developers create mobile applications and services in C# and Visual Basic .NET. Microsoft is preparing a host of target devices to take advantage of this generation of software, including new Pocket PC devices, new Windows Powered Smartphone 2002 devices, and Windows Powered Smart Displays (formerly code-named Mira, which are based on Windows CE .NET). But the .NET Compact Framework's big limitation is that it targets only Microsoft platforms.
And here, naturally, is where the competition comes in. Sun Microsystems' Java technology has lately made inroads in mobile devices, especially smart cell phones—an interesting situation because this market more closely mirrors Java's original vision as an OS for specialty set-top boxes than does the technology's relegation to Web applets in recent years. Companies such as Symbian and Nokia are using Java, not .NET, on the most popular smart cell phones that are currently available, making some analysts wonder whether .NET is dead in the water. And a recent defection by one of Microsoft's most important Smartphone partners, the UK-based Sendo, to Symbian and Java casts further doubt on the software giant's chances in the mobile space.
But I wouldn't count Microsoft out just yet. As the company has shown time and again, it can respond quickly to changing market needs. Microsoft knows that if .NET is to be truly successful, it can't be a technology that runs only on Microsoft platforms. If ensuring .NET's success means porting the .NET Compact Framework to the Palm OS or other mobile platforms, I suspect that's exactly what Microsoft will do.