This is the best explanation of the further compiliation to machine code.
"In C#, however, more support is given for the further compilation of the intermediate language code into native code."
That's really deep.
The differences between C# and Java are very small. C# has enumerators and operator overloading, which are nice, but nothing earth shattering. Consider the hello world in C# vs hello world in Java.
From that page, in C#
using System;
public class HelloWorld
{
public static void Main()
{
Console.WriteLine("Hello World! From Softsteel Solutions");
}
}
Compare this with helloworld in Java.
public class HelloWorld
{
public static void main(String[] args) {
System.out.println("Hello World");
}
}
Vs C++
#include <iostream>
using namespace std;
int main() {
cout << "Hello World" << endl;
return 0;
}
You see that C# and Java are much closer to each other than to C++.
My biggest problem with Java is the lack of templates, so one cannot use compile time typesafe container classes. Is C# going to fix that? Or would that require straying from Java too far?