1 - Is Microsoft dotnet a Virtual Machine... like the Java Virtual
Machine... that will run on any operating system?
Yes it is virtual machine like java that can run in any operating system,
but Microsoft implmeneted it only on Windows and Pocket PC that you can used
for comercial application, and they release also the source code (name Rotor
Project with limited functionality) for Windows, Unix, Linux and MacOsX but
only for research purpose.
There are two open source projects that trying to implement .Net platform
for Linux and other system like mono (
http://www.go-mono.com/) and dotGNU
(
http://www.gnu.org/projects/dotgnu/).
2 - If so, does Microsoft give away the dotnet development system like Sun
does the Java Developmet system?
Yeah the .Net SDK with the compiler is free to download from Microsoft site
and you can use them freely to develop your application, and there is an
open source free ide for CSharp called sharpdevelop
(
http://www.icsharpcode.net/) that you can use with the SDK.
I was considering learning Java for my next project and someone suggested
dotnet instead.
That depend on your project but both are great platform that you can used in
most projects.
3 - Can someone give me the pro's & con's of each?
This some of the pro and con in my opinion,
pro for java: that is multiplatform and supported by a lot of vendors.
con for java: that it is still slow for UI and its UI doesn't look or feel
exactly like native interface of the operating system, it is difficult in
java to call native API (Compared to .Net), and you can't use pointer or
control your object to be treated by reference or value and it is only
single language.
pro for .Net: support multilanguage, you can use pointer by mark it as
unsafe to speed some memory access (not available in all .Net language, it
is available for C# and C++), you can pass any object by reference or value,
very easy to call any DLL or COM component in windows from .Net application,
the UI is using windows API so it look the same as the native windows API,
there is a utlity called ntgen that you can use it to compile your
application to native during the installation which will avoid the startup
delay and make your application run nearly as native application, if you
already have any C++ application you can compile it in mixed mode then you
can use it in .Net easily.
con for .Net: Only windows platform, mono and dotgnu you can use them but
they don't fully support winform (the UI for .Net under windows)
There is much more pro and con for both,
Regards,
Emad