• # Langage, lib et JVM

    Posté par . En réponse à la dépêche Naissance d'un géant : Java. Évalué à 9.

    Pour moi, Java (le langage) est une version industrielle du C++

    • java possède une spécification complète: tout est spécifié de la taille des types à la stratégie de chargement des modules, en passant par la gestion de la mémoire (initialisations) et les considérations sur l'éxécution concurrente.

    • java possède un meilleur rapport compléxité/puissance: l'ensemble des fonctionnalités fournies par le langage a été soigneusement sélectionné. La grammaire est cohérente. Pas étonnant dès lors qu'on ait des outils d'analyse statique et des IDEs un cran au dessus de ce dont dispose en C++ (firebug est un bon exemple de ce qu'on peut obtenir quand on a un langage analysable et complètement spécifié)

    C'est un langage robuste, cohérent, utilisable par des personnes de niveaux plus ou moins hétérogènes: un langage taillé pour les entreprises, suffisamment proche du C++ pout séduire la population des dév déjà présente à l'époque, sans toutes les incohérences et les manques qui caractérisent ce dernier.

    Java (le langage) est ce qu'aurait dû être le C++

    Ceci dit, en ce qui concerne java, son succès me semble essentiellement dû à deux autres facteurs:

    • l'existence ( C++ [:haha]), la richesse, et la haute qualité de sa bibliothèque standard. Je ne parle même pas de la documentation qui je le rappelle comprend les références (javadoc), les tutoriels, et les documents expliquant comment tel composant est censé être utilisé etc..

    • la JVM. Comme le langage, elle est spécifiée (modèle mémoire, execution concurrente etc..), elle est particulièrement performante vues les fonctionnalité qui doivent être supportées (là-bas au fond, arrêtez de râler sur le GC!). Elle a été faite avec Java en ligne de mire mais elle est en réalité indépendante du langage - seul le byte code compte. Depuis quelques temps, on voit d'ailleurs apparaître pas mal de petits nouveaux (scala, clojure, groovy etc..) A votre avis, pourquoi les concepteurs choisissent la JVM pour les implémenter? On rajoutera à cela que via la JVM, ces langages peuvent intéragir avec du code java, récupérant d'un coup l'accès à toutes les fonctionnalités offertes par la lib standard!

    Bref, Java a été un grand pas en avant du point de vue informatique industrielle (pour des petits/moyens projets avec des devs compétent, c'est moins remarquable), mais ce qui restera sera probablement c'est la JVM et la lib standard