Defining Microsoft .NET
Microsoft .NET is a comprehensive software development environment that was introduced in 2000 as Microsoft's next-generation programming environment. Pronounced "dot net," and widely known as the Microsoft .NET Framework, it was designed to compete with the counterpart Java-based Java 2 Enterprise Edition (J2EE) platform. The .NET Framework is the Microsoft Web services strategy for connecting information, people, systems, and devices through software, with the promise of "information anytime, anywhere, on any device." Integrated across the Microsoft platform, .NET Framework-based technology provides the ability to more quickly build, deploy, manage, and use connected, security-enhanced solutions with Web services.
Part One of the series Subtle (or Not-so-subtle) Nuances of Microsoft .NET Enablement.
The Microsoft .NET environment includes what a business might need to develop and deploy a Web service-connected information technology (IT) architecture: smart clients, servers to host Web services, development tools to create them, applications to use them, and a worldwide network of more than 35,000 Microsoft Certified Partner organizations to provide any help users might need.
Programmers can chose from several different programming languages, such as Microsoft C# (C Sharp), Visual Basic .NET (VB.NET), J# (J Sharp), Managed C++, JScript.NET, and others. The European Computer Manufacturers Association (ECMA) has standardized .NET as the Common Language Infrastructure (CLI), and numerous other languages have been reengineered as CLI languages. ECMA also standardized the C# programming language, designed by Microsoft to be the flagship .NET Framework-based language.
Depending on the class libraries used, the output of .NET and CLI compilers may or may not be identical, since .NET compilers generate Microsoft Intermediate Language (MSIL) bytecode, and CLI compilers generate Common Intermediate Language (CIL) bytecode. MSIL is executed by the CLR, and CIL bytecode is executed by the Virtual Execution System (VES). Both the CLR and VES are run-time engines like the Java Virtual Machine (JVM) in Java, since they provide a fundamental set of services that all programs use. The difference is that Java bytecode can also be interpreted as well as compiled, but the JVM supports only Java, and not multiple programming languages.
As mentioned earlier on, the heart of both .NET and CLI is a cross-platform language system. Although similar to Java because it uses an intermediate bytecode language that can be executed on any hardware platform that has a run-time engine, it is also unlike Java, as it provides support for multiple programming languages.
Thus, with the advent of .NET, Microsoft-centric users might have the "best of both worlds," as they can benefit immensely from a feature-rich core system and have the added advantage of being able to develop business-specific applications to extend the functionality around the core system. This comes without the concern that future upgrades of the core system might affect or break the business-specific application.
Yet the Microsoft .NET strategy continues to confuse many users and vendors, due to the lack of understanding surrounding the technology. Indeed, because of the massive marketing campaign undertaken by Microsoft on the benefits of its .NET Framework-based technology, many vendors have adopted a "too liberal" approach to marketing their .NET Framework-based initiatives. The fact is, as soon as a software product is enhanced to consume or emit XML, it is called a .NET Framework-based product. In an effort to have their offerings perceived as ".NET-enabled," numerous vendors are referring to their solutions as such, though their products fall short of fulfilling many of the Microsoft-defined .NET parameters, some of which were outlined earlier on.