The banishment of Java is just the latest in a series of efforts by Microsoft to redefine the Internet and World Wide Web in its own image, as well as many embedded and net-centric markets. Microsoft started with its effort to re-engineer Java using its dominance of the desktop market to take the language away from Sun. Next has been its vehement, constant and occasionally hysterical responses to the open source challenge. Now, there is XP and Microsoft's attempt to define it's own Web services framework, .NET, and impose it on a computer industry that has surprisingly come to some common agreements on how such a universal services framework should be structured.
XP, which will be available late this year in a professional version replacing Windows 2000 and a personal version to replace Windows 98 and Windows ME, is the Trojan Horse by which Microsoft will unleash .NET upon the world.
Like similar Web services frameworks from Sun and IBM, it is a distributed computing platform in which application programs will not reside on the desktop, the palmtop, the set top or inside deeply embedded net-centric control devices, but out on the Web on one or more applications servers. When someone uses a word processor, they will not be using a program located on their desktop, but accessing a service for which they will pay a fee. And while we will be able to save the files and data on a local device, in most cases it will reside somewhere on the Web where we can gain access to it, again for a fee.
Ostensibly, Microsoft has based its .NET upon industry standards, most notably, XML. Using XML as a wrapper, it says that it has designed .NET to be agnostic about the underlying programming language, allowing a developer to use any of the commonly used languages such as BASIC, C, and C++ to build the underlying application code base. But Microsoft is “improving” them with platform specific enhancements just as they do under the present Windows API. While the improvements allow the programmer and the user get extra performance and flexibility, they also tie both tightly to the Microsoft-defined environment.
To make sure developers are inextricably bound to .NET platform, Microsoft has developed a proprietary language, called C-sharp (C#) that owes much to C++ and Java. Notably absent anywhere I have looked on Microsoft's Web site is any mention of program development under .NET using Java.
Why should this worry any of you doing development with Java in the net-centric and embedded worlds? Although so far most of the promotion for XP has been in the context as a replacement for Windows 95, NT, and 2000, how far behind can embedded WinNT and Windows CE be from incorporation into .NET's Java-less future? And even if it is not a part of Microsoft's web services counter-revolution, it will still be necessary to interact .NET on whatever desktop or server to which your embedded application may wish to talk.
Would you buy an embedded version of Windows XP, much less a Web services framework from this company? I wouldn't. For one thing, despite the fact that Microsoft has said that it is not including Java in Windows XP because of concerns about reliability, security and computer viruses, I trust Sun's “sandbox” security model for handling suspect malicious code much more. Sun has gone to considerable effort in the definition of the language and the programming environment to ensure that every security hole in the language and the virtual machine was plugged up. Compared to the almost weekly and sometimes daily alerts of viruses infecting Windows, such announcements for Java environments using the Sun approved security mechanisms are few and far between. In terms of maturity, XP and .NET are totally new and certainly will be as full of security holes as their predecessors were.
Second, there is no clear indication of how real-time and deterministic C# and Microsoft's equivalent of a Java virtual machine (called the common run-time executable) will be. Nor is there any indication of memory requirements. Although it was a long time coming, the Java Virtual Machine is much more accommodating to the embedded and real time environments than it was originally. And behind Sun's Java VM are at least a dozen others, both approved and unapproved, all with real-time and deterministic features that match or exceed Sun's implementation.
Third, despite what I have been reading in some of the PC trade and consumer magazines about the dire consequences of Java's banishment from the Microsoft environment, the reports of Sun's coming demise are wrong. Sun is not dead meat. Far from it. Sun has done a lot to accommodate the desires of the open-source movement, and virtually every other Web Services framework I have read about makes use of Java in tightly linked combination with XML as the basic distributed computing mechanism.
Fourth, by design or by accident, Java is the development platform of choice for much of the basic research in academia on next-generation, network-processor-based active networks; most high-end highly parallel supercomputers; and in both commercial and university efforts to come up with a common language environment for writing code that can either be expressed in software or in hardware.
Given its general usage in virtually every computing environment, including, up to this point, the desktop, Java will probably coexist with whatever Microsoft does in the future. And by banishing Java, Microsoft has not dealt any serious blows to either the language or to Sun. Rather, it has effectively managed to isolate itself in its “Fortress Desktop,” out of the mainstream of most computing.
In what will no doubt be a Web services environment that is much more heterogeneous than anyone had expected, who will be the real winners? My conclusion is that they will be the newly emerging net-centric and embedded middleware companies who will provide the appropriate bridges between the two warring camps.
One company very high on my list is IBM, which has set itself up as a middleware company to all segments of the computer industry. Among other things it has made major investments in an intermediary-based transcoding framework that converts, distills, and transforms content. At present the technology has been applied to the problems of converting HTML to XML, WML and a dozen or so other variants and extensions, as well as to various media types within a Java environment. But nothing seems to prevent its use as a critical middleware component between Microsoft's .NET and C# and any of the industry's Java-based environments.
Another likely winner is Wind River Systems Inc. In addition to being an RTOS and tool vendor, through acquisition it has gained access to the appropriate transcoding expertise. Other likely candidates are a number of small software startups who have survived by nimbly moving back and forth between both camps over the years. For example, Intrinsyc Ltd. has made life easier for embedded designers on both sides of the fence with tools that provided a bridge between Windows DCOM and the Java VM environment. It has now taken the next step with a similar set of bridging tools between .NET and the various Java-based frameworks.
Your article is another rant of Java versus Microsoft. The reality is that they both have their pro's and con's. Java's JVM is painfully slow but the framework has a good 6 years headstart on .NET. Java is not a standard where .NET has positioned itself to become one via the submissions to ECMA. Rotor are Mono are two open source projects working to port .NET to Linux. Both Java and .NET hava a long way to go before they will become my embedded OS of choice. As for XP – it's just the next release of NT – the .NET framework can be installed on any windows OS. Microsoft will “unleash” .NET via mandatory service packs. It appears to be a good “unleasing” so far.
I would like to know how Windows XP is “the Trojan Horse by which Microsoft will unleash .NET upon the world.” As far as I can tell, XP is simply the next release of the WinNT operating system; there's no .NET code involved.As such, it could also be argued that WinXP is a more mature technology than Java, as the public release of WinNT (1993) predates the public release of Java (1995).
As for C#, it is not a proprietary language. Microsoft and others are working toward making the language an ECMA standard, which is more than Sun has ever done for Java.
LMI Technologies Inc.
I am extremely grateful for your response because in the three or four short sentences of your email you have been more forthcoming than anything I have gotten from Microsoft. Unfortunately, other people I have talked to contradict you. But that is one of the reasons why I make the big bucks as a technical journalist: I get the dirty job of trying to reconcile conflicting opinions and statements.
Obviously I have tried to get meaningful dialog going with software developers at Microsoft about XP, .NET and C-sharp there but nothing seems to happen. Other than reading their web pages and the various magazines and journals about everything I can find about .NET and XP and I am left with a lot of questions I would like to talk to them about. So far, no luck. So I have to piece together what I can and I often hear conflicting things.
For example, certainly the kernel of XP is Windows NT. But an operating system is more than just the kernel. As to no .NET features, at the demos I have attended a big point is made of the fact that XP incorporates a number of them, albeit minimal, but has the “hooks” internally to add more. The most significant feature is something that some demonstrators have called Remote Desktop Connection and others Remote Assistance, which allows you to access another user's computer, either via a private network or the Internet. Other more mundane .NET functions are a mechanism by which the OS allows you to publish photos on the web, and the ability to log on simultaneously to WinXP and Microsoft Passport.
As to C-sharp becoming a standard, I'll believe it when I see it.
If you're interested in learning about .Net technology, I suggest that you subscribe to the DOTNET mailing list that is administered by DevelopMentor. You can review the history of the list at http://discuss.develop.com/dotnet.html. Several key Microsoft architects and developers routinely answer questions posted to this discussion group.
If you dig for long enough, you'll learn that several independent groups have already begun developing .Net knock-offs for various platforms. Microsoft seems to be alright with this and has even committed to releasing a “shared source” reference implementation of the .Net framework for FreeBSD (in collaboration with Corel). It will be quite interesting to see how this situation plays out.
The ECMA working committee for C# is TC-39. I believe that they are quite serious about standardizing the language and portions of the Common-Language Infrastructure (CLI) required to support the language.
Good luck with your investigations and thanks for the response.
LMI Technologies Inc.
I think that the XP system will be Microsoft's last straw until the next generation of web appliances hit the market. Microsoft knows that their world is getting smaller and more intricate. How many PC's can we consume before we realize what we are doing to ourselves? I see Microsoft trying recreate the development tools that have been on the market for the past ten years. They are the Japanese of the Western Civilization!
Code hearted developer esq.