Upload
lionel-joubert
View
118
Download
0
Tags:
Embed Size (px)
Citation preview
- Jean-Claude MARTIN - ch1: Introduction -
1
INTRODUCTIONA JAVA
Chapitre 1 : Introduction
Jean-Claude MARTINLIMSI-CNRS
- Jean-Claude MARTIN - ch1: Introduction -
2
PLAN :
1. INTRODUCTION2. LE LANGAGE JAVA3. LE PAQUETAGE AWT4. LES ENTREES-SORTIES5. INTERNET, IMAGE, THREAD6. PERSPECTIVES
- Jean-Claude MARTIN - ch1: Introduction -
3
BIBLIOGRAPHIE
- Jean-Claude MARTIN - ch1: Introduction -
4
Bibliographie : les livres «papier»
• Pour débuter :• Macary, J.F. & Nicolas, C. (1996)
Programmation Java. Eyrolles. 236p.
• Stephen R. Davis (1996) Formation à Java. Microsoft Press. 412 p.
• Pour approfondir :• Flanagan, D. (1997)
Java in a nutshell (2nd edition). O’Reilly. 610p.
• Joshi, D. & Vorobiev, P. (1997) Migrating from Java 1.0 to Java 1.1. Ventana.ISBN 1-56604-686-6
- Jean-Claude MARTIN - ch1: Introduction -
5
- Jean-Claude MARTIN - ch1: Introduction -
6
- Jean-Claude MARTIN - ch1: Introduction -
7
- Jean-Claude MARTIN - ch1: Introduction -
8
- Jean-Claude MARTIN - ch1: Introduction -
9
INTRODUCTION
- Jean-Claude MARTIN - ch1: Introduction -
10
Historique• développé par SUN • initialement prévu pour l’électroménager• « Oak » en 1991, Java depuis 1995• création de JavaSoft en 1996• ouverture à Internet• versions:
– 1995 : 1.0– 1996 : 1.1– 1997 : 1.1.5– 1998 : 1.2
- Jean-Claude MARTIN - ch1: Introduction -
11
Qu'est-ce que "Java" ?
une "plateforme" =
langage orienté objet (API)+
environnement d'exécution (machine virtuelle)
- Jean-Claude MARTIN - ch1: Introduction -
12
Des points communs et des différences avec C et C++
C /C++
Java
Classes, instances, exceptions oui oui
Variables et fonctionsglobales externes aux classes
oui non
Jeu de caractères Ascii Unicode
Arithmétique de pointeurs oui non
Libération automatique de lamémoire
non oui
... ... ...
- Jean-Claude MARTIN - ch1: Introduction -
13
Environnements de développement : le JDK
• Le JDK (Java Development toolKit)• téléchargement gratuit (www.javasoft.com)• version 1.1 depuis début 1997• pas un environnement intégré • ligne de commande
• comprend• le compilateur javac• l’interpréteur java• le débogeur jdb• le générateur de documentation HTML javadoc
- Jean-Claude MARTIN - ch1: Introduction -
14
Environnements de développement : le JDK
• Comprend aussi• le visualisateur d’applet appletviewer
• l’archiveur jar
• le générateur de fichiers C javah
• le gestionnaire de clés digitales javakey
• l’interpréteur java runtime jre
• le désassembleur javap
• les outils pour appeler des méthodes distantes (RMI)
- Jean-Claude MARTIN - ch1: Introduction -
15
Un premier exemple : Hello world ! en application Java• Créer un fichier HelloAppli.java
public class HelloAppli {
public static void main (String args[]) {
System.out.println ("HelloWorld!\n");
}
}
• Compilez C :\javac HelloAppli.java
• un fichier compilé est crée : HelloAppli.class
• ; autorisé après les accolades
- Jean-Claude MARTIN - ch1: Introduction -
16
Compilation de HelloAppli
- Jean-Claude MARTIN - ch1: Introduction -
17
Compilation de HelloAppli.javaHelloAppli.java
public class HelloAppli {public static void main (String args[]) { System.out.println ("Hello World !"); }}
CompilateurJAVAC
HelloAppli.class 0 getstatic #7 <Field java.io.PrintStream out> 3 ldc #1 <String "Hello World !"> 5 invokevirtual #8 <Method void println(java.lang.String)> 8 return...
473 octets(EdText 3000)
130 octets(EdText 4000)
- Jean-Claude MARTIN - ch1: Introduction -
18
Interprétation et exécution de HelloAppli
• Exécutez C :\java HelloAppli
nom de la classe
- Jean-Claude MARTIN - ch1: Introduction -
19
Interprétation et exécution de HelloAppli sur PC / DOS
InterpréteurJAVA pour Windows / PC
HelloAppli.class 0 getstatic #7 <Field java.io.PrintStream out> 3 ldc #1 <String "Hello World !"> 5 invokevirtual #8 <Method void println(java.lang.String)> 8 return...
MachineVirtuelle
Java
Systèmed’exploitation
WindowsPC
EXECUTION
- Jean-Claude MARTIN - ch1: Introduction -
20
Hello World sur Silicon Graphics• Le même fichier HelloAppli.class est utilisé !
- Jean-Claude MARTIN - ch1: Introduction -
21
Interprétation et exécution de HelloAppli sur Silicon Graphics
Interpréteur JAVApour Silicon / Unix
HelloAppli.class 0 getstatic #7 <Field java.io.PrintStream out> 3 ldc #1 <String "Hello World !"> 5 invokevirtual #8 <Method void println(java.lang.String)> 8 return...
MachineVirtuelle
Java
Systèmed’exploitationSilicon / UnixEXECUTION
Fichier issu de lacompilation sur PC
- Jean-Claude MARTIN - ch1: Introduction -
22
LES APPLETS
- Jean-Claude MARTIN - ch1: Introduction -
23
Internet, WEB et HTML • Internet
• un réseau de réseau né dans les années 70 (ARPAnet)
• plusieurs services : Email, WEB...
• WEB• système d’information hypertexte, graphique, multi-
plateforme, distribué, dynamique, accédant a différents types d’informations sur Internet de manière interactive
• HTML• un langage de description de documents (images,
hyperliens)
- Jean-Claude MARTIN - ch1: Introduction -
24
Application / AppletsEnvironnement d’exécution
• Application• s'exécute depuis le système d'exploitation : Dos, Unix
• Applet = «Application leight» ou Applette• chargement possible à travers Internet
• s'exécute dans – un navigateur : Netscape Navigator, InternetExplorer
– un utilitaire : appletviewer
• Nuances ...
- Jean-Claude MARTIN - ch1: Introduction -
25
HTML
<HTML>
<HEAD>
<TITLE> Exemple HTML </TITLE>
</HEAD>
<BODY>
<H1>Exemple</H1>
Ceci est un exemple de page HTML.
</BODY>
</HTML>
(HyperText Markup Language)
- Jean-Claude MARTIN - ch1: Introduction -
26
Exemple HTML «classique»
- Jean-Claude MARTIN - ch1: Introduction -
27
Consulter un fichier HTML
CLIENT
Navigateur
SERVEUR
url
HTML<HTML>
<HEAD>
<TITLE> Exemple HTML </TITLE>
</HEAD>
<BODY>
<H1>Exemple</H1>
Ceci est un exemple de page HTML.
</BODY>
</HTML>
(1)
(2)
(3)
(4)
- Jean-Claude MARTIN - ch1: Introduction -
28
Premier exemple d'applet : HelloApplet.java
• Créer un fichier HelloApplet.javaimport java.awt.Graphics ;import java.applet.Applet ;public class HelloApplet extends Applet{
public void paint (Graphics g){
g.drawString (" Hello World! ", 0, 100) ;}
}
• le compiler : javac HelloApplet.java• => le fichier HelloApplet.class est crée
• on peut se passer des imports• mais il faut alors mettre les noms complets
- Jean-Claude MARTIN - ch1: Introduction -
29
Premier exemple d'applet : HelloApplet.html
• Créer un fichier HelloApplet.html :<HTML>
<HEAD>
<TITLE> Exemple HTML </TITLE>
</HEAD>
<BODY>
<H1>Exécution de l'applet</H1>
<APPLET code="HelloApplet.class" width=100 height=100>
</APPLET>
</BODY>
</HTML>resize souvent interdit
- Jean-Claude MARTIN - ch1: Introduction -
30
Exécution locale avec appletviewer
- Jean-Claude MARTIN - ch1: Introduction -
31
Consulter un fichier HTML contenant une applet Java
CLIENT
Navigateur
SERVEUR
url
HTML + .class<HTML>
<HEAD>
<TITLE> Exemple HTML </TITLE>
</HEAD>
<BODY>
<H1>Exécution de l'applet</H1>
<APPLET code="HelloApplet.class" width=100 height=100>
</APPLET>
...
(1)
(2)
(3)
(4)
0 aload_1 1 ldc #1 <String " Hello World! "> 3 bipush 20 5 bipush 20 7 invokevirtual #6 <Method void ... 10 return
SUN PCMachineVirtuelle
Java
Systèmed’exploitation
SUN / Unix 0 aload_1 1 ldc #1 <String " Hello World! "> 3 bipush 20 5 bipush 20 7 invokevirtual #6 <Method void ... 10 return
0 aload_1 1 ldc #1 <String " Hello World! "> 3 bipush 20 5 bipush 20 7 invokevirtual #6 <Method void ... 10 return
- Jean-Claude MARTIN - ch1: Introduction -
32
Java / JavaScript
• Java (SUN)– langage de programmation orienté objet– le programme compilé s’exécute chez le client– programmes indépendants (applications)
• JavaScript (Netscape)– langage de programmation non orienté objet– le programme s’exécute chez le client– le source est inclus dans le fichier HTML
- Jean-Claude MARTIN - ch1: Introduction -
33
CGI / Active X / HTML• CGI
– c’est une norme de passage de paramètres– le langage de programmation est quelconque– le programme s’exécute sur le serveur
• ActiveX (Microsoft)– composants «réutilisables»– manipulables par un script inclus dans HTML
• HTML– langage de description de document
- Jean-Claude MARTIN - ch1: Introduction -
34
Java / JavaScript CGI / Active X / HTML
• Evolutions rapides
• Passerelles
- Jean-Claude MARTIN - ch1: Introduction -
35
Exécutions avec différents navigateurs
- Jean-Claude MARTIN - ch1: Introduction -
36
Exemple : une applet carte interactive
- Jean-Claude MARTIN - ch1: Introduction -
37
Javafig : une application pourdessiner
- Jean-Claude MARTIN - ch1: Introduction -
38
3D function builder : une applet pour dessiner des courbes 3D
- Jean-Claude MARTIN - ch1: Introduction -
39
Le navigateur exécute une applet les étapes
• le navigateur réserve de l’espace dans sa fenêtre pour l’exécution de l’applet
• le navigateur charge le bytecode (.class ou .jar)
• le navigateur crée une instance de l’applet
• la machine virtuelle appelle init() puis start()
- Jean-Claude MARTIN - ch1: Introduction -
40
- Jean-Claude MARTIN - ch1: Introduction -
41
Cycle de vie d’une applet
METHODE QUAND ROLE
constructeur(à éviter)
démarrage de l'applet initialisation desdonnées non statiques
init après le constructeur initialisation desdonnées non statiques
start le navigateur pénètredans la fenêtre
démarre l'animation del'applet
paint la fenêtre requiert unrafraichissement
redessine le contenu dela fenêtre
stop le navigateur passe surune autre page web
libère des ressources(ex: stoppe l'animation)
destroy l'utilisateur quitte lenavigateur
libère les autresressources
- Jean-Claude MARTIN - ch1: Introduction -
42
Passage de paramètres à une applet<HTML>
<HEAD>
<TITLE> Passage de paramètres à une Applet </TITLE>
</HEAD>
<BODY>
<H1>Exécution de l'applet</H1>
<APPLET code="Par.class" width=300 height=300>
<PARAM NAME="Nom" VALUE="Java in a nutshell">
<PARAM NAME="Nb" VALUE=610>
</APPLET>
</BODY>
</HTML>
- Jean-Claude MARTIN - ch1: Introduction -
43
// Lecture des paramètres de l’applet dans le programme Java
import java.awt.* ;
import java.applet.* ;
public class Par extends Applet
{
String sNomLivre, sNbPage;
public void init () {
sNomLivre = getParameter ("Nom");
sNbPage = getParameter ("Nb");
}
public void paint (Graphics g)
{
g.drawString ("Nom du livre : " +sNomLivre , 50, 50);
g.drawString ("Nombre de pages :" + sNbPage , 50, 70);
}
}
- Jean-Claude MARTIN - ch1: Introduction -
44
Exécution avec appletviewer
- Jean-Claude MARTIN - ch1: Introduction -
45
Applet et Tags HTML
< APPLET
[CODEBASE = codebaseURL]
CODE = appletFile
[ALT = alternateText]
[NAME = appletInstanceName]
WIDTH = pixels
HEIGHT = pixels
[ALIGN = alignment]
[VSPACE = pixels]
[HSPACE = pixels]
[ARCHIVE = «fichier1, fichier2»]
>
[< PARAM NAME = appletParameter1 VALUE = value >]
[< PARAM NAME = appletParameter2 VALUE = value >]
[alternateHTML]
</APPLET>
absolu ou relatif à la page HTMLsi absent, celle de la page HTML
affiché par les navigateurs comprenant <APPLET> maisn’ayant pas pu exécuter l’applet Java
plusieurs applets dans une page
affiché par les navigateurs ne comprenant pas <APPLET>
- Jean-Claude MARTIN - ch1: Introduction -
46
Qu’est-ce qu’une applet ?
Component : peut gérer les événements souris, clavier...
Container : peut contenir plusieurs objets graphiques
Panel
Applet : cycle de vie déterminé
- Jean-Claude MARTIN - ch1: Introduction -
47
Applet et System.out.println
import java.awt.* ;import java.applet.* ;public class HelloApplet extends Applet{
public void init() {System.out.println ("Affichage depuis l'applet");
}
public void paint (Graphics g){
g.drawString (" Hello World! ", 20, 50) ;}
}
- Jean-Claude MARTIN - ch1: Introduction -
48
Affichage dans la console Java
Peut aussi s’afficher dans la fenêtre ayant lancé manuellement le navigateur (ou l’appletviewer)
- Jean-Claude MARTIN - ch1: Introduction -
49
Applet et sécurité
• Application :mêmes droits qu’un programme C... .plus la sécurité liée à Java
• Applet– locale : peut avoir presque autant de droits– téléchargée à travers le réseau
• considérée «untrusted» : limitations (dépendent du navigateur)– espace de noms séparé des classes locales
• signature digitale spécifiée (javakey dans 1.1) => «trusted»
- Jean-Claude MARTIN - ch1: Introduction -
50
Sécurité• En général : sur votre machine, une applet ne
peut pas– lire / écrire / supprimer / renommer des fichiers– obtenir taille / date / droits d’accès des fichiers– lister ou créer des dossiers– se connecter à d’autres ordinateurs que celui depuis
lequel le code a été téléchargé– créer de nouveaux processus– télécharger du code écrit dans un autre langage