Java, c’est quoi ?

Java, c’est 3 choses distinctes, qui semblent former un tout. Mais chacune des 3 parties peut être remplacée, avec plus ou moins de bonheur. Voyons les en détails.

Java est une machine virtuelle

La machine virtuelle Java (JVM) est un bijou de technologie. C’est un logiciel très complexe, qui fait des merveilles. S’il n’y avait qu’une seule chose à garder du monde Java, c’est bien la JVM.

L’un des grands avantages non technique de la JVM, est quelle a été portée sur de nombreux environnement, et qu’il est donc possible, même s’il faut faire attention aux détails, d’écrire du code une seul fois qui fonctionne partout.

Remplacer la JVM n’a pas grand sens, vu sa qualité, mais il existe des alternatives. Excelsior JET est un produit payant, qui compile le code Java pour donner un executable natif. Il est compatible Linux, Mac et Windows. IKVM.NET est une implémentation de Java pour Mono et le framework .NET.

Je n’ai jamais utilisé aucun des 2 produits nommés ci-dessus, et ne peux en aucun cas vous parler de leur qualité ou défaut. Je les signale juste pour bien montrer que les alternatives sont réelles.

Java est un langage

C’est l’aspect auquel tout le monde pense lorsqu’on parle de Java : le langage. Les 2 autres aspects sont souvent implicites. Dans ce domaine, il existe de nombreux autres langages qui peuvent être compilés pour donner des classes Java, qui fonctionnent ensuite sur la JVM.

La liste est longue, entre ceux qui existent depuis longtemps (Groovy, Jython, JRuby et Scala par exemple), et ceux qui ont été créés plus récemment (Closure, Kotlin). Voici un article en anglais de Dr.Dobb’s, datant de novembre 2012, qui en présente quelques-uns rapidement.

Personnellement, le seul que je connais vraiment, parce que je l’utilise quotidiennement depuis 2 ans, est Scala.

Une chose importante pour un tel langage, est la manière dont il s’intègre dans l’écosystème existant, donc s’il est possible de réutiliser les nombreuses librairies existantes écrites en Java.

Java est un ensemble de librairies

L’ensemble des fonctionnalités couvertes par les librairies Java, aussi bien celle venant avec la JVM, que toutes celles que l’on peut trouver sur le net, est immense. Il y a même souvent plusieurs choix possibles pour une fonctionnalité. Au niveau techniques, vous voulez un conteneur pour l’injection de dépendances ? Spring, Guice, ou PicoContainer. Les classes par défaut pour la gestion des dates et du temps ne vous plaisent pas ? [JodaTime] http://www.joda.org/joda-time/). Au niveau des fonctionnalités, nous ne sommes pas en reste. Que vous ayez besoin de serialiser en json ou yaml, de logguer (SLF4J et Logback), d’un ORM, ou de faire du calcul numérique. Cette toute petite liste est très loin d’être exhaustive.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>