The .NET VisionAdd Comment
<span class=wboxheado>Introduction</span><br> In June 2000 Microsoft released the beta version of .NET Platform, related languages and APIs. This release is a beginning of a new horizon for programmers. But till today, I have seen that many people have failed to see the correct vision, "<b>The .NET Vision</b>"! .NET has been seen by many in the wrong light, the only perspective it has been seen in and publicized is in comparison to SUN Java. I don't deny the fact that this perspective is right to some extent, but the scope .NET is something beyond its competition with SUN. In this article I will try to show you my vision of .NET. Please note that this is my own vision and can be incorrect or wrong!<p><span class=wboxheado>History</span><br> Let's start with some interesting short history of computing products offered by Microsoft. Say around 20-30 years back (go down your memory lane people) when computers were very new, huge rooms were filled up to contain just one computer! The programming language was purely machine language and the purpose of computers at that time was to store data and do calculations.<br> Jumping a few years from there was the birth of the PC (Personal Computer). Architects of the PC reduced the size of the computer to such a extent that they dreamed of a PC on every desktop in the future (which has become true today). Dos / Windows 3.0/3.11 programmed in C/C++ and similar languages changed the outlook of the people towards computers! The Importance of the computer in commerce started increasing. The Big IBM Main Frames helped rapid industrialization and companies could now store millions of records of sales and purchases in them. <br> In the 90's the birth of Windows 95 (later many other in the series like Win98/ME etc) was a big welcome, as a big step towards developing a user friendly operating system. The programming languages used were C and C++. The Client - Server technology took birth, intranets within companies became common and necessary. The Client- Server technology though very ambitious and which is still used, suffers from many defects the explanation of which is out of the scope of this article. Meanwhile, VB (Visual Basic) was developed by Microsoft to help develop RAD (Rapid Application Development) GUI programs on the Windows Platform. Although VB was successful in delivering its purpose, it never was able to deliver anything more than that. That's why it was never called a full fledged programming language and Microsoft has still not been able to do much till VB6. Windows NT was also released to meet the networking needs of small and medium scale businesses. In the hardware field too we certainly have come a long long way. Today the processing power of a PDA today is more than the total processing power companies used to have few years back. <br> <br> In between came the emergence of the Internet! Good or Bad the reality is it has changed and affected every aspect of our lives. Again rather than explaining the changes it has brought in our lives which I guess you all know very well I shall proceed further with my story.<br> <br> Microsoft, has always been a bit late, but lucky as far as the Internet world is considered. Netscape was the first to come out with the revolutionary concept of the browser. Microsoft followed its footsteps later with Internet Explorer, but over the years Internet Explorer has certainly won the Browser war (your using a IE, right??) ! <br> <br> One big revolution/evolution or what ever you call it, took place with the release of Java by SUN Microsystems. It became the language of the Internet! Applets ruled the web sites in creating dynamic content, till the emergence of HTML/DHTML which performed the same function with a few lines of scripts. Due to lack of power and speed Java failed to take off as a programming language for client desktops. With the failure in the Applets and Client applications market Java shifted its focus to Server Side Computing. This shift has made Java a power house in Server-Side/ Enterprise Computing with no competition at all! </p> <p><i>Reasons For Success of Java in Enterprise Computing:</i><br> <br> <span class=wboxhead>1) Absence of any other languages for the Internet</span><br> Java was created specially for the Internet. It was modern and free from backwards compatibility issues since it was created from scratch. On the other hand Microsoft tried to promote VC++/VB as the programming language for the internet. This was a big mistake. It seems like since Microsoft was late into the Internet age, so it tried to get into the market with its existing technologies. Java was successful in helping simple programmers develop applications quickly due to its simplicity and object oriented concepts. Pointers in C++ and difficulty in interoperability between VC++/VB (both Microsoft technologies) added to the woes of the programmers and the notion became that its difficult to program using these languages and only high IQ programmers could use them. One more factor was the ease of coding, Java had base classes which directly enabled interaction with various Internet standards. In C++ you had to write lines and lines of code to perform simple tasks. <br> <br> <span class=wboxhead>2) Absence of a scalable, reliable Platform/ Operating System</span><br> This is one of the most important point according to me which lead to the success of Java. Most of the Microsoft technologies ran on proprietary Microsoft Windows operating system. Microsoft got Windows NT 4 out to serve as the operating system for hosting web applications. If anyone has used (or is still using WinNT 4) will agree that WinNT 4 is not all that robust and scalable. The success of the internet led to unpredictable increase in the traffic a web site received. Under such circumstance WinNT 4 servers could not bear the load, and have been a reason for embarrassment to many companies. <br> <br> Java being able to run on multiple platforms gained on this front. Unix / Linux operating system have a record of being stable, robust and scalable. The new combination of Unix/Linux servers with Java as the programming languages became a hit during the Dot Com Boom (remember it !!). <br> Without the support of any strong operating system Microsoft Technologies failed to take off so well.<br> <br> <span class=wboxhead>3) Low performance of the UI and Middle Ware layer</span><br> <b> UI (User Interface)</b><br> Java developed JSP (Java Server Pages) and Servlets for creating User Interfaces. Both these technologies allowed programmers to program their web pages and give them a high level dynamics in creating web sites. Also the code got actually a compiled so it give better speed and performance. Microsoft developed ASP (Active Server Pages) to act as the UI layer. ASP was script based, so naturally it was slower then the compiled Servlets. In ASP the HTML code and scripting was mingled up making it very confusing for the programmer. Low Scalability of ASP too was a drawback. Due to the availability of powerful tools and dependence on just the IIS server (which comes free with the Win NT operating System), ASP gained a significant acceptance in the small companies and web sites. But overall it could never compete with power of JSP/Servlets.<br> <br> <b>Middle Layer</b><br> To act as the business logic layer Microsoft introduced COM and later on DCOM. These technologies tried to solve the interoperability issues between various languages like VC++/ VB etc. Though COM came as a big relief to users of Microsoft technologies, it was not free from its complexities. Programmers using COM would agree that it was (and is) a tedious task creating working COM components. Also there were some major languages differences like the integer in C++ is 32bit while the same in VB is 16bit, which could not be solved by COM. DCOM came in to provide COM support remotely, but using its proprietary protocols it was a complete failure like RMI in Java. Later on COM+ was introduced which tried to give a bit more object oriented access, but it too suffered from many defects of COM.<br> EJB by Java, was termed by Microsoft as a copy of Microsoft Technology. But still it has been a success. It provides a scalable and robust middle layer for Java technologies.</p> <p>From the above discussion its clear that Microsoft, virtually had no products designed for the Internet age. This might have cost Microsoft dearly since they have lost out on the Dot Com boom completely. But that does not mean that Microsoft has been sleeping all this while, they know their weakness and are fighting back on all fronts.</p> <p><span class=wboxheado>Operating Systems (Platform)</span><br> Windows 2000 series of operating systems has been launched to serve as strong, robust and scalable systems guaranteeing 99.999% of uptime. They have proved their superiority and are gaining wide acceptance in the server market. They have been successful in keeping the user away from those dreaded "Blue Screen of Death". Other capabilities like clustering, load balancing etc are specifically designed according to the needs of the Internet. The various other enterprise servers like BizTalk, Commerce Server, Site Server etc have been launched to meet the platform needs of the programmers. Further Windows XP, scheduled to be released October 2001 promises the removal of all the dos/windows95 code in order to provide better stability.</p> <p><span class=wboxheado>.NET</span><br> As I have mentioned before Microsoft did not have anything solid to offer for programming on the Internet. .NET is Microsoft's ticket to the Internet Age. Microsoft spending around 2 billion dollars and more on .NET, has come up with a solution to provide the same power and ability to users of all its technologies. If you glance at Microsoft's history you will find that for every change in the computing scenario they have released a new solution/product. But since the past few years they have just been upgrading their existing technologies to keep up with the change in demand. This approach had to end somewhere and a new solution had to be released since the older products cannot be stretched any more!<br> .NET is the much needed change, for users of Microsoft technologies. The .NET development team has really dived deep into the problems faced by today's programmers and tried to give solution to these in the new platform. Some of these solutions might have shocked many programmers like making Visual Basic.NET an Object Oriented language. But in the long run these changes will be very beneficial, and no language will receive secondary status.</p> <p><i>Some of the outcomes of .NET are:</i></p> <p><span class=wboxhead>1) Support for Multiple Languages with equality status</span><br> One of the best features for programmers is that, to program on the .NET platform they do not have to learn any new languages! They just have to upgrade their existing languages. Since all the languages on the .NET Platform compile into the same IL (Intermediate Language) code they have the same speed and features. This makes the task for Project Planners very easy, since now they have to no longer worry about which language to choose for a particular project, any language they choose will allow them to achieve their goal. Programmers too will be happy since many times they are forced to code in a programming language they do not like due to the project requirements. Now they code in any language the like and taking advantage of full interoperability between languages on the .NET platform they can easily integrate their code with others.</p> <p><span class=wboxhead>2) Developed specially for the Internet Age</span><br> The .NET platform has been designed specifically for the internet age. The ASP.NET and Web Services APIs will help programmers build the applications of the future with minimum coding and better performance. The .NET platform has been designed for the new service base computing scenario where instead of using third party components programmers will now use third party services and build their applications. The Web Services API will also help businesses collaborate better with each other in B2B activities.</p> <p><span class=wboxhead>3) Upgrade for Mainframes based architecture to .NET Platform</span><br> Many big companies still rely on the Mainframes based architecture. Revival of the the Mainframes languages like COBOL, FORTRAN to COBOL.NET and FORTRAN.NET will help mainframe based programs to be easily upgraded with minimal changes. Also since the .NET Platform has been submitted to the ECMA authorities, if Microsoft does not provide a .NET Platform for the Mainframes some other vendor might due the tremendous demand for such a platform.</p> <p><span class=wboxhead>4) Processor Independence</span><br> One more feature which is not being talked about much is Processor Independence which .NET offers apart from Platform Independence. C++ / VB code today compiles into platform and processor specific native code. So if you are selling products you have to sell different builds of the same product depending upon the process. Example: There might be a separate build for Intel processors, AMD processors, Cyrix processors etc. One common feature although among all these processors is that they are all 32 bit processors.<br> Very shortly there is going to be the introduction of the 64 bit processors by Intel and other companies (there are already a few companies with 64 bit processors out!) and may be 128 bit processors too. This makes the situation for native compilers worst! Now they have to distribute separate builds not only for different companies but also for different bits! So now you have to make different builds for the 32 bit Intel, AMD and Cyrix processors as well as the 64bit and 128 bit builds for these processors. This is going to be a real hell!<br> <br> On the .NET platform although, you just create one build and the .NET runtime takes care of executing your code on these different processors! Different .NET JIT'ers will be designed for different processors so that your code runs on all the processors, also these JIT'ers will be optimized according to the processor so that it will be able to make full use of all the features your processor.</p> <p><span class=wboxhead>5) Conformance to Standards and Standardization</span><br> In the past we have seen many technologies fail due to their dependence on proprietary technologies. With .NET Microsoft has for the first time take a totally different approach, instead of relying on proprietary technologies it has relied on well established standards. XML the emerging standard for data representation has been deeply embed into the .NET Framework. Providing rich tools and classes to deal with XML data. Other standards like HTTP, SOAP, UDDI, TCP/IP have also been used extensively in the .NET framework. <br> Also this time Microsoft has come first in the standardization race, it has submitted part of the .NET Platform and the new C# language to the ECMA authority for standardization. <br> Once these technologies get standardize there will be free competition among compiler and tool developers producing better products for the programmers. Borland has already announced its getting ready its products for the .NET!</p> <p><span class=wboxhead>6) Build Better Applications</span><br> Automatic Garbage collection will relive the programmers the worry of managing memory and at the same time it will produce more managed applications. Memory leaks are one of the major bugs which surface in today's applications.<br> The enhanced Windows Forms API and ASP.NET API aim at providing rich and easy to create user interfaces. Freedom from the windows registry and xcopy deployment will also come as a blessing to desktop users. </p> <p><span class=wboxheado>Conclusion</span><br> I guess I have been able to convey my vision of .NET. The .NET Platform clearly goes beyond being just a copy of SUN Java to being the next step for users of Microsoft Technology. Its the first solid step which will enable Microsoft dominate the Internet Age. Is that ethical or not? That does not matter, what matters is that this time Microsoft relying on standards and standardization which will allow free entry and competition among language, compilers and tools developers. Another important aspect of .NET is that it has revived the dead and semi-dead languages which will help to create a fresh demand for programmers expert in these languages.<br> My personal view is that with the existing Microsoft Technologies there was a big full stop (.) to expansion, but (.)NET has opened a new Network of development after the full stop and thus it has been named .NET (Network after the full stop!).