50
- Jean-Claude MARTIN - ch 1: Introduction - 1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

Embed Size (px)

Citation preview

Page 1: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

1

INTRODUCTIONA JAVA

Chapitre 1 : Introduction

Jean-Claude MARTINLIMSI-CNRS

Page 2: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

2

PLAN :

1. INTRODUCTION2. LE LANGAGE JAVA3. LE PAQUETAGE AWT4. LES ENTREES-SORTIES5. INTERNET, IMAGE, THREAD6. PERSPECTIVES

Page 3: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

3

BIBLIOGRAPHIE

Page 4: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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

Page 5: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

5

Page 6: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

6

Page 7: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

7

Page 8: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

8

Page 9: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

9

INTRODUCTION

Page 10: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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

Page 11: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

11

Qu'est-ce que "Java" ?

une "plateforme" =

langage orienté objet (API)+

environnement d'exécution (machine virtuelle)

Page 12: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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

... ... ...

Page 13: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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

Page 14: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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)

Page 15: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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

Page 16: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

16

Compilation de HelloAppli

Page 17: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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)

Page 18: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

18

Interprétation et exécution de HelloAppli

• Exécutez C :\java HelloAppli

nom de la classe

Page 19: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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

Page 20: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

20

Hello World sur Silicon Graphics• Le même fichier HelloAppli.class est utilisé !

Page 21: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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

Page 22: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

22

LES APPLETS

Page 23: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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)

Page 24: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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 ...

Page 25: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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)

Page 26: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

26

Exemple HTML «classique»

Page 27: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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)

Page 28: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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

Page 29: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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

Page 30: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

30

Exécution locale avec appletviewer

Page 31: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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

Page 32: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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

Page 33: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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

Page 34: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

34

Java / JavaScript CGI / Active X / HTML

• Evolutions rapides

• Passerelles

Page 35: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

35

Exécutions avec différents navigateurs

Page 36: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

36

Exemple : une applet carte interactive

Page 37: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

37

Javafig : une application pourdessiner

Page 38: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

38

3D function builder : une applet pour dessiner des courbes 3D

Page 39: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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()

Page 40: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

40

Page 41: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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

Page 42: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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>

Page 43: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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);

}

}

Page 44: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- Jean-Claude MARTIN - ch1: Introduction -

44

Exécution avec appletviewer

Page 45: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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>

Page 46: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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é

Page 47: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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) ;}

}

Page 48: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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)

Page 49: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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»

Page 50: - Jean-Claude MARTIN - ch1: Introduction -1 INTRODUCTION A JAVA Chapitre 1 : Introduction Jean-Claude MARTIN LIMSI-CNRS

- 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