lundi 1 janvier 2007

Différences entre la généricité en Java et en C#

Il est connu que, bien que très appréciée par de nombreux développeurs moi compris, l'implémentation de la généricité en Java 5 était pour le moins contestée.

En effet, contrairement à Microsoft avec .Net, Sun a fait le choix de ne pas créer de nouvelles instructions dans sa machine virtuelle pour gérer la généricité dans Java 5. Concrètement, les classes génériques écrites en C# sont instanciées au lancement du programme alors que Java se contente de placer des "Object" et d'ajouter des transtypages exécutables au runtime.

Résultat, en Java, la sacro sainte compatibilité binaire a pu être préservée mais les gains en performances (ajout de transtypages) et en nouvelles possibilités (perte du type original après la compilation) sont plus limitées qu'en C#.

Dans ces deux billets, Ted Neward, illustre certaines faiblesses fonctionnelles de l'implémentaion des génériques en Java. C'est assez technique voir un peu aride mais pour le moins intéressant :
- 1er billet
- 2ème billet

Aucun commentaire: