1. Compilateur Java
Au fait, vous entendrez plus d’une fois que l’atout indiscutable de Java par rapport aux autres langages — c’est sa multiplateforme. Qu’est-ce que c’est au juste et à quoi cela sert ? Commençons par le début.
Le fait est qu’un ordinateur ne sait exécuter que des instructions très simples.
Pour les chiens, il y a des ordres comme « Au pied », « Donne la patte », et en les entendant, le chien fait quelque chose d’important. Pour l’ordinateur, ces « ordres » sont des nombres : chaque instruction est encodée par un certain nombre (on parle de code machine).
Écrire un programme sous forme de nombres est très difficile, c’est pourquoi l’on a inventé les langages de programmation et les compilateurs. Un tel langage, d’un côté, est compréhensible par l’humain, et de l’autre — par le compilateur. Un compilateur est un programme spécial qui traduit le texte d’un programme, écrit dans un langage de programmation, en un ensemble de codes machine.
En général, un développeur écrit un programme dans un langage de programmation, puis lance le compilateur, qui, à partir des fichiers de code écrits par le développeur, produit un fichier unique en code machine — le programme final (compilé).
- Programme en langage C++
-
Compilateur
- Programme, composé de codes machine
Le programme obtenu peut être exécuté immédiatement sur l’ordinateur. L’inconvénient de cette approche est que le code du programme obtenu dépend fortement du processeur et du système d’exploitation. Un programme compilé pour Windows ne fonctionnera pas sur un téléphone Android.
Si vous avez écrit un programme pour Android, alors sur le système d’exploitation Windows il ne se lancera pas !
Mais Java adopte une approche bien plus innovante.
- Programme en langage Java
-
Compilateur Java
- Programme, composé de codes spéciaux (bytecode)
-
Java VM
- Programme, composé de codes machine
Le compilateur Java ne compile pas toutes les classes en un seul programme en codes machine. À la place, il compile chaque classe séparément, et non en code machine mais en un code intermédiaire spécial (bytecode). La compilation en code machine s’effectue au lancement du programme.
Mais qui compile donc le programme en code machine au moment de son lancement ?
Pour cela, il existe un programme spécial appelé JVM (Java Virtual Machine) — Machine virtuelle Java. On la lance d’abord, puis — le programme constitué de bytecode. Et c’est la JVM qui, avant d’exécuter le programme nécessaire, le compile en code machine.
Si vous avez un processeur puissant qui prend en charge un ensemble plus large d’instructions machine, alors lors de la « deuxième compilation », un code machine sera généré en tenant compte de votre processeur et de votre OS en particulier. C’est justement pour cela que Java est parfois plus rapide que C++, qui est compilé directement en code machine et ne peut utiliser que les instructions processeur les plus courantes.
2. Erreurs typiques lors de la compilation
La vitesse et l’optimisation du code ne sont pas encore essentielles pour nous, mais ce qui est important, c’est que le compilateur vérifie votre programme à la recherche d’erreurs. Il vérifie la correction du code et ne le laissera pas aller plus loin s’il trouve ne serait-ce qu’une petite erreur.
Exemple d’erreur :
Vous essayez d’assigner un nombre à une variable qui ne peut stocker que du texte.
String userName = 42; // Oups ! On ne peut pas faire ça.
Le compilateur signalera immédiatement que les types ne correspondent pas : Cannot implicitly convert type 'int' to 'string'.
Autre exemple — une faute de frappe dans l’appel à println :
System.out.printline("Salut !"); // Erreur dans le nom de la méthode
Le compilateur dira : « Il n’existe pas une telle méthode — vérifiez la syntaxe ! »
Comment lire les erreurs ?
La plupart des compilateurs indiquent où se situe l’erreur dans le code, et proposent même parfois des pistes de correction. N’ayez pas peur des erreurs : chacune d’elles est un pas vers l’illumination… et vers la victoire contre votre « boss » intérieur.
3. Commentaires
Imaginez : vous écrivez un programme complexe. Tout fonctionne, vous êtes un génie ! Mais un mois plus tard, vous rouvrez ce code et… vous ne comprenez plus rien. Deux lignes de code ici, une variable étrange là. Dans votre tête : « Ça, c’est sûrement n’importe qui qui l’a écrit, mais pas moi ! ». C’est là que les commentaires sauvent la mise.
Les commentaires — c’est comme des notes dans la marge d’un manuel ou des post-it sur le frigo (« Bière. Ne pas boire. Pour demain ! »). Le compilateur les ignore, mais les humains — au contraire. Les commentaires permettent d’expliquer le sens du code, de marquer des détails importants et même de « désactiver » des morceaux de programme sans les supprimer.
Important : aucun compilateur ne lit vos commentaires, ils sont totalement ignorés !
Commentaires sur une ligne
En Java, il y a deux types de commentaires — sur une ligne et multilignes. Les commentaires sur une ligne commencent par deux barres obliques // et vont jusqu’à la fin de ligne. Tout ce qui se trouve après // est considéré comme un commentaire et est totalement ignoré par le compilateur.
Exemple :
System.out.println("Bonjour, le monde !"); // Cela affiche un message de bienvenue à l'écran
Ici, // Cela affiche un message de bienvenue à l'écran — c’est le commentaire. Si dans le code l’utilité d’une ligne n’est pas évidente, écrivez-le ainsi !
Encore un exemple :
int x = 42; // Âge du développeur
On peut aussi écrire des commentaires sur une ligne sur des lignes séparées :
// Initialisation de la variable contenant le nom d’utilisateur
String userName = "Vasya";
Un peu comme des didascalies dans un scénario : le commentaire explique le pourquoi et le comment.
Commentaires multilignes
Et si vous avez accumulé beaucoup d’informations ? Une vraie histoire ? Pour cela, il existe les commentaires multilignes, qui commencent par /* et se terminent par */. Tout ce qui se trouve entre ces symboles est ignoré par le compilateur, même si cela couvre plusieurs lignes.
Exemple :
/*
Ici, nous affichons le nom de l’utilisateur à l’écran.
S’il est absent, nous écrirons "Invité".
*/
System.out.println("Entrez votre nom:");
Ou ainsi :
int age = 18; /* Valeur initiale de l’âge
pour un nouvel utilisateur */
Attention : on ne peut pas imbriquer des commentaires multilignes entre eux. N’essayez pas d’être plus malin que le compilateur — cela ne fonctionnera pas.
Illustration :
| Type | Syntaxe | Exemple |
|---|---|---|
| Sur une ligne | |
|
| Multiligne | |
|
4. Exemples de la vraie vie
« Désactiver » une ligne de code :
Il arrive que vous ne vouliez pas exécuter temporairement un fragment de code. Les commentaires tombent alors à point nommé :
// System.out.println("Texte temporairement inutile");
La ligne est restée, mais le compilateur ne la « voit » pas.
Marques TODO et FIXME
Les développeurs sont humains eux aussi, et il faut parfois se rappeler à soi-même que le code n’est pas terminé, ou qu’il y a un bug ici. Pour cela, on écrit souvent :
// TODO: ajouter une vérification de saisie vide
// FIXME: cette fonction calcule mal la somme
Beaucoup d’éditeurs et d’IDE mettent même ces mots en évidence !
Les développeurs plaisantent
// Je ne suis pas responsable de ce code. On m’a forcé à l’écrire contre ma volonté.
// Cher moi_du_futur ! S’il te plaît, pardonne-moi pour ce code.
// Si je vois encore ça, je devrai commencer à porter une arme au travail.
// Si jamais cette condition se réalise, merci de me prévenir au tél. xxx-xxx-xxx contre récompense.
// Cher développeur :
//
// Quand tu auras fini « d’optimiser » cette sous-routine
// et que tu comprendras à quel point c’était une grosse erreur de faire ça,
// merci d’augmenter le compteur ci-dessous comme avertissement
// pour le prochain :
//
// number_of_hours_spent_here = 42
// Quand j’ai commencé à écrire ça, seuls Dieu et moi comprenions ce que je faisais.
// Maintenant, il ne reste plus que Dieu
// Parfois, j’ai l’impression que le compilateur ignore tous mes commentaires
// Je dédie tout mon code, tout mon travail, à ma femme Darlene, qui
// devra subvenir à mes besoins, à ceux de nos trois enfants et du chien, quand
// ceci partira en production.
Oui, les commentaires peuvent être très drôles. Après tout, ils sont écrits par des personnes bien réelles.
GO TO FULL VERSION