Although many components of Microsoft's .NET initiative are little more than vaporware, Microsoft's new development language, C#, is well defined. Referred to by people at Microsoft as a Java-killer, C# is poised to replace J++ in the upcoming Visual Studio.NET release, the product formerly known as Visual Studio 7.0. (You can find more information about C# and Visual Studio.Net at http://msdn.microsoft.com/vstudio/nextgen.) C# brings many improvements to the C++ language, but many at the expense of features that make C++ an attractive option in the first place.
For database developers who already use Visual Basic (VB) and Active Server Pages (ASP), C# holds little appeal. Although C# is arguably more powerful than VB, C#'s C-based syntax and development methodology will be a barrier for most VB developers. In addition, Microsoft will include many of C#'s important features in the next version of VB: Early VB 7.0 betas revealed a Web-enabled product with object-oriented capabilities. Furthermore, C# programs will require a runtime environment like the one used by VB. This requirement means C# doesn't have the advantage that C++ has over VB—the ability to produce standalone, executable images. Ironically, one argument that Microsoft has used against Sun Microsystems' Java is that the Java Runtime Environment (JRE) was essentially a platform on top of a platform (Windows). This argument strikes a chord with many C++ developers who strive to build their applications as efficiently as possible. C# runtime requirements also position it as a platform (the Common Runtime) on top of a platform (Windows). C# will hold little appeal for current Java developers (and soon-to-be-orphaned J++ developers) who already possess the most compelling features of C#.
New languages should introduce new technological advantages, as has been the case for the most widely used languages today. C brought structure and productivity enhancements over the assembler program. C++ extended C with object-oriented capabilities. VB brought visually oriented design and component-based development to Windows. Delphi filled an important gap by providing a potent combination of visual design and object-oriented capabilities. Java delivers cross-platform capabilities, automatic garbage collection, type safety, and full object-oriented support. Although it brings the same basic advantages as Java to the C language, C# stops short of offering any significant innovations.
Microsoft seems to have produced C# for the wrong reason, as a knee-jerk reaction to last year's Java ruling in which Sun's injunction bars Microsoft from distributing Java technology in its J++ and Visual InterDev products. Rather than complying with Sun's licensing restrictions and removing the Windows-specific hooks from J++, Microsoft flexed its development muscle and created its own Java knockoff. Microsoft's move seems more a nose-thumbing gesture at Sun than an earnest attempt to move language technology forward. The business world doesn't need more development languages, but it always needs better ones. From the database developer's standpoint, C# is an answer to a question that nobody outside of Microsoft asked.