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

Preview:

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