9 avril 2020 David Raluy

Le Java, késako?

Qu’est-ce que le Java ? Vous avez certainement entendu parler de nombreux termes utilisés dans l’écosystème Java, comme « JVM », « JRE », ou encore « Serveur Tomcat ». S’imposant comme la technologie la plus utilisée au monde, nous allons voir ce que permet cette technologie, et quelles sont les forces qui ont permis son adoption. Bonne lecture !

Le Java c’est quoi?

C’est avant tout un langage de programmation dit de « haut niveau » développé par Sun Microsystems en 1995. Tout le code source est écrit dans des fichiers comportant l’extension .java. Ce code source est ensuite compilé par le compilateur java, nommé « javac », dans des fichiers d’extension .class. Ces fichiers ne comportent pas de code exécutable, mais du « bytecode », qui est le langage exécutable par la « machine virtuelle java », aussi appelée JVM.

Le programme « java » va ensuite exécuter ces fichiers .class à l’aide de la JVM.

diagramme compilation java

Java c’est donc à la fois le nom d’un langage de programmation, et d’un programme pour exécuter le code écrit en java.

Pourquoi c’est si compliqué?

Cette organisation en strates comporte un avantage majeur par rapport a d’autres langages: comme la JVM est disponible sur la majorité des systèmes d’exploitation, elle pourra exécuter les .class sans aucune modification, que ce soit sous Windows, Linux, ou MacOs. La JVM va également pouvoir apporter des optimisations de performance en fonction de la machine sur laquelle le programme est exécuté. Enfin, La JVM va automatiquement libérer la mémoire utilisée lorsqu’elle le peut au travers du Garbage Collector, afin d’éviter les fuites mémoires.

Une fois compilé, un programme java est donc utilisable sur une majorité des systèmes d’exploitation.

La JVM est généralement installée sur un ordinateur au travers du Java Runtime Environment (JRE), qui comporte la JVM et des librairies permettant d’exécuter n’importe quel programme Java.  Elle peut également être installée au travers du Java Development Kit, qui comporte en plus des librairies permettant de créer des programmes java, comme le compilateur « javac ». Il en existe deux principaux: celui maintenu par Oracle (Oracle JDK), et l’implémentation libre, OpenJDK.

JVM, JRE et JDK

La plateforme java

Mais le java ce n’est pas que cela, c’est également un ecosystème de logiciels qui gravitent autour, avec en premier lieu la plateforme java. C’est le duo composé par la JVM et l’API Java (voir notre article « Une API késako?« ). L’API Java est un ensemble de librairies logicielles proposant un large choix de fonctionnalités, regroupées en packages. Elle permet par exemple l’accès aux bases de données, la gestion de la sécurité, la création d’interfaces graphiques, ou encore les appels réseau.

Elle comporte également des outils pour débugger, monitorer et documenter une application.

L’écosystème Java

Comme pour toute technologie, il existe un ensemble de programmes qui sont particulièrement complémentaires avec un programme écrit en Java.

  • Les serveurs web: pour afficher une page web, ou présenter une API Rest. On peut citer Tomcat, ou encore des serveurs embarquant les librairies du standard JEE, comme Wildfly, ou Glassfish.
  • Des environnements de développement, ou IDE, permettant de coder le java, comme IntelliJ ou Eclipse.
  • Des frameworks, facilitant l’écriture de programmes java, comme Struts, ou Spring, des gestionnaires de dépendances (Maven), des outils d’intégration continue (Jenkins)…

L’ensemble de ces outils permet de développer, tester puis déployer les programmes écrits en java. Leur maturité et stabilité sont en général très bonnes, tout comme le langage, puisque existant depuis des années.

Le langage en lui-même a également de nombreux avantages, comme sa simplicité et une certaine robustesse, le rendant adapté à des développeurs inexpérimentés comme expérimentés.

Tout cela contribue à faire de Java la technologie la plus utilisée au monde.

Une technologie parfaite alors?

Il existe de nombreuses critiques de cette technologie. En effet, de nombreuses fonctionnalités ont du être implémentées dans le langage après sa création (comme la généricité), tout en essayant de rester compatible avec les versions antérieures. Cela s’est fait de manière plus ou moins heureuse, et certaines parties de l’API Java ont été dépréciées suite à cela, car remplacées par de nouvelles versions. On peut penser à la gestion des dates ou du multithreading, par exemple.

A cela s’ajoutent d’autres critiques comme la verbosité du langage, la mémoire utilisée, ou la gestion de la sécurité par la plateforme. Et il est vrai que de par ses ambitions (comme être à la fois exempte de fuites mémoire et multiplateforme), le développement de Java ne s’est  pas fait sans heurts. Cela explique peut-être pourquoi seulement 53% des développeurs disent aimer le langage.

Il est néanmoins possible de mitiger les problèmes liés au langage: en effet, de nombreux langages peuvent utiliser la JVM pour s’exécuter, et non pas uniquement java, comme Scala, Kotlin, ou Clojure. Leur conception étant plus moderne, la syntaxe du langage est en général plus élégante et peut permettre de contourner les désavantages du java tout en continuant à utiliser l’écosystème d’outils et de librairies qui s’appuient sur la JVM.

Egalement, il existe une multitude d’implémentations de la JVM, se spécialisant dans certaines architectures matérielles, ou respectant certaines contraintes de mémoire ou de performance; on peut citer Dalvik, qui permet d’exécuter des programmes java sur les téléphones Android. Là encore, on peut essayer de trouver la JVM s’adaptant au mieux aux contraintes de notre environnement de production.

Encore de beaux jours

Même si l’on considère le langage comme vieillissant, il a permis la mise en place de nombreux outils sur une plateforme qui peut s’adapter à de nombreux besoins, sur un grand nombre d’architectures matérielles. De part cette souplesse, l’écosystème connait toujours un développement actif, et garde une grande attractivité pour le démarrage de nouveaux projets. Les nouveaux langages s’appuyant sur la JVM, comme Kotlin, sont réputés chez les développeurs, et peuvent booster l’attractivité des projets sur lesquels ils sont employés.

 

Tagged: