Présentation
Introduction
Java existe maintenant depuis plus de vingt ans. Il a été créé en 1995 par la société Sun Microsystems. Cette société a été rachetée par Oracle en 2009. Java appartient donc maintenant à Oracle.
Qu’est-ce que Java ?
-
C’est tout d’abord un langage orienté objet. Le langage Java permet donc d’écrire des programmes.
-
C’est ensuite une plateforme de développement. Elle est composée d’un ensemble de librairies, d’un ensemble de spécifications (les JSR - Java Specification Requests) décrivant les différentes API constituant la plateforme et d’un ensemble d’outils pour compiler, exécuter, documenter... vos programmes. Le tout forme le JDK (Java SE Development Kit).
En réalité, il y a plusieurs plateformes.
La plateforme de base est nommée Java SE (Java Standard Edition) telle qu’indiqué précédemment. Elle répond à la plupart des besoins.
La seconde plateforme est la plateforme Java EE. Son objectif est de permettre la création d’applications distribuées et notamment d’applications web. Cette plateforme s’appuie sur la plateforme Java SE, mais aussi sur des logiciels tiers, les serveurs d’applications.
Depuis septembre 2017 et la version Java EE 8, la plateforme a été...
Historique
1. Pourquoi Java ?
Bill Joy, ingénieur chez Sun Microsystems, et son équipe de chercheurs travaillaient sur le projet "Green" qui consistait à développer des applications destinées à une large variété de périphériques et systèmes embarqués (notamment téléphones cellulaires et téléviseurs interactifs).
Convaincus par les avantages de la programmation orientée objet (POO), ils choisissaient de développer avec le langage C++ éprouvé pour ses performances.
Mais, par rapport à ce genre de projet, C++ a rapidement montré ses lacunes et ses limites. En effet, de nombreux problèmes d’incompatibilité se sont posés par rapport aux différentes architectures matérielles (processeurs, taille mémoire) et aux systèmes d’exploitation rencontrés, ainsi qu’au niveau de l’adaptation de l’interface graphique des applications et de l’interconnexion entre les différents appareils.
En raison des difficultés rencontrées avec C++, il était préférable de créer un nouveau langage autour d’une nouvelle plateforme de développement. Deux développeurs de chez Sun, James Gosling et Patrick Naughton se sont attelés à cette tâche.
La création de ce langage et de cette plateforme s’est inspirée des fonctionnalités intéressantes offertes par d’autres langages tels que C++, Eiffel, Smalltalk, Objective C, Cedar/ Mesa, Ada...
Les caractéristiques du langage Java
Sun caractérise Java par le fait qu’il est simple, orienté objet, distribué, interprété, robuste, sécurisé, indépendant des architectures, portable, performant, multitâche et dynamique.
Ces caractéristiques sont issues du livre blanc écrit en mai 1996 par James Gosling et Henry McGilton et disponible à l’adresse suivante : http://www.oracle.com/technetwork/java/langenv-140151.html
Nous allons détailler chacune de ces caractéristiques.
1. Simple
La syntaxe de Java est similaire à celle des langages C et C++, mais elle omet des caractéristiques sémantiques qui rendent C et C++ complexes, confus et non sécurisés :
-
En Java, il y a seulement trois types primitifs : les numériques (entiers et réels), le type caractère et le type booléen. Les numériques sont tous signés.
-
En Java, les tableaux et les chaînes de caractères sont des objets, ce qui en facilite la création et la manipulation.
-
En Java, le programmeur n’a pas à s’occuper de la gestion de la mémoire. Un système nommé le "ramasse-miettes" (garbage collector) s’occupe d’allouer la mémoire nécessaire lors de la création des objets et de la libérer lorsque les objets ne sont plus référencés dans le contexte courant du programme (quand aucune variable n’y fait référence).
-
En Java, pas de préprocesseur et pas de fichier d’en-tête. Les instructions define du C sont remplacées par des constantes en Java et les instructions typedef du C sont remplacées par des classes en Java.
-
En C et C++, on définit des structures et des unions pour représenter des types de données complexes. En Java, on crée des classes avec des variables d’instance pour représenter des types de données complexes.
-
En C++, une classe peut hériter de plusieurs autres classes, ce qui peut poser des problèmes d’ambiguïté. Afin d’éviter ces problèmes, Java n’autorise que l’héritage simple, mais apporte un mécanisme de simulation d’héritage multiple par l’implémentation d’une...
La plateforme Java SE
La plateforme Java SE (avec ses multiples aspects) peut se représenter de manière synthétique par le schéma suivant :
La plateforme installée sur le poste d’un développeur est le JDK (Java Development Kit). Il propose des API spécifiques, mais surtout des outils d’aide au développement comme le compilateur javac. Le JDK embarque le JRE (Java Runtime Environment).
La plateforme installée sur le poste cible (sur lequel doit s’exécuter le programme) est le JRE. Il propose l’API Java et des outils nécessaires dans l’environnement d’exécution comme l’outil java permettant de lancer l’exécution de programme Java. La JVM (Java Virtual Machine) fait partie intégrante du JRE. Elle permet l’exécution effective du programme Java passé en paramètre de l’outil java.
Les prochaines sections présentent plus en détail ces différents aspects de la plateforme.
1. La machine virtuelle Java (JVM)
La machine virtuelle est la base de la plateforme Java, elle est nécessaire pour l’exécution des programmes Java. La JVM est disponible pour de nombreux types d’ordinateurs et systèmes d’exploitation.
La machine virtuelle Java s’occupe :
-
du chargement des classes et du bytecode qu’elles contiennent : quand un programme invoque la création d’objets ou invoque des membres d’une classe, c’est la JVM qui s’occupe du chargement du bytecode qui doit être interprété.
-
de la gestion de la mémoire : la JVM s’occupe entièrement de la gestion des pointeurs et donc de chaque référence faite à un objet. Ce procédé permet également à la JVM de s’occuper de la libération automatique de la mémoire (ramasse-miettes) dès qu’un objet n’est plus référencé dans le programme, c’est-à-dire quand aucune variable n’y fait référence.
-
de la sécurité : c’est l’une des opérations les plus complexes effectuées par la JVM. Au chargement du programme, elle vérifie qu’il n’est pas fait appel à de la mémoire non initialisée, que des conversions...
Les différentes implémentations de la plateforme
Deux implémentations de la plateforme JAVA SE sont disponibles : Oracle JDK (ou Oracle Java SE) et OpenJDK. La différence réside dans la mise à disposition d’outils avancés et d’un support spécifique pour l’implémentation Oracle JDK en contrepartie d’un abonnement mensuel. Toutefois, il est possible de l’utiliser gratuitement selon les termes de la nouvelle licence nommée Oracle No-Fee Terms and Conditions (NFTC).
C’est un revirement de situation, car depuis la version 11, il n’était désormais possible d’utiliser gratuitement la plateforme Oracle JDK que dans un objectif de prototypage, de test et d’apprentissage. Pour toute utilisation professionnelle, il était nécessaire de souscrire à un abonnement mensuel.
Les fonctionnalités du langage sont quant à elles identiques entre les deux plateformes. L’implémentation Oracle JDK s’appuie sur l’implémentation OpenJDK.
L’environnement de développement
Cette section a pour objectif de décrire les principales étapes permettant de mettre en place un environnement de développement opérationnel composé des éléments suivants sur un OS Windows et Linux (Ubuntu 20.04) :
-
Le JDK (à choisir entre OpenJDK et Oracle JDK),
-
L’EDI Eclipse,
-
Le serveur de base de données MySQL.
1. Installation du JDK sur Windows
a. Installation de la plateforme OpenJDK
Pour installer la plateforme OpenJDK, réalisez les étapes suivantes :
Accédez à la page de téléchargement https://jdk.java.net/17.
L’écran suivant doit apparaître :
Téléchargez l’archive adaptée à votre OS (en l’occurrence Windows/x64). Notez l’absence d’installeur.
Décompressez l’archive dans le répertoire de votre choix et l’installation est terminée.
Lorsqu’une nouvelle version sera disponible, le téléchargement de la version souhaitée sera toujours possible à l’adresse suivante : https://jdk.java.net/archive
b. Installation de la plateforme Oracle JDK
Pour installer la plateforme Oracle JDK, réalisez les étapes suivantes :
Accédez à la page de téléchargement : https://www.oracle.com/java/technologies/downloads/#java17
L’écran suivant doit apparaître après s’être positionné sur l’onglet Windows :
La version 17.X.X actuelle est disponible au téléchargement. Au moment de l’écriture de l’ouvrage, la version est la 17.0.1.
Dans le cadre de Windows, vous pouvez sélectionner l’installeur de nom x64 Installer (jdk-17_windows-x64_bin.exe).
Exécutez l’installeur et passez les étapes suivantes :
Cliquez sur Next.
Modifiez éventuellement le répertoire d’installation. Par défaut, la valeur est C:\Program Files\Java\jdk-17.0.1\. Cliquez ensuite sur Next pour démarrer l’installation.
L’affichage de cet écran indique le succès de l’installation. Cliquez sur Close. Cette étape est terminée.
c. Configuration des variables d’environnement
Pour utiliser les outils...
La javadoc
La plateforme Java SE vient avec un contenu très populaire : la javadoc.
La javadoc est indispensable pour quiconque souhaite écrire un programme en Java. Elle met à disposition une documentation exhaustive de l’ensemble des classes, interfaces… constituant l’API Java. Cela permet au développeur de s’y retrouver.
Il est possible de consulter la javadoc depuis un navigateur ou depuis un EDI comme Eclipse.
1. Consultation depuis un navigateur
La javadoc est accessible à l’adresse suivante : https://docs.oracle.com/en/java/javase/17/docs/api
Il est possible de la télécharger à l’adresse suivante pour y accéder en local : https://www.oracle.com/java/technologies/javase-jdk17-doc-downloads.html
Acceptez les termes de la licence.
Téléchargez l’archive.
Décompressez-la ensuite dans le répertoire de votre choix.
Positionnez-vous dans le sous-répertoire /docs/api et double cliquez sur le fichier index.html.
La page d’accueil est la suivante :
Cette page liste l’ensemble des modules constituant la plateforme Java SE. Ces modules sont regroupés en deux catégories :
-
Les modules de la plateforme Java SE (constituant l’API Java). Le nom de ces modules commence obligatoirement par le mot java. Le contenu de ce livre s’appuiera sur une partie de cette API....
Le premier programme
Il est tentant de créer son premier programme en utilisant Eclipse ou un autre EDI de votre choix. Cependant, pour bien comprendre les mécanismes de création d’un programme, il est nécessaire de réaliser les différentes étapes manuellement avant de déléguer ce travail à un outil tiers.
1. Écriture du code
Un programme Java est un ensemble de fichiers texte d’extension .java. Le programme le plus petit contient un seul fichier Java.
Le nom d’un fichier Java correspond au nom de la classe Java qu’il contient.
Le fichier PremierProgramme.java contient donc la déclaration d’une classe nommée PremierProgramme. La structure de ce fichier est la suivante :
public class PremierProgramme
{
...
}
Attention, Java est sensible à la casse !
Un programme Java doit disposer d’une méthode particulière correspondant au point d’entrée du programme. Cette méthode s’appelle main et a obligatoirement la structure suivante :
public static void main(String[] args)
{
...
}
À l’intérieur de cette méthode, il est possible d’écrire le programme.
Le programme le plus classique consiste en l’affichage d’un message. L’instruction pour réaliser cette tâche est la suivante :
System.out.println("Bonjour tout le monde");
Le premier programme va donc avoir la structure globale suivante :
public class PremierProgramme
{
public static void main(String[] args)
{
System.out.println("Bonjour tout le monde");
}
}
2. Compilation et exécution du code
a. Théorie
Pour qu’un...
Conclusion
À l’issue de la lecture de ce chapitre, vous êtes prêt à aborder sereinement l’étude du langage Java et à créer vos premiers programmes.