.NET is a conglomeration of many technologies. It was created by Microsoft to provide a fully managed, secure, object oriented programming environment. Microsoft spent about $1,000,000,000 to design the original 1.0 version in February 2002 (as of this writing, it's currently at version 3.5). The technologies are:
- A very large, object oriented, library with well over 10,000 classes in its initial release.
- 4 new languages (C#, VB.NET, J#, IL (Intermediate Language)). There are also 3rd party languages available like Cobol.NET, RPG.NET, Python.NET, PHP.NET... The list keeps growing.
- A managed run-time environment similar to a Java Virtual Machine.
- An Integrated Development Environment (IDE), though some might argue that this is outside of .NET borders.
Microsoft hired Anders Hejlsberg from competitor Borland. Anders was instrumental in creating Borland Turbo Pascal in the 1980's and later Borland's Delphi and C++ Builder. Delphi and C++ builder were fully object oriented development environments with a strong emphasis on visual programming. These products raked Microsoft over the coals in the beauty of their design, speed of development, and speed of native code execution. Microsoft's Visual Basic was very far behind in its abilities at all levels. Microsoft hired Anders away from Borland and there he was key to designing the new .NET technologies. It's not a coincidence that developing a C# or VB.NET application feels a LOT like writing a Delphi application.
Unless you're a developer, it's hard to understand the importance of the .NET technologies and also, unless you're a developer, you're not likely to get very excited about it. But, for true geeks that have embraced the technology, it's almost as exciting as getting a guest spot on Star Trek Voyager alongside Jerry Ryan (who portrayed the bombshell blonde Borg female designated "7 of 9") as a love interest.
DotNet, as its name implies, embraces network technologies, which have been somewhat difficult to implement in other languages and technologies. It also makes writing applications for the Microsoft Windows platform MUCH easier by abstracting (or hiding) the complex and difficult Win32 API (Application Programming Interface), which was essentially a collection of tens of thousands of global functions and DLLs and confusing data structures, which also required including many arbitrary header files in your code.
Safety is a key feature of .NET. In natively compiled (unmanaged) code, it's easy to make common programming mistakes like memory leaks (not release memory that you're finished using), buffer overruns (by reading or writing beyond the end of a data structure and corrupting code or data). A developer using an unmanaged technology (like C/C++, VB6 (and earlier), Delphi, etc...) has to program with caution and use tools like Lint to analyze their code and run-time analysis tools to examine how memory is used while the application is running. Even with these tools, it's difficult to catch all such problems. .NET minimizes (or even eliminates) these problems by not allowing direct access to the computer's memory. Instead, data structures are in the form of objects which are protected in a way. Since the developer does not access their contents with memory addresses, but instead with "references", the references themselves are objects and "know" where an object resides in memory AND how much space it takes up and will NOT allow the application to access memory outside of those bounds.
Security is another key feature of .NET technology. Microsoft went through great lengths to protect a host system running a .NET application. Among their security tactics are code security: In other words, the user of the computer can dictate how much of that computer system any particular .NET application (known as an "assembly") can access. For example, any .NET application can be denied write access to a computer's hard drive, or to a particular network share or even be denied access to the LAN at all, or can be forced to only communicate with a particular web site. EVERYTHING in the .NET library is security checked at the time of execution.
Standards: Microsoft has had a reputation for releasing proprietary technologies. Microsoft has officially handed over the C# language to the ECMA standards committee. This means that Microsoft does not "own" the C# language. As a result, there are several products available today they provide C# development, including Borland's C# Builder, The Mono Project's implementation of .NET and a few others.
Speaking of Mono, a discussion of .NET would be incomplete without mentioning the mono project. Microsoft developed .NET on the Microsoft Windows platform only. A group of dedicated and driven developers decided they'd like to have that technology on Linux and on the Mac as well, so they joined togehter and created an open source project called Mono. Mono is a complete rewrite of virtually the entire .NET base class library as well as an integrated development environment, much like Visual Studio, and ASP.NET engine for Apache web servers, as well as a huge list of everything .Net. All of this is up and running on Linux and on the Mac. They have done a remarkably outstanding job. As a result, you can now create a .NET assembly (an EXE file or a DLL file) with Microsoft Visual Studio on a Windows platform, then copy the file to a Linux box and it will run! Conversely, you can write a .NET assembly using the mono IDE on Linux and it'll run on Linux, Windows, and Mac. .NET binaries are not dependant on any operating system... and for that matter, they're not dependant on the hardware. A single EXE can run on any hardware platform and operating system that hosts a .NET managed environment. This make .NET very portable.
Java: .NET is not Java, but it is very similar. A lot of people claim that .NET is Microsoft's answer to Java. From a high-level technology perspective, it is indeed, very, very similar. Microsoft even provides a language called J#, which is basically Java, but it runs on the .NET platform, not in a Java Virtual Machine. Its purpose was to provide an entry into the .NET world for prior Java developers.






Cyree
Invite as author
Correction
At second - I don`t understand, how IDE (exaggerate: tool for development) can be part of Framework.
IDE: I hope I didn't give the impression that I was saying the Visual Studio IDE is part of the *framework*. I did include it under the umbrella of ".NET technologies" though, but not under the framework itself... just as one of the "technologies" that make up ".NET". The framework is one of the items under the .NET umbrella and the Visual Studio IDE is another. But, the IDE is not part of the framework. You are certainly correct in that. This is where the vagueness of what .NET is comes into play. For the readers, please note that the IDE is one of the technologies used. It allows developers to write applications that target the .NET framework, but is NOT part of the .NET framework itself. Again, just one of the technologies that can fit under the .NET umbrella.
EditSaveCancelDeleteDeleteBlock this userReport abusive commentHide report window
Anonymous
Invite as author
Possible typo in the 3rd to last paragraph
EditSaveCancelDeleteDeleteBlock this userReport abusive commentHide report window