text: 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?