Langage Java - SEQ1
Langage Java - SEQ1
Langage Java - SEQ1
Langage JAVA
Mama AMAR
Séquence 1 : Présentation du Langage
Introduction
Le langage Java est un langage généraliste de programmation synthétisant les principaux langages existants
lors de sa création en 1995 par Sun Microsystems. Il permet une programmation orientée-objet (à l’instar de
SmallTalk et, dans une moindre mesure, C++), modulaire (langage ADA) et reprend une syntaxe très proche de
celle du langage C. Outre son orientation objet, le langage Java a l’avantage d’être modulaire (on peut écrire
des portions de code génériques, c’est-à-dire utilisables par plusieurs applications), rigoureux (la plupart des
erreurs se produisent à la compilation et non à l’exécution) et portable (un même programme compilé peut
s’exécuter sur différents environnements).
La technologie Java est à la fois un langage de programmation et une plateforme.
Mama AMAR 1
Langage JAVA
Séquence 1 : Présentation du Langage
Puisque la machine virtuelle Java est disponible sur de nombreux systèmes d'exploitation différents, les mêmes fichiers
.class sont capables de fonctionner sur Microsoft Windows, le système d'exploitation Solaris ™ (SE Solaris), Linux ou
Mac OS. Certaines machines virtuelles, telles que Java SE HotSpot at a glance, effectuent des étapes supplémentaires
lors de l'exécution pour donner à votre programme une amélioration des performances. Cela inclut diverses tâches
telles que trouver les goulots d'étranglement et recompiler (en code natif) les sections de code fréquemment utilisées.
I. La Plateforme Java
Une plateforme est l'environnement matériel ou logiciel dans lequel un programme est exécuté. Nous avons déjà
mentionné certains des plateformes les plus populaires comme Microsoft Windows, Linux, Solaris et Mac OS. La
plupart des plateformes peuvent être décrits comme étant une combinaison du système d'exploitation et du matériel
sous-jacent. La plateforme Java diffère de la plupart des autres plateformes en ce qu'elle est une plateforme logicielle
seule qui fonctionne sur d'autres plateformes basées sur le matériel.
Le schéma suivant est issu du site web www.oracle.com et présente les différentes composantes de la plateforme Java.
Mama AMAR 2
Langage JAVA
Séquence 1 : Présentation du Langage
https://docs.oracle.com/javase/8/docs/index.html
La machine virtuelle est la base de la plateforme Java et est porté sur diverses plateformes basées sur le matériel. Elle
est nécessaire pour l’exécution des programmes java. 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 fait à un objet. Ce procédé permet également à la JVM de s’occuper de la libération automatique de
la mémoire (ramasse-miette) 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é : Au chargement, elle vérifie qu’il n’est pas fait appel à de la mémoire non initialisée, que des
conversions de types illégales ne sont pas effectuées, que le programme ne manipule pas des pointeurs en
mémoire. Dans le cas d’applets java, la JVM interdit au programme l’accès au réseau uniquement vers l’hôte qui
diffuse l’applet.
- de l’interfaçage avec du code natif (par exemple, code écrit en langage C) : la plupart des API de base de java
font appel à du code natif qui est fourni avec le JRE, afin d’interagir avec le système hôte.
Mama AMAR 3
Langage JAVA
Séquence 1 : Présentation du Langage
L’API java
L'API est une grande collection de composants logiciels, prêts à l'emploi, qui offrent de nombreuses fonctionnalités
utiles. Elles sont regroupées dans les bibliothèques de classes et interfaces connexes; ces bibliothèques sont connues
sous forme de paquets.
Comme un environnement indépendant de la plateforme, la plateforme Java peut être un peu plus lente que le code
natif. Cependant, les progrès dans le compilateur et les technologies de la machine virtuelle apportent une
performance proche de celle du code natif sans impacter la portabilité.
Les termes "Java Virtual Machine" et "JVM" signifie une machine virtuelle pour la plateforme Java.
Mama AMAR 4
Langage JAVA
Séquence 1 : Présentation du Langage
Simple : La syntaxe de Java est similaire à celle du langage C et C++, mais elle omet des caractéristiques sémantiques
de C et C++ qui rendent ces langages complexes et non sécurisés.
Orienté objet : En java tout est objet mis à part les types de données primitifs. En plus, il existe des classes
préfabriquées qi permettent d’encapsuler les types primitifs dans des objets.
Distribué : Java implémente les protocoles réseaux standard, ce qui permet de développer des applications
client/serveur en architecture distribuée, afin d’invoquer des traitements et/ou des manipulations de données sur des
machines distants.
Multitâche : Java permet de développer des applications mettant en œuvre l’exécution simultanées de plusieurs
threads (ou processus légers). Ceci permet d’effectuer plusieurs traitements à la fois, afin d’accroitre la rapidité des
applications, soit en partageant le temps CPU soit en partageant les traitements entre plusieurs processus.
Dynamique : En java, il est possible de modifier une ou plusieurs classes sans avoir à effectuer une mise à jour de ces
modifications sur l’ensemble du programme. La vérification de l’existence des classes se fait au moment de la
compilation et l’appel du code de ces classes ne se fait qu’au moment de l’exécution. Ce procédé permet d’avoir des
applications allégées en taille mémoire.
Architecture neutre : Le compilateur produit du bytecode (langage binaire intermédiaire) qui est indépendant de toute
architecture matérielle, de tout système d’exploitation et de tout dispositif de gestion de l’interface utilisateur
graphique (GUI).
Portable : Étant un langage interprété, java est portable sur différentes plateformes. De plus, les bibliothèques de
classes standard de java permet de déployé le code sur différentes plateformes sans adaptation.
Haute performance : Java met en œuvre un processus d’optimisation de l’interprétation du code appelé JIT (Just In
Time) ou HotSpot. Ce processus permet de compiler à la volée le bytecode java en code natif, ce qui permet
d’atteindre les mêmes performances qu’un programme en langage C ou C++.
Robuste : Java est un langage fortement typé et très strict. Le code est vérifié à la compilation et à l’exécution, ce qui
permet de réduire les bugs et les problèmes d’incompatibilités de versions.
Sécurisé : Le moteur d’exécution de java (JRE Java Runtime Environment) s’occupe de la sécurité des applications et
des systèmes
Mama AMAR 5
Langage JAVA
Séquence 1 : Présentation du Langage
Transforme en langage pour le Web ─ sous le nom de « Java » ─ grâce à sa portabilité (1994/95)
Nombreuses optimisations, modification du modèle des évènements pour AWT, ... ~400 classes prédéfinies
Ajouts : généricité (proche des templates de C++), types énumérés, web services, ... ~2500 classes prédéfinies
Mama AMAR 6
Langage JAVA
Séquence 1 : Présentation du Langage
Mama AMAR 7
Langage JAVA
Séquence 1 : Présentation du Langage
Les fichiers sources Java sont des fichiers texte sans mise en forme. Un éditeur de fichier simple supportant le format
texte ASCII, tel que bloc-notes sous Windows ou vi sous Unix permet ainsi d’écrire des fichiers sources java.
Toutefois, il existe des éditeurs open source comme Eclipse ou sous licence RAD d’IBM permettant d’écrire des
applications java complexes.
Dans ce cours nous allons utiliser Eclipse qui est un outil de développement Java (IDE) open source, gratuit et qui offre
beaucoup de fonctionnalités permettant de créer plus facilement des programmes java complexes.
En cas d’erreur lors du lancement de la commande, un message d’erreur est retourné par la commande.
Il est possible de compiler plusieurs fichiers sources en même temps en utilisant la commande javac suivi des noms
des fichiers à compiler avec l’extension .java en les séparant par un espace.
Le résultat de la compilation d’un fichier source java est la création d’un fichier binaire portant le même nom que le
fichier source mais avec l’extension .class.
Un fichier binaire .class contient le pseudo-code java qui peut être interprété par la machine virtuelle java.
Par défaut les fichiers compilés sont créés dans le même répertoire que les fichiers sources. Il est possible d’indiquer le
répertoire de création des fichiers binaires à l’outil javac avec l’option -d « directory ».
Pour lancer l’exécution d’une application java, il faut utiliser l’outil java fourni avec le JDK.
Mama AMAR 8
Langage JAVA
Séquence 1 : Présentation du Langage
Placez-vous dans le répertoire qui contient le ou les fichiers binaires (.class) de votre application.
Exécuter le ou les fichiers binaires avec la commande suivante :
java <fichierMain> <argument1> <argument2>
java : outil en ligne de commande qui lance l’exécution de la machine virtuelle java.
<fichierMain> : est le nom du fichier binaire (.class) qui contient le point d’entrée de l’application, la méthode
main().
Note : ne pas mettre l’extension .class après le nom du fichier dans la commande car ceci est fait implicitement par
la machine virtuelle java.
En cas d’erreur lors du lancement de la commande, un message d’erreur est retourné par la commande.
Les raisons qui peuvent causer une erreur sont entre autres :
Le nom du fichier à exécuter ne porte pas le même nom que la classe (différence entre majuscules et
minuscules).
L’extension .class est ajoutée après le nom du fichier dans la commande
Le fichier à exécuter ne contient pas de méthode main()
Le fichier binaire (.class) n’est pas dans le répertoire ou la commande est lancée.
Démarrez votre éditeur. Vous pouvez lancer l'éditeur de bloc-notes à partir du menu Démarrer en sélectionnant
Programmes> Accessoires> Bloc-notes. Dans un nouveau document, tapez le code suivant:
/**
* La classe BonjourMondeApp est une application java
* qui affcihe simplement "Bonjour le monde !" dans la sortie standard.
*/
class BonjourMondeApp {
public static void main(String[] args) {
System.out.println("Bonjour le monde !"); // Affiche le texte.
}
}
Enregistrez le code dans un fichier avec le nom BonjourMondeApp.java. Pour ce faire dans le Bloc-notes, choisissez
d'abord l'élément de menu Fichier> Enregistrer sous. Puis, dans la boîte de dialogue Enregistrer sous, sélectionner le
répertoire C:\uvs\apps. Dans la zone de liste déroulante Encoding, laissez l'encodage comme ANSI.
Mama AMAR 9
Langage JAVA
Séquence 1 : Présentation du Langage
Lancer la fenêtre d’invite de commandes. Vous pouvez le faire à partir du menu Démarrer en choisissant Accessoire >
Tous les programmes> Invite de commandes. La fenêtre doit ressembler à la figure suivante.
Placer vous dans le répertoire « C:\uvs\apps » ou se trouve le fichier source « BonjourMondeApp.java » avec la
commande : cd C:\uvs\apps.
Mama AMAR 10
Langage JAVA
Séquence 1 : Présentation du Langage
Maintenant, vous êtes prêt à compiler. À l'invite de commandes, tapez la commande suivante et appuyez sur Entrée :
javac BonjourMondeApp.java.
Mama AMAR 11
Langage JAVA
Séquence 1 : Présentation du Langage
C:\uvs\dev>java BonjourMondeApp
Bonjour le monde!
C:\uvs\apps>
Mama AMAR 12