.NET Framework

From Citizendium
Revision as of 19:23, 17 September 2007 by imported>Pat Palmer (draft 2)
Jump to navigation Jump to search
This article is developing and not approved.
Main Article
Discussion
Related Articles  [?]
Bibliography  [?]
External Links  [?]
Citable Version  [?]
 
This editable Main Article is under development and subject to a disclaimer.

The .NET Framework is a bundle of interdependent programs required to create and run programs using the C# programming language on most versions of Microsoft Windows. Microsoft began work on the platform in ? and formally launched the programming language in ?, after which its use grew rapidly across the computer industry. As of the end of 2006, the .NET Framework was in its 2nd major revision (version 2.0), with version 3.0 being readied for release along with the Windows Vista operating systen in early 2007.

How the platform works

The .NET Framework's centerpiece is an execution engine, also known as the virtual machine or runtime environment, that has been implemented for most versions of Microsoft Windows operating systems. As well, thousands of pre-written library classes, also called base classes, are available on each type of Windows operating system. The .NET runtime environment and the class libraries make all Windowws computer systems look alike so that programs written in the C# programming language, or other programming languages that target the same runtime, can run identically on all of them.

The .NET Framework runtime environment hides the underlying operating system from the programmer]] The platform consists of multiple programs, each of which provides a distinct portion of its overall capabilities. The essential components in the platform are the C# source code compiler, the .NET class libraries, and the .NET runtime environement. The C# source code compiler converts C# source code (files with an extension of .cs) into intermediate code (files with an extension of .???). The runtime environment is a special program that takes as input .NET common language runtime programs (special .exe files) for execution according to the rules laid out in the .NET Framework specification.

The .NET Framework does not necessarily include an integrated development environment (IDE). Microsoft produces and sells the Microsoft Visual Studio IDE, and provides free, downloadable reduced versions of it for learners. Several other free IDE's exist.

Bytecode and JIT compilation

C# programs initially compile down to an intermediate language; common language runtime programs are loaded and run by .NET runtime, also known as a virtual machine. The .NET runtime is sophisticated; it implements the .NET intermediate language specification by means of a just-in-time (JIT) compiler that, at runtime, converts intermediate code into native machine code. JIT compilation occurs on a per method basis only the first time each method is called, after which the native code for that method remains cached in memory; this means that subsequent executions of that method run as fast as native programs. Java programs tend to "warm up" after they have been executing for awhile, and in some cases they execute as efficiently as native code after an initial startup period.

The .NET Framework also includes extensive libraries (pre-compiled into intermediate language) containing reusable code, as well as numerous ways for .NET applications to be deployed, including on a desktop machine for a single user, on a web server as a handler (returning "dynamic" information to web browsers), or on a web server as a web service endpoint (procedure callable across a network from any kind of platform). There are several other components and utilities as well.

Editions

C# programs may execute as applications on a desktop or on a web server as part of web applications. C# and the .NET Framework are also available in a reduced version for hand-held devices such as smart phones.

Versions

  • 1.0
  • 1.1
  • 2.0
  • 3.0

Associated file extensions

  • C# source files have an extension of .cs
  • .NET intermediate files (executable programs) have an extension of .exe (but differ in internal format from .exe files containing "native" code)
  • .NET intermediate files (executable programs) must be loaded at runtime by a .NET Framework runtime
    • NET .exe files may contain byte codes, resources such as images, or metadata
  • when people say "component" or library, they usually mean a .dll file, which is a .NET program that does not have a "main" function entry point--it has methods that we can call, but it doesn't run "standalone"

Competition with C# and the .NET platform

In 2000, Microsoft introduced the .NET framework, a new platform with a Java-like language (C#) and associated development tools. The Java platform and the .NET framework have been competing vigorously on the desktop, but especially in the area of server technology. Many software developers (programmers) become expert on one or the other, but few have time to learn both. The schism of understanding the two platforms has been widened due to misinformation and disinformation, with a fair amount of zealotry on the part of each system's defenders.

From a historical viewpoint, the two systems may be seen as having different goals. A primary goal for Java was to enable a program to run on several different operating systems; this was accomplished by providing implementations of the Java virtual machine for all prevalent operating systems, including members of the Unix family, Linux, Max OS X and most versions of Windows.

Microsoft has been widely criticized for only implementing its .NET runtime "only on Windows." Such criticism does not take into account that Windows is not a single operating system (at least not from the viewpoint of a programmer who must call routines in the operating system). Even before Microsoft Vista appeared in 2007, there were already approximately 35 versions of Windows, all with slightly different application programming interfaces (API's). The difficulty of developing software for these many different Windows systems had led to a situation called "DLL Hell", where the wrong versions of dynamic link libraries (DLL's) were encountered by programs trying to run. Creating the .NET framework solved this huge problem for Microsoft by making all versions of Windows alike to programmers.

In fact, some .NET programs can run on non-Windows platforms. Miguel de Icaza (co-creator of GNOME) has created an open source implementation of the .NET framework for Unix-like operating systems; it runs on Mac OS X, Linux and Sun's Solaris). Called Mono, this independent implementation of a "common language runtime" is based on .NET's ECMA/ISO standards[1] and is not under the jurisdiction or ownership of Microsoft.

The .NET framework and the Java platform have diverged in various other ways, including that .NET was designed to allow many different programming languages to use its runtime and libraries (whereas the Java platform was not used fpr multiple languages until very recently). There was no theoretical reason for Java being the only language that initially used the Java runtime. It was only since perhaps 2006, in response to Microsoft's multi-language .NET strategy, that Sun finally began a push to get additional languages "targeting" the Java runtime.

Platform comparison

  • Java was the model for Microsoft when it created C# in 2002
    • Java and C# code look very similar; it is fairly easy to switch between the two
  • Java is cross-platform; .NET is cross-language:
    • Java provides freedom from all OS differences, by making necessary cross-platform compromises; Java does not provide cross-language calling
    • .NET makes 36 versions of Windows alike for programmers; it eliminates the "DLL hell" which formerly occurred when installing Windows applications
    • .NET libraries can be used by any of the .NET compiled languages (of which there are dozens); libraries can be written in any .NET language
  • the two platforms compete fiercely in the world wide web
    • JSP's require Apache web servers (Linux or Unix); these are HTML interlaced with code
    •     called "servlets" if all code
    • ASP's require Microsoft's IIS6 web server; these are HTML interlaced with code
    •     called "web handlers" if all code
    • both Linux and Microsoft web servers use load-balancing across mirrored web farms to scale up
    • so-called "dynamic" languages such as Ruby are seen by some as the next stage beyond Java and .NET
  • it's an arms race!


References

  1. "Mono Project Main page" (Retrieved 2007-04-25).