INTRODUCTION A JAVA

Transcription

INTRODUCTION A JAVA
S. Laporte
Java intro
Lycée Louise Michel BTS IG DA
INTRODUCTION A JAVA
JAVA est un langage orienté-objet pur.
Il ressemble beaucoup à C++ au niveau de la syntaxe.
En revanche, ces deux langages sont très différents dans leur structure (organisation du code et
gestion des variables).
L’avantage principal de Java par rapport aux autres langages c’est sa PORTABILITE, le fait
qu’un programme Java puisse théoriquement être exécuté sur n’importe quelle plate-forme (type
de processeur et système d’exploitation)
Pour comprendre cette caractéristique, nous devons faire quelques rappels.
Rappels sur l’interprétation et la compilation
Quelque soit le langage utilisé pour écrire un programme, ce dernier devra toujours être traduit
en langage machine pour pouvoir être exécuté par le processeur. En effet, un ordinateur ne
connaît qu’une seule langue : celle de son processeur. Les langages de programmation ne sont
pas écrits dans un langage directement exécutable par le processeur : pour exécuter un
programme, il faut toujours que le code soit préalablement traduit en langage machine.
Le moment où la traduction s’effectue diffère selon les langages.
Traditionnellement on distingue deux grands types de langages :
- les langages compilés tels que C/C++ , Pascal…
- les langages interprétés tels que Basic
Dans les langages compilés, il est nécessaire de traduire tout le code préalablement à
l'exécution, pendant une étape appelée compilation pour pouvoir ensuite exécuter le programme.
Un fichier du programme traduit en langage machine est généré (souvent, un .exe), et c’est ce
fichier qui sert de base à l’exécution.
Code
compilateur
Fichier en
langage
machine
Exécutable
Compilation
Exécution
Dans les langages interprétés au contraire, l’exécution se base sur le fichier du code,
mais chaque ligne du fichier est traduite en langage machine juste avant d’être exécutée.
C’est l’interprétation.
Code
intepréteur
Interprétation
1/7
S. Laporte
Java intro
Lycée Louise Michel BTS IG DA
Programmes compilés
Avantages
- rapides à l’exécution
- code source inutile pour l’exécution (on peut vendre un programme compilé sans donner le
code : on ne risque pas (ou moins) de se faire copier)
Inconvénient
un programme est compilé dans un langage machine donné : il ne va fonctionner que sur les
ordinateurs dont le processeur connaît ce langage machine. Ex : un programme compilé pour
Mac ne marchera pas sur PC. On dit qu’un programme compilé n’est pas portable.
-
Programmes interprétés
Avantage
- un programme interprété peut être exécuté sur n’importe quelle machine qui possède un
interpréteur du langage, quelque soit le type de langage machine (puisque c’est l’interpréteur qui
traduit dans le langage de la machine)
Inconvénients
- lents car chaque instruction doit d’abord être traduite par l’interpréteur avant d’être exécutée.
- l'exécution est basée sur le code source donc celui-ci doit être fourni au client qui peut s’en
servir à mauvais escient
Et Java dans tout ça ?
Java est un langage hybride, à la fois compilé et interprêté. On dit qu’il est semi-compilé.
Pour simplifier, disons qu’un programme Java est compilé dans un langage qui devra ensuite
être interprété. Le résultat de la compilation n’est pas du langage machine directement
exécutable (propre au processeur), mais un code intermédiaire appelé byte-code. Le byte-code
est intermédiaire entre le code source et le langage machine.
Pour exécuter le programme, le byte-code est interprété par un interpréteur appelé
machine virtuelle Java (MVJ). Toutes les machines actuelles possèdent une MVJ. Ainsi, le
byte-code d’un programme peut être exécuté sur n’importe quel ordinateur (possédant une MVJ)
alors qu’un programme compilé en langage machine n’est exécutable que sur un seul type de
processeur. C’est pour cela que le langage Java est un langage portable.
En outre, le langage Java a été conçu pour être utilisable avec Internet. Il existe deux
types de programmes java pour internet :
- les applets, petit programme incorporé aux pages web et exécuté localement par le
navigateur du client (les applets se rapprochent des scripts Javascript)
- les servlets, qui sont des programmes Java s'exécutant côté serveur et qui permettent
de répondre à des requêtes http envoyées par un navigateur client.
Cycle de vie d’un programme Java
- Pour écrire le code source d’un programme Java, n’importe quel éditeur de texte convient,
pourvu que le texte ne soit pas formaté. Le Bloc Note est bien adapté car il est chargé très
rapidement et ne permet pas le formatage du texte.
- Le fichier source doit être enregistré avec l’extension .java (au lieu de .cpp en C++) et porter le
même nom que la classe (ou la classe qui contient la fonction principale main s’il y en a
plusieurs)
- Le compilateur s’appelle javac. Pour compiler un programme java, on utilise une fenêtre DOS
(ou du langage de commande de NT) et on tape la commande :
javac NomDuProg.java
2/7
S. Laporte
Java intro
Lycée Louise Michel BTS IG DA
- La compilation génère des fichiers de byte-code avec l’extension .class, dans le même
répertoire que le fichier source. Chaque classe du fichier donne lieu à la création d’un fichier
.class
Ensuite, l’exécution diffère selon que le programme écrit est une application, une applet ou une
servlet
- une application Java est un programme indépendant du Web, exécuté en local (comme
tous les programmes C++ que l’on a écrit ), lancé localement sur la machine
- une applet Java est un programme destiné à être inséré dans une page Web. Une applet
est exécutée par le client (comme les programmes). C’est le fichier compilé en byte code qui est
envoyé au client (et non le fichier source comme dans le cas de javascript). Dans une page Web,
une applet est considérée comme une image
- une servlet Java est un programme exécuté sur le serveur, qui permet de répondre à une
requête d'un client http. Une servlet reçoit une requête http avec des données (paramètres), elle
traite ses données (souvent accès à une BD) et la plupart du temps elle renvoie une réponse
sous la forme d'une page web dynamique.
Exécution d’une application
Pour exécuter une application Java (un programme indépendant du Web), on peut utiliser la
MVJ qui s’appelle java, avec la commande :
java NomDuProg
Eventuellement, le nom du programme peut être suivi de paramètres (chaînes) à passer au
programme
Editeur de
texte :
Bloc-Note
Ecriture du code
source
*.java
Compilateur
en ligne de
commande:
javac
Compilation
*.class
Interprétation et
exécution
Machine
virtuelle java
Exécution d’une applet
Pour exécuter une applet, il faut évidemment qu’elle soit intégrée dans une page Web..
L’exécution de l’ applet se fait automatiquement après chargement de la page Web.
Ce qui est intégré dans la page, c’est le nom fichier semi-compilé(.class). Au moment du
chargement de la page, le fichier semi-compilé est envoyé au client, et c’est la MJV du
3/7
S. Laporte
Java intro
Lycée Louise Michel BTS IG DA
navigateur qui exécute le byte code. L’applet est donc exécutée par le client et non par
le serveur (contrairement aux programmes en ASP ou PHP).
Pour intégrer un applet dans une page Web , il faut l’avoir préalablement semi-compilé.
Dans la section BODY, à l’endroit où l’on veut insérer l’applet, on intègre le .class avec
les balises suivantes :
<APPLET CODE = « NomDuProg.class » WIDTH = largeur HEIGHT = hauteur>
</APPLET>
Excécution d'une servlet
C'est le serveur web, recevant une requête http, qui va lancer automatiquement la
servlet chargée de traiter la requête http. On peut dire que c'est l'internaute qui lance la
servlet.
Structure d’un programme Java
Un programme Java est constitué d'un ensemble de classes. Aucune partie de
code ne peut être écrite en dehors d’une classe. Cela vient du fait que, contrairement au
C++, Java est un PUR langage orienté-objet. Même la fonction main( ), point d’entrée
des applications Java est incluse dans une classe.
Le fichier .java doit obligatoirement porter le nom de la classe (ou si il en a plusieurs,
le nom de celle qui est publique).
Une application Java (programme non inclus dans un page Web) doit toujours posséder
une classe contenant une méthode appelée main . Cette fonction est celle qui est
exécutée en premier et qui appelle toutes les autres (c’est le programme principal en
quelque sorte). Plus précisément elle commence ainsi :
public static void main (String args[ ])
tableau de chaînes qu'on peut passer en
paramètre du programme principale dans la
commande d'exécution.
Exemple d’une application Java
Cette application se contente d’afficher Bonjour à l’écran
public class Bonjour
//le fichier doit s’appeler Bonjour.java
{
public static void main (String args[ ]) //fonction principale
{
System.out.println(“Bonjour”);
}
}
Une applet quand à elle doit contenir une fonction appelée paint, chargée de dessiner l’image du
résultat de l’applet dans la page Web. Une applet ne doit pas contenir de fonction main( ). C’est
la fonction paint qui est cherchée en premier par la MVJ intégrée au navigateur et pas la fonction
main( ).
4/7
S. Laporte
Java intro
Lycée Louise Michel BTS IG DA
Exemple d’une applet Java
// importation des packages (ensembles de classes) nécessaires pour écrire des //applets
import java.awt.Graphics;
import java.applet.Applet;
public class Bonjour extends Applet {
public void paint(Graphics g) {
//Le fichier doit s’appeler Bonjour.java
// fonction principale pour une applet
g.drawString("Bonjour ! ,10, 10);
//chaque affichage se fait dans une //« fenêtre » avec
une largeur et une hauteur en pixels
}
}
Cette applet, pour être exécutée, devra être insérée dans une page Web qui pourrait ressembler
à ceci :
<HTML>
<HEAD>
<TITLE>Page HTML support de l'applet Bonjour</TITLE>
</HEAD>
<BODY>
<APPLET CODE="Bonjour.class" WIDTH=100 HEIGHT=50>
Votre navigateur ne supporte pas les applets ! (ceci est le message qui s’affiche par défaut dans le
cas où le navigateur ne sait pas exécuter les applets)
</APPLET>
</BODY>
</HTML>
SYNTAXE DU LANGAGE JAVA
Comparaison avec le C++
Principaux points communs
- Les instructions sont terminées par un ;
- Les blocs sont délimités par des accolades { }
- Les commentaires sur une ligne commencent par // et ceux qui sont sur plusieurs lignes sont
délimités par /* */
- Distinction majuscules-minuscules
- Les opérateurs sont les mêmes :
o = (affectation)
o +-*/
o ! (non) &&(et) ||(ou)
o != (différent) == (égal) <= >= < >
o ++ incrémentation
- Les boucles et les structures conditionnelles sont les mêmes
o for(initialisation ; condition de continuation ; incrémentation) { … }
o while (condition d’entrée) {…}
o do {…} while (condition de continuation)
5/7
S. Laporte
o
o
o
Java intro
Lycée Louise Michel BTS IG DA
if (condition) …
if (condition) … else …
switch (expression)
{
case valeur : …; break;
…
default …;
}
- Les types de bases communs sont:
o char : caractère
o short : petit entier (2 octets)
o int : entier (4octets)
o long : entier long (8 octets)
o float: reel (4 octets)
o double : reel long (8 octets)
o void : pas de type
Principales différences avec le C++
- Le programme principal est une méthode d’une classe (celle qu’on exécute) et pas une
fonction séparée. Tout est classe en Java.
- La saisie et l’affichage se font totalement différemment. (Voir paragraphe suivant)
- Il existe deux types de base supplémentaires: un type byte entier sur un octet et un type
boolean prenant pour valeurs true ou false
- Les constantes nommées sont précédées du mot clé final au lieu de const
- Il n’existe pas de variables globales. Elles sont inutiles car elles peuvent toujours être
remplacées par des valeurs d'attribut.
- Il n’y a pas de directives de précompilation #include. On utilise import …
Afficher et Saisir en Java
L’affichage en Java ne se fait pas comme en C++ avec cout. L’instruction d’affichage est la
fonction :
System.out.print(...)
Entre parenthèses, on met ce qu’on veut afficher. L’opérateur de concaténation ‘+’ permet de
concaténer l’affichage de plusieurs « choses » différentes (chaines littérales, contenu de
variables ou valeurs d’attributs...).
Pour passer à la ligne automatiquement après l’affichage, il suffit d’ajouter ln à print. C’est cette
fonction que l’on utilise le plus souvent.
System.out.println(...)
La saisie en Java n’est pas aisée, du moins si l’on ne veut pas utiliser de librairie.
En effet, de base, Java ne sait saisir qu’un caractère à la fois. Il n’est pas capable de saisir une
chaine de caractère entière.
6/7
S. Laporte
Java intro
Lycée Louise Michel BTS IG DA
Pour communiquer des données à un programme Java, le plus simple est encore d’utiliser les
arguments (paramètres) en ligne de commande ou alors d’utiliser une classe qui permet de
saisir des chaines de caractères, comme la classe Console.
Utiliser les arguments en ligne de commande
La signature de la fonction principale est
public static void main(String args[ ])
Entre parenthèses, on trouve un paramètre qui est un tableau appelé args de String. Ce tableau,
comme tous les tableau en Java, n’a pas de nombre d’élément prédéterminé. Il est créé
automatiquement à l’exécution du programme, et chacun de ses éléments est valorisé par les
chaines que l’on écrit après la commande d’exécution (par exemple java Bonjour). Si on ne met
rien après cette commande d’exécution, le tableau restera vide, tout simplement.
Si on écrit par exemple :
Java Bonjour toto 22 Bobigny
alors le tableau args sera valorisé comme suit :
args[0] = « toto »
args[1] = « 22 »
args[2] = « Bobigny »
et la propriété args.length est valorisée à 3
7/7