Outils pour utilisateurs

Outils du site


java

Différences

Cette page vous affiche les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue comparative

java [2013/05/06 13:23] (Version actuelle)
Ligne 1: Ligne 1:
 +http://​test.blog2geek.com/​lang-java-critique-615.html
  
 +=== Typage faible ===
 +
 +Alors que des langages vérifie le typage, sans même nécessiter d'​annotations de la part du programmeur,​ Java innove : les annotations de types sont obligatoires,​ mais elles ne sont pas vraiment utilisées.
 +Par exemple, pour comparer deux strings, il faut faire string1.equals(string2). Si jamais string2 n'​était pas de type string, le compilateur ne ferait aucune remarque, même pas un warning.
 +De même :
 +
 +<code java>
 +ArrayList<​Integer>​ foo = new ArrayList<​Integer>​();​
 +foo.contains("​test"​);​ // compile
 +</​code>​
 +
 +La raison est que contains prend en argument un Object, autrement dit tout et n'​importe quoi. On se demande encore pourquoi on a dû préciser deux fois que c'​était une liste d'​entiers. Mais Java est capable de bien pire que ça :
 +
 +<code java>
 +ArrayList<​Short>​ foo = new ArrayList<​Short>​();​
 +foo.add(12);​ // ok...
 +foo.contains(12);​ // renvoie false !
 +</​code>​
 +
 +=== Code too large ===
 +
 +Java a une limite de 64ko pour la taille des méthodes (dans le bytecode). C'est un problème quand on génère du code.
 +Cela veut aussi dire que, si l'on a du code valide et qu'on l'​instrumente,​ on peut se retrouver avec du code invalide.
 +
 +=== Enums ===
 +
 +Bug vu en production.
 +
 +<​code>​
 +public enum TriState {
 +  YES, NO, AUTO
 +}
 +</​code>​
 +
 +Combien de valeurs différentes peut prendre une variable de type TriState ? 4. Oui, les enums de Java peuvent être null, ce qui casse un peu l'​intérêt des enums.
java.txt · Dernière modification: 2013/05/06 13:23 (modification externe)