Développer en Java, c'est un peu comme raconter une histoire à ses enfants dans leurs mots à eux : on pose le décor, et chacun des objets présents prend vie. Ainsi, les enfants qui écoutent l'histoire arriveront à avoir une bonne représentation et une bonne interprétation de ce qui s'y passe. On parle donc d'objets, d'interprétation, de traduction, de comportement, mais concrètement, le Java qu'est-ce donc ?
C'est ce que je vous propose de découvrir dans ce petit article !
Un langage haut niveau
Java est un langage de programmation de haut niveau. D'un point de vue formel, cela signifie qu'il est constitué d'une syntaxe concrète et d'une sémantique formelle. Le fait qu'il soit de "haut" niveau signifie qu'il a pour objectif d'être facilement utilisé par un être humain. Plus simplement dit, un code Java est un texte qu'un humain peut lire et écrire "facilement", avec des règles précises, et dont les mots ont une signification unique qui ne laisse pas de place à l'incertitude. Ce texte peut alors être fourni à un ordinateur pour être exécuté.
Un langage "traduit et interprété"
Une fois le code rédigé, plusieurs approches sont possibles pour permettre à la machine de l'exécuter, mais je vais vous présenter uniquement le cas du langage Java. Java fournit une JVM (Java Virtual Machine). Le code implémenté ne sera pas exécuté directement par la machine cible, mais par la JVM. La JVM est simplement un programme qui est exécuté par la machine physique et qui a pour vocation d'exécuter le code Java. Pourquoi appelle-t-on cela une "machine virtuelle" ? Tout simplement car ce programme simule le comportement d'une machine. C'est donc une sorte de simulateur (notez bien que "virtuelle" signifie simplement pour de faux, pas réel). Le code Java est donc exécuté par cette machine.
Java fournit également un compilateur. Le compilateur est l'outil qui va permettre de traduire le code Java (compréhensible par l'humain) vers du bytecode Java, qui est un code compréhensible par la JVM uniquement. La JVM peut ensuite interpréter ce bytecode (encore une fois, ce n'est pas la machine physique qui exécute le bytecode. La machine physique exécute la JVM qui interprète le bytecode). C'est en cela que Java est un langage traduit (via le compilateur) vers du bytecode Java et interprété par la JVM.
Un langage "objet" traduit et interprété
Java est également un langage "objet" : on s'attache à planter le décor, et à définir le rôle et le comportement de chacun des objets du décor. Le but n'étant pas de définir toutes les propriétés d'un objet (ce serait impossible), mais bien de définir l'objet en fonction de ce qu'il représente pour notre besoin. Si je raconte l'histoire de Sherlock Holmes, nul besoin de définir la longueur exacte de ses cheveux. J'ai simplement besoin de savoir qu'il s'agit d'un détective consultant très doué, dont le rôle est de résoudre des enquêtes.
L'élément qui va nous permettre de définir l'objet s'appelle une classe. C'est dans cette classe qu'on va pouvoir donner les caractéristiques de l'objet : une voiture pourrait par exemple être définie par une marque, une couleur, un nom. On va également pouvoir définir son comportement : rouler, freiner, tourner, etc. On peut ensuite instancier cette classe (donc créer un objet dans notre décor) : à partir de cette classe, je peux créer une voiture de la marque "supercar", bleue et je l'appelle "Flash".
Mais alors pourquoi partir sur du java ?
Java s'exécute sur une machine virtuelle. Cela signifie que le code produit est portable sur toutes les machines physiques capables d'exécuter la machine virtuelle. On n'a donc pas besoin de se soucier de la machine cible de notre programme.
Puisque Java s'exécute sur une machine virtuelle, les risques de faire des choses dangereuses pour la machine physique sont considérablement réduits !
Java est un langage de haut niveau. Le développeur n'a en général pas besoin de se poser de questions sur la mémoire, les adresses, etc. Il a pour but d'être intuitif, donc accessible au plus grand nombre, donc facilement maintenable.
Java est très... très utilisé ! Les tutos existent à foison. Il existe aussi de nombreux frameworks en Java, et la communauté est très réactive et très présente. Bref, en utilisant Java, on nage en eaux sûres.