Devoxx 2011 : Joshua Bloch se livre à une critique de Java
Alors que la conférence aborde historiquement les bons cotés du langage, l'ingénieur de Google a choisi de livrer lors de sa présentation une critique de Java, 15 ans après la sortie de sa première version.
Java: The Good, the Bad, and the Ugly Parts par Joshua Bloch de chez GoogleSans grande surprise Joshua Bloch a fait salle comble et pas n'importe laquelle puisqu'il c'est celle qui offre le plus de places assises, près de 700.
Alors qu'on a l'habitude d’entendre parler des bons cotés de Java et surtout lorsqu'on se rend à Devoxx, Joshua Bloch a choisi de nous livrer sa critique du langage dont la première version date déjà de 1996.
D'abord les bons côtés, qui ont fait sont succès :
- Pas de gestion de la mémoire par le développeurs, c'est la VM qui s'en occupe.
- Des types primitifs entièrement spécifiés, donc pas de mauvaise surprise lorsqu'on passe d'une plate-forme à l'autre comme on pourrait en avoir en C.
- Ordre d'évaluation des expressions constant : de gauche à droite.
- Une liaison dynamique qui permet de remplacer une librairie par une autre sans nécessairement recompiler, hormis pour les constantes, on y vient !
- Une syntaxe proche du C donc facile d'accès pour nombre de développeurs.
- Une typage fort des données qui permet de détecter des erreurs à la compilation, de faciliter l'analyse de code, l'auto-complétion par les IDE, etc.
- La notion de Threads présente dès la conception du langage.
- L’absence de macros et de surcharge d'opérateurs ce qui rend les codes sources relativement similaires et compréhensibles par quiconque.
- L'absence d'héritage multiple mais la possibilité d'implémenter plusieurs interfaces.
- Le fait que les déclarations, l'implémentation et la documentation soient toutes regroupées au même endroit du code.
- L'ajout par défaut de constructeurs.
- La conversion et le cast automatique de certains types de données avec éventuelle perte de précision.
- La substitution des valeurs constantes à la compilation qui casse l'aspect liaison dynamique mentionné précédemment.
- L’absence de types int et long non signés.
- L'absence de méthode toString() sur les tableaux.
- etc.
Voilà pour les aspects généraux, après quoi Joshua a passé en revue 135 classes et interfaces constituant le premier Java en soulignant les bons cotés en les moins bons.
En conclusion, il apparait que Java s'est imposé à un moment ou il était moins complexe que C++ et plus puissant que C. Les point forts du langage résident dans le design du langage tandis que ses points faibles restent cantonnés à des détails plutôt techniques.
Depuis Java a évolué pour palier à certains choix initiaux critiquables comme avec l'introduction de StringBuilder par exemple. Reste à savoir quand sera prise la courageuse décision d'abandonner toutes les classes des premiers jours devenues obsolètes dont le maintien alourdi le langage au fil du temps.