Several of my college-mates ask me where exactly to start learning .NET. So I thought I would actually include some .NET tutorials in my blog. As promised earlier, Iam starting with my series for tutorial articles on .NET. I shall categorise them into various levels. Iam starting off with level-beginer. The first one can be found here.
Level: Beginer
So what is this .NET???
Let's take the definition from the creators themselves.
....NET is the Microsoft Web services strategy to connect information, people, systems, and devices through software. Integrated across the Microsoft platform, .NET technology provides the ability to quickly build, deploy, manage, and use connected, security-enhanced solutions with Web services. .NET-connected solutions enable businesses to integrate their systems more rapidly and in a more agile manner and help them realize the promise of information anytime, anywhere, on any device...
Understood??? Let me elaborate it.
People ask me "Is .NET a programming Language??", "Is .NET an Operating System?", "Is .NET a specification?" and so forth
The answer is NO.
.NET is a Software Development Platform to develop applications that span across multiple devices and multiple architectures.
Code execution in .NET is somewhat similar to the concept involved in Java Virtual Machine. I am using the word Java here because many of us would be familiar with this.
There are actually many many languages which support .NET. What does this mean?? Consider JVM.
What does JVM execute? Answer: The Class File.
What creates the Class file? Answer: The JAVA Compiler.
What is given as input to the JAVA compiler? Answer: A Java Program.
Java World .NET
JVM: CLR (Common Language Runtime)
Class Code: MSIL (Microsoft Intermediate Language)
JAVA Program: ANY .NET supported Language
In .NET, you first write your code in your favorite .NET language. ( C#, VB.NET, J#, VC++.NET, APL, C, COBOL, lcc, Python, Perl..).
Your input code would be compiled into an intermediate architecture independent representation [a complete language in itself] called MSIL. (Microsoft Intermediate Language)
Naturally the next step would be to convert this MSIL code into the native machine code.
Some key differences between the two environments..
Source Programming Languages:
In JAVA environment the only input language available is Java.
In .NET you have many many languages supported. Infact you yourself can create a language, call it yourname.NET (remove the .NET if u don't like it) and write a compiler for it, which converts the code written in that language into the MSIL. You are free to do so. [There are some factors/standards/specifications to be considered]
Now since, one major advantage of this .NET is interoperability there has to be some standard to be followed by these languages. That's standard is defined in CLS-Common Language Specification.
Now talk about MSIL.
This too is very different from Class code in Java.
That is, when you see the Java class code can you understand anything??
I bet you cannot. It is just some junk code. But that's not the case in MSIL. MSIL is itself a language. You can code in MSIL. It has all the features that exist in any .NET supported language. Infact there are some really superb books on MSIL itself.. You can master .NET if you read those.
Since many of these languages get converted to MSIL, there would certainly exist some datatype conflict. To resolve this there is something called Common Type System. In fact that defines the datatypes available in MSIL. The Common Type System defines how types are declared, used, and managed in the runtime, and is also an important part of the runtime's support for cross-language integration. The Common Type System performs the following functions:
-Establishes a framework that enables cross-language integration, type safety, and high performance code execution
-Provides an object-oriented model that supports the complete implementation of many programming languages
-Defines rules that languages must follow, which helps ensure that objects written in different languages can interact with each other
The MSIL is independent of architecture.
Native Code Generation
Now this MSIL is converted into native code by the execution engine. These days people call this kind of Execution Engines as Virtual Machines. Actually it's not a Virtual Machine. Remember what's exactly a Virtual Machine? You would know if you have studied an OS course before the evolution of JVM (IBM's VM). To be simple the term Virtual Machine is used for a software/hardware emulation of the underlying machine.
Hence it is technically incorrect to call the Java Execution Engine (JVM) as a Virtual Machine. So I will call JVM an Execution Engine.
[Any Java Programmer will kick me if I say there is no Virtual Machine involved in Java Program Execution].
In .NET this Execution Engine is called CLR (Common Language Runtime).
Hence the job of CLR is to execute the MSIL. So the CLR has to be architecture/OS dependent.
Another question that I have come across is "How do I install .NET?"/ "Can you get me .NET CD?"
Technically there is no answer for this. There is nothing called .NET CD.
To develop applications in .NET, the .NET framework has to be installed first.
.NET Framework??: What does this contain?
Everything needed to develop and deploy a .NET application. It includes compliers for Microsoft Languages like VB, C#, etc.. It contains a large set of built-in Classes neatly organized into namespaces. It also contains the CLR.
So to write a program and execute it on a Windows Machine you just need the .NET framework. Version1.1 is the stable version currently available. It is FREE to download on Microsoft's Site. It is a 23 MB download. It can be installed on Windows 98 or higher Operating Systems.
How to execute a program using .NET framework alone?
Type-in your HelloWorld program in your favorite editor.
Compile it in command line. Eg. If it's a C# program, the compiler to be used in csc.exe. So compile it as csc filename.cs . It compiles and you see the exe file generated. The Visual Basic compiler is vbc.exe . (Files vbc, csc, jsc etc are present in the .NET framework).
Now run the exe file and you get your output.
The .NET framework is installed in your OS directory.
23 MB??? My Maam said .NET it's a 5CD software???
hmmm.. Your maam is an idiot. To be specific she is talking of Microsoft Visual Studio package. Microsoft Visual Studio package was very well available even before this .NET came. But previously you compulsorily needed VS to develop applications in those languages. The VS had the compiler. Now it's not so. They give out the compilers for FREE.
The Visual Studio versions after Visual Studio 6 were called Visual Studio.NET.
Visual Studio.NET is very much needed for Visual Programming.
Some features of Visual Studio.NET Software:
Increased programming productivity, Easier to write code: drag and drop Web App and Services Development, Fully supports the .NET Framework, Simplified development, Multi-language support,Improved debugging, Unified IDE, Powerful design tools, Windows Forms, Web Forms, XML and component designers, Consistent set of tools across languages..
It also contains excellent debugging tools. It also has editors for VB, VC++, C#, J# etc and some plug-ins can be installed to support many others. It also has emulators for Windows based mobile devices. [This is the situation where the term Virtual Machine should be used. Windows CE.NET or Windows Pocket PC is emulated]
Visual Studio.NET 2003 is the most recent stable version. It consists of 2 CD's. The remaining 3 CD's your Maam is talking about are actually MSDN. It's a library with tones of tutorials, code, books, articles,...
And it COSTS.
So was this sufficient?? NO, NO, NO.
This tutorial article will be continued. I have not yet discussed about the real Power and real Need of .NET- Interoperability, Component based Development, Web Services, minimized software deployment and versioning conflicts, managed code, garbage Collection, ASP.NET, Globalization/Localization support….and the list goes on.
to be continued..
Bharath Ganesh
Microsoft Student Champ
Chennai, India
bharathganesh@gmail.com
Can also read from: http://dotnetjunkies.com/WebLog/bharath/articles/44112.aspx
Microsoft is offering some cool PeopleSoft transitions. Existing PeopleSoft customers are directed to Microsoft's Great Plains and Axapta.
PeopleSoft Enterprise -> Great Plains
PeopleSoft EnterpriseOne -> MBS Axapta
PeopleSoft World -> MBS Axapta
There would also be transitions towards Solomon and Navision.
Microsoft is expected to give discounts on software, cut down licence fee, reducing the cost of support programs for an year etc... for these PeopleSoft Customers.
All this time, Microsoft has been a fence sitter in the ERP market. However, currently among the three major database vendors, IBM, Oracle and Microsoft, only one has an ERP application. IBM seems at the moment not focused on the ERP products sector. This may bring in Microsoft in the market. They have already started the ball rolling by acquiring Great Plains Software in the United States and Navision in Europe. And no prizes for guessing whose pie Microsoft would eat first … Oracle’s of course!
Joel has written a wonderful article titled “Advice for Computer Science College Students“. Its really good and a must read for every CS major student.
A snippet
...If you enjoy programming computers, count your blessings: you are in a very fortunate minority of people who can make a great living doing work they enjoy. Most people aren't so lucky. The very idea that you can "love your job" is a modern concept....
I would even recommend you to take a huge printout, laminate it and hang it in ur room. Most of his view are 100% correct. He talks about need for need for learning C, microeconomics, writing skills, need for a good GPA.....
But even here Sriram has something different to say regarding Joel advising for a good GPA.. In that matter I completely go with Sriram's viewpoint. Certainly, In a country like India, GPA SUCKS.... In most cases, it is inversely proportional to the students real skills. There is no continous assesment here.
A geeky classmate of mine flunked in Digital Systems Course and Software Engineering Course. He got some less than 10 marks out of 100 in both. But this guy has secured 40th rank (99.8 %ile) in the Graduate Aptitude Test in Enginnering (GATE) examination conducted by the premier IITs (for PG studies). !!!! And this guy was rejected by a very very famous Indian IT service company "INFOSYS".
This geeky friend of mine had actually represented India at a Software Design Contest held at Philippines and got 2nd prize at International level...All that at the age of 16... His case speaks very well about the Indian Education System and Recruitment by Indian IT Companies.....
In India you can get high marks if and only if you dont follow the *good* books for the courses. Almost for every course in every university, local author books are published. And you can get 80% above only if you study from those local author books. I swear none of my university toppers would have heard of Don Knuth or Rob Pike or even Brian Kernighan !!!!
The only *skills* needed to get into the Indian IT majors is an Engineering degree and some amount of luck (or fate!!) but the only way to survive in this industry even after the current outsourcing boom ends would be to go by some of Sriram's suggestions - one being coding, coding and coding....
Overall both articles are really worth reading.
Joel's Article: http://www.joelonsoftware.com/articles/CollegeAdvice.html
Sriram's : http://www.dotnetjunkies.com/WebLog/sriram/archive/2005/01/03/41183.aspx
[P.S. : This is my 50th post. I have always greatly enjoyed writing every entry here. My experiences in this blogosphere were really exciting. Please send ur comments about my blog]
I plan to write some .NET tutorial on this blog. Ever since I started blogging, I have had this idea of including some learning stuff here. But it never got really started.
This being a .NET learning season for a lot of people at my university (as most of them are planning to do their final year projects in .NET), I think this is the best time for venturing into some .NET tutorials.
I plan to include some basics of .NET framework, the CLR, Garbage Collection, basics of C#,...and some cool links.
go System.Tutorial.StartLearning(.NET);