Alors que la conférence aborde historiquement les bons côté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
C’est sans grande surprise que Joshua Bloch a fait salle comble de la plus grande salle de conférence du salon DEVOXX 2011.
Ayant pour habitude d’entendre parler des bons côtés de Java, surtout lors de Devoxx, Joshua Bloch a choisi de surprendre son auditoire et de livrer une critique du langage dont la première version remonte à 1996.
Ainsi est-il revenu sur les aspects qui font son succès :
- Pas de gestion de la mémoire par les développeurs, c'est la VM qui s'en occupe.
- Types primitifs entièrement spécifiés : pas de mauvaise surprise en passant d'une plate-forme à l'autre comme il pourrait y en avoir en C.
- Ordre d'évaluation des expressions constant : de gauche à droite.
- liaison dynamique permettant de remplacer une librairie par une autre sans nécessairement recompiler, hormis pour les constantes, on y vient !
- Syntaxe proche du C. Par conséquent, facilement accessible pour nombre de développeurs.
- Typage fort des données permettant de détecter des erreurs à la compilation, de faciliter l'analyse de code, l'auto-complétion par les IDE, etc.
- Notion de Threads présente dès la conception du langage.
- Absence de macros et de surcharge d'opérateurs rendant les codes sources relativement similaires et compréhensibles par quiconque.
- Absence d'héritage multiple mais possibilité d'implémenter plusieurs interfaces.
- Déclarations, implémentation et documentation regroupées au même emplacement du code.
Puis Joshua Bloch est passé à une critique du langage en évoquant ce qui implicitement donne lieu à d'improbables Java Puzzlers, objets de certifications Java :
- Ajout par défaut de constructeurs.
- Conversion et cast automatique de certains types de données avec éventuelle perte de précision.
- Substitution des valeurs constantes à la compilation qui casse l'aspect liaison dynamique mentionné précédemment.
- Absence de types int et long non signés.
- 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 côtés en les moins bons.
Il apparait donc que Java s'est imposé à un moment où il fut moins complexe que C++ et plus puissant que C. Les points forts du langage résident dans le design même de ce langage alors que les points faibles restent cantonnés à des détails plutôt techniques.
Java évolue, comme avec l'introduction de StringBuilder par exemple, pour palier à certains choix initiaux critiquables. Reste à savoir quand sera prise la courageuse décision d'abandonner toutes les classes des premiers jours devenues obsolètes et dont le maintien alourdi le langage au fil du temps.
Commentaires