• [^] # Re: promouvoir Java plutot que C#

    Posté par . En réponse à la dépêche Mono 0.24. Évalué à 1.

    Comme tu es un grand garçon, tu peux aller lire http://www.25hoursaday.com/CsharpVsJava.html(...) et tu verras qu'il n'y a pas tant de différences que ça entre les deux langages. Certains points de cet article seront de plus rendu obsoletes par la version 1.5 de Java qui apporte de plus les génériques. Par exemple, la version 1.5 apportera les énumérés et le foreach. Ton exemple des délégates est amusant car les classes anonymes les remplacent avantageusement en proposant une solution beaucoup plus objet et beaucoup plus souple. Normalement, les meta données dévraient être ajoutées aussi dans la version 1.5, mais la situation n'est actuellement pas claire, même si en pratique XDoclet permet de résoudre la plupart des problèmes liés à l'absence de ces méta données (que tu appelles les attributes).

    Si tu veux faire vraiment une comparaison, il faut aussi parler de ce qui manque en C#, en particulier une vraie gestion saine de la mémoire, à cause du unsafe, l'absence de vrai chargement dynamique de classes, le système totalement débile du virtual, l'absence des checked exceptions, etc.

    Bref, les langages sont effectivement différents et quand la version 1.5 de Java sortira, il restera clairement à C# quelques avantages comme la surcharge d'opérateur, les properties et le passage de référence, mais au prix de la mémoire unsafe et du virtual.

    Java a été conçu pour tourner avec ou sans JIT, .NET ne fonctionne qu'avec un JIT...

    Et alors ? Le fait est que les JVM Java performantes ont un JIT, je ne vois pas l'intérêt de cet argument foireux.

    Le bytecode java... s'appelle le bytecode java... ça te donne une idée? sérieusement, le bytecode java a été pensé pour java, pas pour permettre à plusieurs langage de l'utiliser... .NET n'a pas été conçu de la sorte, c'est même parfois légèrement pénalisant pour le C#.

    Et alors ? Oui, le bytecode de .NET a un énorme avantage par rapport à celui de la JVM, il permet de le passage par référence. Donc les langages qui ont besoin de ça sont potentiellement pénalisé par la JVM. Mais la réalité, c'est que de très nombreux langages sont actuellement compilable pour la JVM, éventuellement avec des performances dégradées dans certains cas. D'autre part, si on veut parler de .NET lui même, effectivement, on peut programmer en .NET dans d'autres langages que le C#, mais on reste dans le monde .NET. Avec J2EE, on parle CORBA, RMI et web services, ce qui permet d'être interopérable avec d'autres plate-formes. Tant qu'à faire à comparer tout et n'importe quoi, autant y aller fort !