Introduction à la plate-forme Java
Introduction
Au cœur des ordinateurs, des listes d’instructions sont exécutées par les microprocesseurs. Ces listes contiennent des codes binaires représentant des calculs et des actions à faire sur des registres, de la mémoire ou encore sur des périphériques. Lorsqu’un développeur écrit un programme, il ne construit pas directement cette liste. Heureusement il passe par un langage de programmation avec lequel il va décrire un enchaînement d’actions de "haut niveau". Par exemple, si le programme a besoin d’ouvrir le fichier config.txt alors le développeur utilisera la fonction fopen("config.txt") de son langage favori pour le faire. Derrière cette ligne se cachera toute une liste d’instructions "machine" que le microprocesseur exécutera quand l’application fonctionnera. Les langages simplifient donc grandement l’écriture mais, au final, ce sont toujours des instructions machine qui sont déroulées.
Le programme "source" - dans notre exemple celui qui contient fopen("config.txt") - est un fichier texte que le développeur édite avec un éditeur de texte basique comme Notepad ou plus évolué comme Notepad++ ou encore l’éditeur intégré à son environnement de développement (IDE) présenté...
Environnement d’exécution
Les applications écrites en Java ne communiquent jamais directement avec le système d’exploitation. D’ailleurs, le résultat d’une compilation Java (fichiers d’extension .class) n’est pas directement exécutable par le système d’exploitation. Cette première mouture, appelée Byte Code, contient des instructions pour la machine virtuelle Java qui va "convertir à la volée" le code intermédiaire en instructions compatibles avec l’environnement réel d’exécution. On parle de Just In Time Compiler(ou JIT Compiler).
Chaque environnement réel d’exécution (Windows, Linux, macOS...) a sa propre machine virtuelle Java mais le Byte Code généré après la compilation du programme source est le même et est relativement portable entre les différentes machines virtuelles Java. L’adverbe "relativement" est ajouté ici pour préciser que la conception d’un programme "portable" requiert quelques précautions. Imaginons que vous souhaitiez réaliser un programme qui devra être fonctionnel à la fois sur PC, tablette et téléphone. Il est évident que les caractéristiques de ces trois dispositifs diffèrent totalement et il faudra donc que le programme s’adapte...
Une librairie très complète
La plate-forme Java propose une très large collection de classes sur lesquelles s’appuient les applications. On parle d’API Java. Ces classes simplifient considérablement la gestion d’objets courants (chaînes de caractères, valeurs décimales, collections, etc.) mais aussi la gestion de fichiers, des interfaces graphiques classiques, les API web, l’accès aux bases de données, les communications réseau, la sécurité, les diagnostics, etc. La liste des classes est très conséquente et même si elles sont proposées de façon hiérarchique, le problème est souvent de savoir s’y repérer !
Ces classes sont, la plupart du temps, extensibles. Cela veut dire qu’il est possible de les étendre pour profiter de leurs comportements de base puis d’y ajouter des spécificités métier.
Pour organiser ces classes, la plate-forme utilise le concept des packages qui regroupe les classes par finalités (services de même nature). Par exemple, le package java.io contient une "boîte à outils" pour gérer les fichiers.
Il est naturellement possible de créer ses propres packages. Le package Java correspond au package de l’UML. Le découpage effectué veille à réduire les dépendances...
Des outils de développement performants
La plate-forme Java propose un compilateur (javac.exe) que l’on peut utiliser directement en ligne de commandes après avoir saisi le code du programme dans un éditeur de texte. La procédure est tout à fait possible mais pas très productive... Évidemment, le développeur recherche l’utilisation d’un environnement de développement totalement intégré l’assistant pendant la rédaction du code, la réalisation de l’interface graphique, la mise au point et le déploiement de son application. Ce programme est un IDE (Integrated Development Environment). Il intègre au moins un éditeur de code source, des outils automatisant les compilations et un débogueur.
Il existe plusieurs IDE pour Java avec parmi eux trois grandes références : IntelliJ IDEA de JetBrains, Eclipse de la fondation Eclipse et NetBeans créé à l’initiative de Sun Microsystems et actuellement maintenu et distribué par Oracle. Les démonstrations et exercices de ce livre sont basés sur l’utilisation d’IntelliJ IDEA car c’est l’IDE qui nous a semblé le plus simple pour commencer à développer.
Téléchargement et installation d’IntelliJ IDEA
Entrez dans la barre d’adresse de votre navigateur Internet : https://www.jetbrains.com/idea/download/#section=windows
L’écran suivant s’affiche.
L’IDE est proposé en deux versions. Nous allons utiliser la version "Community", qui sera suffisante pour nos expérimentations. Cliquez donc sur le bouton Download de Community.
Le téléchargement commence…
Une fois le téléchargement terminé, double cliquez sur le fichier reçu.
Autorisez l’application à apporter des modifications.
Cliquez sur le bouton Next et conservez les valeurs par défaut proposées dans les écrans suivants.
Il est possible qu’à l’issue de l’installation, il vous soit demandé de redémarrer votre ordinateur.
Sinon, l’installation se termine comme ceci :
L’incontournable Hello World
Même si l’apprentissage d’IntelliJ IDEA se fera en même temps que celui de la programmation orientée objet avec Java, ne résistons pas plus longtemps à la rédaction de notre premier programme à savoir, le très classique Hello World !
Exécutez IntelliJ IDEA depuis le menu Démarrer - JetBrains - IntelliJ IDEA Community Edition.
Sélectionnez le thème (couleurs de l’application) que vous souhaitez.
L’écran suivant permet de sélectionner les plug-ins par défaut. Les plug-ins sont des composants actifs que l’on peut installer dans l’IDE. IntelliJ IDEA est un peu comme votre caisse à outils dans laquelle vous mettez les outils (plug-ins) dont vous avez besoin le plus souvent. Il est inutile d’embarrasser cette caisse d’un rabot à bois si vous passez l’essentiel de votre temps à faire de la mécanique. Ici, c’est un peu pareil et nous allons juste modifier la distribution par défaut en validant Swing pour nos futures expériences graphiques.
Gardez les options par défaut de l’écran suivant :
Cliquez sur Start using IntelliJ IDEA.
Une fois l’écran d’accueil d’IntelliJ IDEA chargé, cliquez sur l’option Create New Project.
Cette action exécute l’assistant de création d’applications, qui va vérifier si tous les outils nécessaires sont présents et qui va préparer l’ossature de notre future application.
Le JDK 11 a été téléchargé et est sélectionné. Il est possible d’utiliser une autre version...
Un point sur les acronymes
Faisons un petit point sur les acronymes les plus souvent utilisés dans le monde Java.
Nous avons utilisé le JDK 11. JDK signifie Java Development Kit et c’est un SDK (Software Development Kit) spécial Java contenant des outils comme le compilateur, le débogueur et également le JRE.
Nous avons utilisé, sans encore le savoir, ce JRE, qui est l’acronyme de Java Runtime Environment. Le JRE nous a permis d’afficher ce triomphal "Hello World" ! Dans notre cas, le JRE a été amené par le JDK, mais il peut être téléchargé et installé seul.
Java est un puissant langage de développement permettant de créer des applications pour différents types de plateformes d’exécution : les petites machines sans énormément de puissance, les machines de bureau et enfin les machines serveur musclées. À chacun de ces types correspond une spécification de ce que doit proposer la plateforme Java. Ces spécifications sont, respectivement, JME (Java Micro Edition), JSE (Java Standard Edition) et JEE (Java Enterprise Edition). Nous utilisons en développement les implémentations de ces spécifications par les éditeurs comme Oracle. Par exemple, le JDK 11 que nous avons utilisé correspond à l’implémentation des spécifications...