Many people have asked us questions such as "What is .NET, and why should I, a Fortran developer, care about it?" Microsoft .NET refers to a range of related technologies, but at its heart is a new environment for running programs, known as the Common Language Run-time, the CLR. Think of Windows 2000 or Windows XP - these operating systems can execute programs in a number of environments. Thus, they can run Win32 applications (such as those currently produced by Silverfrost FTN95), Win16 applications, which date back to the days of Windows 3.1 (which made only very limited use of 32-bit mode) and even (many) DOS programs, which run in a 640K address space which corresponds to the structure of the original IBM PC.
Modern Windows can run programs corresponding to each of these environments, however the earlier environments are effectively obsolete and do not provide access to modern facilities. The .NET CLR environment will displace Win32 and become the standard program environment in the near to medium term.
Unlike the other programming environments discussed above, the .NET environment does not correspond to some new CPU capability - any modern PC can run .NET code after the .NET environment has been installed. Under .NET, compilers do not generate raw x86 machine instructions, but produce an intermediate assembler-like language, known as IL.
A .NET executable contains IL plus associated data, just as a Win32 executable contains x86 instructions plus data. When a program is executed part of the operating system known as the Just In Time Compiler, the JIT, takes the IL and translates it into instructions for the machine on which it is executing. This translation usually happens on a routine at a time as required - thus avoiding translating large quantities of code that might never be required.
Although the use of IL imposes a small start-up overhead, the JIT mechanism has several interesting advantages. First, of course, the JIT 'knows' which CPU is going to execute the code and can therefore make use of instructions that are not available across the whole range of x86 hardware. Furthermore, if a .NET application makes use of no Win32 code, it is even possible for it to run on other types of CPU - provided a suitable version of the .NET framework is available.
A further benefit of .NET will be that programs can be made tamper-proof so that virus-like software cannot subvert their operation. They can also be digitally signed providing unambiguous evidence of the organisation that authored the software.
The .NET Framework also greatly simplifies language interoperability. The common backend to all .NET languages means that inter-calling is trivial. FTN95 exploits this functionality and calling from and to any other .NET language becomes simple. This is also enhanced by the integration of FTN95 into Visual Studio .NET where many .NET languages are supported.
Although a .NET executable may be able to run on a range of CPU architectures, it is effectively tied to a particular address size. Thus existing .NET programs run in the 32-bit address space, as used by Win32.