Microsoft to ship long-awaited ‘Java killer’
1998's Cool project becomes 2000's C Sharp
Microsoft will finally launch a rival to Sun's Java next week, according to sources who've been blabbing to Cnet. Called C# - it's C 'sharp' not 'hash', using musical terminology – the language is essentially an easier to use version of C++. That sounds to us not a million miles away from Cool, the Microsoft internal project that surfaced a year or so back that was... well... a C++ based Java alternative.
Microsoft, of course, denies this, but it's hard not to see C# as a natural extension of the original Cool project.
Talk of Cool emerged in the aftermath of Sun's successful legal action against Microsoft for modifying Java and thus - in Sun's eyes - messing with the language's purity. Scenting the way the judicial wind was blowing, Microsoft appears to have initiated a research project to create a series of extensions to C++ that would hook the language closely into the then upcoming next major version of Windows' Common Object Model (COM), in essence turning C++ into a viable alternative to Java.
The idea was first mooted in November 1998 by Microsoft VP Paul Maritz as a 'clean room' version of Java free from Sun technology.
Hints about Cool were leaked to PC Week US, which described it as a new computer language. At the time, Microsoft denied it was doing anything of the kind: "Nobody is writing any code in any new language in this company today and in the foreseeable future," Michael Risse, product manager for application development tools, said at the time.
Risse's comments were clearly clever spin: after all, Cool wasn't new - it was simply an extension to an existing language, C++.
Speaking to InfoWorld, one Microsoft's lead product manager for Visual Studio, Greg Leake, was more forthcoming than his colleague: "[Cool] makes C++ programming simpler. We like the Java language because it's simple - and simpler than C++. Can we not take the things that are wonderful about C++ and marry them with an easier model?"
A key component of Cool was COM Plus, an upgraded version of COM that was then scheduled to ship with Windows 2000, and which now, at long last, has done so.
It's difficult to say exactly how Microsoft's strategy has evolved over the intervening year and a half. However, it is clear that C# is a descendant of Cool, moving beyond its parent's simple role of providing Java ease of use via a C++ programming framework into something far more strategic.
C# is designed to hook into Microsoft's Next Generation Windows Services (NGWS) initiative, which itself sounds (at the time of writing we've yet to hear today's NGWS announcement) like an evolution of what Microsoft was planning with COM Plus. In that respect, C# isn't quite the direct answer to Java that its parent was, but given the broader 'language to enable the network to be the computer' philosophy it appears to embrace, it's hard to see what else it could be.
C# also appears to go beyond Cool's platform dependence, presumably by compiling not to object code, but to a byte code intermediary interpreted by a virtual machine, or as Microsoft calls it, a Common Language Runtime (CLR). CNet's report plaints CLR as a system for putting all Windows development languages on the same level, which suggests it also provides some degree of API abstraction to allows C, C++, Visual Basic or Java to be used to write comparable Windows apps. Of course, that could also be arranged by coming up with a unified programming framework and compilers, so we're not sure how CLR really helps here, unless Microsoft's goal is that all future Windows apps are to operate through some kind of virtual machine.
That's certainly the best reading of what one CNet source's comments: "All languages will have equal footing on Windows. [CLR] increases the openness of Windows... It's a universal engine to run (different) languages." ®