> C# braucht das .net Framework
Falsch...
C# braucht ein CLR-Framework.
Das gibt es in verschiedenen Ausprägungen: .Net, Silverlight, Mono, .Net Micro, .Net CE. CLR-Framework von Mono läuft auf mehr Plattformen als Java. Du nutzt halt mit WinCE ein nichtportables CLR-Framework.
Auch von Java gibt es verschiedene, inkompatible oder nur teilkompatible Frameworks. Sei mal SWT genannt, das es nicht für alle Java-Plattformen gibt, oder auch Kompatibilitätsprobleme zwischen OpenJDK und dem Sun JDK (das mit .Net vergleichbar ist).
Mono läuft im Übrigen auch auf dem Nokia-Handy.
Ich habe bewusst geschrieben: Mono und die C#-Implementation von Mono ist portabel und NICHT .Net ist portabel! Da steckt ein großer Unterschied drin! Genausowenig wie die Java-Implementation von Sun und die von Kaffe (http://de.wikipedia.org/wiki/Kaffe) kompatibel zueinander sind.
Dementsprechend müsste ich ja auch behaupten, dass Java nicht portabel ist, da es ja Java-Implementationen gibt, die nicht portabel sind und man nicht die Java-Frameworks blind austauschen kann. Es gibt auch nichtportable Java-Frameworks, die nur auf einer Maschine laufen.
> Javas generics (ganz zu schweigen, von dem Schwachsinn, den es da in C# gibt)
Java Generics und C#-Generics sind für den Entwickler nahezu identisch, allerdings werden C#-Generics vom .Net-Framework direkt unterstützt, während Java-Generics nur ein implizites TypeCasting während der Kompilierzeit ist. Im Regelfall erkennt man keinerlei Unterschiede zwischen Java- und C#-Generics und wenn doch, würde ich von dir gerne wissen warum C#-Generics Schwachsinn sind und Java-Generics nicht. C#-Generics haben, ausgenommmen des Wildcard-Platzhalters, keinerlei Nachteile gegenüber der Java-Generics.
Vielleicht solltest du dich mit der C#-Sache erstmal befassen, bevor du dagegen flamest.
> C++ templates sind doch noch einiges mächtiger als Javas generics
Und?
Annotations, bzw. Attribute sind die Königsklasse der Abstraktion! 99% der C++-Templates werden sowieso nur zur Typisierung genutzt. Das kann auch ein Generic.