Windows .NET is the next major upgrade to Windows. The major changes in Windows .NET will revolve around the integration of Microsoft's .NET architecture, which is a bytecode-based execution engine. It is important to note that applications built with .NET will not contain native machine code: they will be compiled to MSIL, Microsoft's portable bytecode implementation.
A .NET runtime engine, which can be installed over current versions of Windows, as well as a development kit for .NET are freely available from Microsoft's site.
.NET is actually extremely interesting technology. It uses many of the ideas of Java: source code compiled to portable bytecodes, common runtime library across platforms, dynamic linking, and so forth. However, it accomplishes all of this with a high degree of integration into the operating system. It benefits from the integration mainly in terms of speed, because the .NET interpreter can directly access kernel, USER, and GDI calls, whereas Java has to go through an application level. .NET also benefits from OS integration in its evolved concept of "program module" that solves DLL hell, by allowing programs to specify what version of shared libraries they link to. Actually, client programs maintain a hash identifying the particular version of the DLL they were compiled against, and will not run unless they have the same library at runtime.
.NET gives an incredible amount of security control to the user. For example, if you suspect that a particular .NET program is covertly sending private information over the network, you can disable network access just for that program. Or, you can disallow a program from accessing the file system outside of its home directory. This reduces the threat of "Trojan horse" programs and spyware. Java provides similar controls, but they are clumsy, coarse and not accessible to the user. Also, the clumsy Registry is deprecated, and programs are expected to keep private state information in files in their home directory, just like they should have done all along.
.NET, unlike the Java platform, is language independant. Currently, the .NET development kit comes with four compilers: Visual Basic .NET, C#, Managed C++, and MSIL. All of these languages share a common object-oriented runtime library, termed the Common Language Runtime, or CLR. For example, System.WinForms.Window is a class that corresponds to a window in all supported languages. Similarly, any user-created code can be shared transparently between each of these languages without wrappers, glue code, or recompilation. This is because the MSIL bytecode contains symbol and parameter information, similar to Java bytecode files. Several third parties have also provided languages that compile to MSIL; this is particularly easy to do because the common runtime provides classes for writing MSIL bytecode.
- Visual Basic .NET is an upgrade to Visual Basic. Like Visual Basic, it compiles to bytecodes, albeit now .NET bytecodes. VB.NET also implements several changes in the language that may break legacy VB code. I believe Microsoft has rescinded these changes in light of protest from VB users.
- C# is similar to Java, but with several desirable changes. It eliminates the ugly dichotomy between atomic types and object types: int is now derived from a top-level object class, so it is possible to write a single method that acts on all types. It supports overloaded operators and properties. It allows you to pass data by either value or reference. It supports options to allow use of pointers. It is garbage-collected, but you can switch to manual deallocation for particular blocks of code.
- Managed C++ is compatible in most ways with C++, but contains several added non-standard keywords (all prefaced with ANSI-required "__", thankfully) to allow integration with the .NET architecture.
- MSIL is the name for the underlying bytecode that all .NET languages compile to, as well as the assembly language one can use to create MSIL binaries directly.
.NET is a huge change to the Windows architecture. It is not a simple name change, like Windows XP and Windows ME. It is not a superficial interface re-do. And, if it is released and supported in a form even approximate to that available in the development kit, I highly commend Microsoft for this initiative. Naturally, I also fear Microsoft's tendancy to corrupt perfectly good technology, including their own (such as Windows 95).
I actually hate to admit it, but seems to me that .NET includes a lot of really, really good ideas, and is the way I would rather write programs. I was shocked to discover good technology coming from Microsoft. Yes, it rips off Java in many ways, but Java is largely a failure, and has too much inertia to correct its numerous flaws. Java will never be a language for desktop applications. Microsoft recognizes this, which is why they feel confident to ditch Java and pursue this highly streamlined alternative.
This started out as a simple correction of facts found in the nodes Windows.NET 1.0
and Windows .NET Server
, but turned into a dump
of my knowledge on .NET. So I put it here instead. But, my original point is: Windows .NET
is not the same as Windows XP
. Thank you very much.