38
Java Licence pro CISII 07/08 Groupe LPC1 Antoine Tabbone [email protected]

Java

Embed Size (px)

DESCRIPTION

Java. Licence pro CISII 07/08 Groupe LPC1 Antoine Tabbone [email protected]. Evaluation. 1 contrôle de connaissances Petit programmes en Java fait en TD 1 mini projet 1 examen écrit. Plan. Introduction Objets et classes Héritage et polymorphisme Classes abstraites et interfaces - PowerPoint PPT Presentation

Citation preview

Java

Licence pro CISII 0708Groupe LPC1

Antoine Tabbonetabboneloriafr

Evaluation

1 controcircle de connaissances Petit programmes en Java fait en TD 1 mini projet

1 examen eacutecrit

Plan Introduction Objets et classes Heacuteritage et polymorphisme Classes abstraites et interfaces Exceptions Collections Interface graphique Entreacutees-sorties Applets Threads

Pour en savoir plus

httpjavasuncom httpjavasuncomj2se150doc

sapiindexhtml httpjavasuncomdocsbookstut

orial Cours en ligne

Sur lrsquoENT de Nancy2 par H Everett httpdeptinfounicefr~grin

Qursquoest ce que Java

Langage portable gracircce agrave lrsquoexeacutecution par une machine virtuelle JVM laquo Write once run everywhere raquo Indeacutependant des plates-formes Difficile agrave atteindre laquo Write once debug

everywhere raquo Simple orienteacute objet

Syntaxe tregraves proche du langage CC++ Pas de gestion de la meacutemoire de la part du

concepteur Tout est objet sauf les types primitifs Heacuteritage simple eacutepuration par rapport agrave C++

Sucircrndash fortement typeacutendash veacuterifications au chargement des classes et

durant leur exeacutecution Dynamique et distribueacute

Classes chargeacutees en fonction des besoins (le plus souvent par le reacuteseau)

Permet le paralleacutelisme de maniegravere simple faciliteacutes pour distribuer les traitements entre plusieurs machines

Une bregraveve histoire de Java Inventeacute par Sun 1990 reacutepondre agrave 5 objectifs

utiliser une meacutethodologie orienteacutee objet permettre agrave un mecircme programme decirctre exeacutecuteacute

sur plusieurs systegravemes dexploitation diffeacuterents pouvoir utiliser de maniegravere native les reacuteseaux

informatiques pouvoir exeacutecuter du code distant de maniegravere sucircre ecirctre facile agrave utiliser et posseacuteder les points forts

des langages de programmation orienteacutes objet comme le C++

Diffeacuterentes versions Java 102 250 classes lent Java 11 500 classes un peu plus rapide Java 2 2300 classes (diffeacuterents versions)

beaucoup plus rapide Java 5 3270 classes Java 6

3 eacuteditions J2SE Java 2 standard Edition JDK = J2SE

Development Kit aussi appeleacute SDK (Software Development Kit) pour certaines versions

J2EE Enterprise Edition qui ajoute les API pour eacutecrire des applications installeacutees sur les serveurs dans des applications distribueacutees servlet JSP EJBhellip

J2ME Micro Edition version alleacutegeacutee de Java pour eacutecrire des programmes embarqueacutes (cartes agrave puceJava card teacuteleacutephones portableshellip)

Premier programme Le code source du premier programme

anatomie drsquoune classe

public class PremiereAppli public static void main(String[] args)

Systemoutprintln(laquo Jrsquoapprends java)

Nom de la classe

Nom de la meacutethode

Public pour que tout Le monde puisse y acceacuteder

Afficher sur la sortie standard La chaicircne agrave afficher

Type de retour voidSignifie pas de valeur de retour

Compilation drsquoun code source

Un code source ne peut ecirctre exeacutecuteacute directement par un ordinateur

Il faut traduire ce code source dans un langage que lrsquoordinateur (le processeur de lordinateur) peut comprendre (langage natif)

Un compilateur est un programme qui effectue cette traduction

Compilation en Java rarr bytecode

En Java le code source nrsquoest pas traduit directement dans le langage de lrsquoordinateur

Il est drsquoabord traduit dans un langage appeleacute laquo bytecode raquo langage drsquoune machine virtuelle (JVM Java Virtual Machine) deacutefinie par Sun

Ce langage est indeacutependant de lrsquoordinateur qui va exeacutecuter le programme

La compilation fournit du bytecode

Programme Java

Compilateur javac

Programme en bytecode indeacutependant de lordinateur

Programme sourcePremiereApplijava

compilateur

BytecodePremiereAppliclass

Compilation javac PremiereApplijava

Exeacutecution java PremiereAppli Dans toute application il faut une

classe publique qui contient main() La premiegravere meacutethode agrave ecirctre exeacutecuteacutee

Java Virtual Machine Les systegravemes qui veulent pouvoir exeacutecuter

un programme Java doivent fournir une JVM

A lheure actuelle tous les systegravemes ont une JVM (Linux Windows MacOshellip)

Il existe aussi depuis peu quelques JVM laquo en dur raquo sous forme de processeurs dont le langage natif est le bytecode elles sont rarement utiliseacutees (en raison de la portabiliteacute)

Le bytecode peut ecirctre exeacutecuteacute par nimporte quelle JVM

Si un systegraveme possegravede une JVM il peut exeacutecuter tous les fichiers class compileacutes sur nimporte quel autre systegraveme

BytecodePremierAppliclass

JVM sous MacOs

JVM sous Windows

JVM sous Lunix

Avantages de la JVM pour Internet

Gracircce agrave sa portabiliteacute le bytecode dune classe peut ecirctre chargeacute depuis une machine distante du reacuteseau et exeacutecuteacutee par une JVM locale

La JVM fait de nombreuses veacuterifications sur le bytecode avant son exeacutecution pour srsquoassurer qursquoil ne va effectuer aucune action dangereuse

La JVM apporte doncndash de la souplesse pour le chargement du code agrave

exeacutecuterndash mais aussi de la seacutecuriteacute pour lexeacutecution de ce code

Les veacuterifications effectueacutees sur le bytecode et leacutetape dinterpreacutetation de ce bytecode (dans le langage natif du processeur) ralentissent lexeacutecution des classes Java

Les techniques laquo Just In Time (JIT) raquo oulaquo Hotspot raquo reacuteduisent ce problegraveme elles

permettent de ne traduire quune seule fois en code natif et agrave la voleacutee les instructions qui sont exeacutecuteacutees

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Evaluation

1 controcircle de connaissances Petit programmes en Java fait en TD 1 mini projet

1 examen eacutecrit

Plan Introduction Objets et classes Heacuteritage et polymorphisme Classes abstraites et interfaces Exceptions Collections Interface graphique Entreacutees-sorties Applets Threads

Pour en savoir plus

httpjavasuncom httpjavasuncomj2se150doc

sapiindexhtml httpjavasuncomdocsbookstut

orial Cours en ligne

Sur lrsquoENT de Nancy2 par H Everett httpdeptinfounicefr~grin

Qursquoest ce que Java

Langage portable gracircce agrave lrsquoexeacutecution par une machine virtuelle JVM laquo Write once run everywhere raquo Indeacutependant des plates-formes Difficile agrave atteindre laquo Write once debug

everywhere raquo Simple orienteacute objet

Syntaxe tregraves proche du langage CC++ Pas de gestion de la meacutemoire de la part du

concepteur Tout est objet sauf les types primitifs Heacuteritage simple eacutepuration par rapport agrave C++

Sucircrndash fortement typeacutendash veacuterifications au chargement des classes et

durant leur exeacutecution Dynamique et distribueacute

Classes chargeacutees en fonction des besoins (le plus souvent par le reacuteseau)

Permet le paralleacutelisme de maniegravere simple faciliteacutes pour distribuer les traitements entre plusieurs machines

Une bregraveve histoire de Java Inventeacute par Sun 1990 reacutepondre agrave 5 objectifs

utiliser une meacutethodologie orienteacutee objet permettre agrave un mecircme programme decirctre exeacutecuteacute

sur plusieurs systegravemes dexploitation diffeacuterents pouvoir utiliser de maniegravere native les reacuteseaux

informatiques pouvoir exeacutecuter du code distant de maniegravere sucircre ecirctre facile agrave utiliser et posseacuteder les points forts

des langages de programmation orienteacutes objet comme le C++

Diffeacuterentes versions Java 102 250 classes lent Java 11 500 classes un peu plus rapide Java 2 2300 classes (diffeacuterents versions)

beaucoup plus rapide Java 5 3270 classes Java 6

3 eacuteditions J2SE Java 2 standard Edition JDK = J2SE

Development Kit aussi appeleacute SDK (Software Development Kit) pour certaines versions

J2EE Enterprise Edition qui ajoute les API pour eacutecrire des applications installeacutees sur les serveurs dans des applications distribueacutees servlet JSP EJBhellip

J2ME Micro Edition version alleacutegeacutee de Java pour eacutecrire des programmes embarqueacutes (cartes agrave puceJava card teacuteleacutephones portableshellip)

Premier programme Le code source du premier programme

anatomie drsquoune classe

public class PremiereAppli public static void main(String[] args)

Systemoutprintln(laquo Jrsquoapprends java)

Nom de la classe

Nom de la meacutethode

Public pour que tout Le monde puisse y acceacuteder

Afficher sur la sortie standard La chaicircne agrave afficher

Type de retour voidSignifie pas de valeur de retour

Compilation drsquoun code source

Un code source ne peut ecirctre exeacutecuteacute directement par un ordinateur

Il faut traduire ce code source dans un langage que lrsquoordinateur (le processeur de lordinateur) peut comprendre (langage natif)

Un compilateur est un programme qui effectue cette traduction

Compilation en Java rarr bytecode

En Java le code source nrsquoest pas traduit directement dans le langage de lrsquoordinateur

Il est drsquoabord traduit dans un langage appeleacute laquo bytecode raquo langage drsquoune machine virtuelle (JVM Java Virtual Machine) deacutefinie par Sun

Ce langage est indeacutependant de lrsquoordinateur qui va exeacutecuter le programme

La compilation fournit du bytecode

Programme Java

Compilateur javac

Programme en bytecode indeacutependant de lordinateur

Programme sourcePremiereApplijava

compilateur

BytecodePremiereAppliclass

Compilation javac PremiereApplijava

Exeacutecution java PremiereAppli Dans toute application il faut une

classe publique qui contient main() La premiegravere meacutethode agrave ecirctre exeacutecuteacutee

Java Virtual Machine Les systegravemes qui veulent pouvoir exeacutecuter

un programme Java doivent fournir une JVM

A lheure actuelle tous les systegravemes ont une JVM (Linux Windows MacOshellip)

Il existe aussi depuis peu quelques JVM laquo en dur raquo sous forme de processeurs dont le langage natif est le bytecode elles sont rarement utiliseacutees (en raison de la portabiliteacute)

Le bytecode peut ecirctre exeacutecuteacute par nimporte quelle JVM

Si un systegraveme possegravede une JVM il peut exeacutecuter tous les fichiers class compileacutes sur nimporte quel autre systegraveme

BytecodePremierAppliclass

JVM sous MacOs

JVM sous Windows

JVM sous Lunix

Avantages de la JVM pour Internet

Gracircce agrave sa portabiliteacute le bytecode dune classe peut ecirctre chargeacute depuis une machine distante du reacuteseau et exeacutecuteacutee par une JVM locale

La JVM fait de nombreuses veacuterifications sur le bytecode avant son exeacutecution pour srsquoassurer qursquoil ne va effectuer aucune action dangereuse

La JVM apporte doncndash de la souplesse pour le chargement du code agrave

exeacutecuterndash mais aussi de la seacutecuriteacute pour lexeacutecution de ce code

Les veacuterifications effectueacutees sur le bytecode et leacutetape dinterpreacutetation de ce bytecode (dans le langage natif du processeur) ralentissent lexeacutecution des classes Java

Les techniques laquo Just In Time (JIT) raquo oulaquo Hotspot raquo reacuteduisent ce problegraveme elles

permettent de ne traduire quune seule fois en code natif et agrave la voleacutee les instructions qui sont exeacutecuteacutees

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Plan Introduction Objets et classes Heacuteritage et polymorphisme Classes abstraites et interfaces Exceptions Collections Interface graphique Entreacutees-sorties Applets Threads

Pour en savoir plus

httpjavasuncom httpjavasuncomj2se150doc

sapiindexhtml httpjavasuncomdocsbookstut

orial Cours en ligne

Sur lrsquoENT de Nancy2 par H Everett httpdeptinfounicefr~grin

Qursquoest ce que Java

Langage portable gracircce agrave lrsquoexeacutecution par une machine virtuelle JVM laquo Write once run everywhere raquo Indeacutependant des plates-formes Difficile agrave atteindre laquo Write once debug

everywhere raquo Simple orienteacute objet

Syntaxe tregraves proche du langage CC++ Pas de gestion de la meacutemoire de la part du

concepteur Tout est objet sauf les types primitifs Heacuteritage simple eacutepuration par rapport agrave C++

Sucircrndash fortement typeacutendash veacuterifications au chargement des classes et

durant leur exeacutecution Dynamique et distribueacute

Classes chargeacutees en fonction des besoins (le plus souvent par le reacuteseau)

Permet le paralleacutelisme de maniegravere simple faciliteacutes pour distribuer les traitements entre plusieurs machines

Une bregraveve histoire de Java Inventeacute par Sun 1990 reacutepondre agrave 5 objectifs

utiliser une meacutethodologie orienteacutee objet permettre agrave un mecircme programme decirctre exeacutecuteacute

sur plusieurs systegravemes dexploitation diffeacuterents pouvoir utiliser de maniegravere native les reacuteseaux

informatiques pouvoir exeacutecuter du code distant de maniegravere sucircre ecirctre facile agrave utiliser et posseacuteder les points forts

des langages de programmation orienteacutes objet comme le C++

Diffeacuterentes versions Java 102 250 classes lent Java 11 500 classes un peu plus rapide Java 2 2300 classes (diffeacuterents versions)

beaucoup plus rapide Java 5 3270 classes Java 6

3 eacuteditions J2SE Java 2 standard Edition JDK = J2SE

Development Kit aussi appeleacute SDK (Software Development Kit) pour certaines versions

J2EE Enterprise Edition qui ajoute les API pour eacutecrire des applications installeacutees sur les serveurs dans des applications distribueacutees servlet JSP EJBhellip

J2ME Micro Edition version alleacutegeacutee de Java pour eacutecrire des programmes embarqueacutes (cartes agrave puceJava card teacuteleacutephones portableshellip)

Premier programme Le code source du premier programme

anatomie drsquoune classe

public class PremiereAppli public static void main(String[] args)

Systemoutprintln(laquo Jrsquoapprends java)

Nom de la classe

Nom de la meacutethode

Public pour que tout Le monde puisse y acceacuteder

Afficher sur la sortie standard La chaicircne agrave afficher

Type de retour voidSignifie pas de valeur de retour

Compilation drsquoun code source

Un code source ne peut ecirctre exeacutecuteacute directement par un ordinateur

Il faut traduire ce code source dans un langage que lrsquoordinateur (le processeur de lordinateur) peut comprendre (langage natif)

Un compilateur est un programme qui effectue cette traduction

Compilation en Java rarr bytecode

En Java le code source nrsquoest pas traduit directement dans le langage de lrsquoordinateur

Il est drsquoabord traduit dans un langage appeleacute laquo bytecode raquo langage drsquoune machine virtuelle (JVM Java Virtual Machine) deacutefinie par Sun

Ce langage est indeacutependant de lrsquoordinateur qui va exeacutecuter le programme

La compilation fournit du bytecode

Programme Java

Compilateur javac

Programme en bytecode indeacutependant de lordinateur

Programme sourcePremiereApplijava

compilateur

BytecodePremiereAppliclass

Compilation javac PremiereApplijava

Exeacutecution java PremiereAppli Dans toute application il faut une

classe publique qui contient main() La premiegravere meacutethode agrave ecirctre exeacutecuteacutee

Java Virtual Machine Les systegravemes qui veulent pouvoir exeacutecuter

un programme Java doivent fournir une JVM

A lheure actuelle tous les systegravemes ont une JVM (Linux Windows MacOshellip)

Il existe aussi depuis peu quelques JVM laquo en dur raquo sous forme de processeurs dont le langage natif est le bytecode elles sont rarement utiliseacutees (en raison de la portabiliteacute)

Le bytecode peut ecirctre exeacutecuteacute par nimporte quelle JVM

Si un systegraveme possegravede une JVM il peut exeacutecuter tous les fichiers class compileacutes sur nimporte quel autre systegraveme

BytecodePremierAppliclass

JVM sous MacOs

JVM sous Windows

JVM sous Lunix

Avantages de la JVM pour Internet

Gracircce agrave sa portabiliteacute le bytecode dune classe peut ecirctre chargeacute depuis une machine distante du reacuteseau et exeacutecuteacutee par une JVM locale

La JVM fait de nombreuses veacuterifications sur le bytecode avant son exeacutecution pour srsquoassurer qursquoil ne va effectuer aucune action dangereuse

La JVM apporte doncndash de la souplesse pour le chargement du code agrave

exeacutecuterndash mais aussi de la seacutecuriteacute pour lexeacutecution de ce code

Les veacuterifications effectueacutees sur le bytecode et leacutetape dinterpreacutetation de ce bytecode (dans le langage natif du processeur) ralentissent lexeacutecution des classes Java

Les techniques laquo Just In Time (JIT) raquo oulaquo Hotspot raquo reacuteduisent ce problegraveme elles

permettent de ne traduire quune seule fois en code natif et agrave la voleacutee les instructions qui sont exeacutecuteacutees

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Pour en savoir plus

httpjavasuncom httpjavasuncomj2se150doc

sapiindexhtml httpjavasuncomdocsbookstut

orial Cours en ligne

Sur lrsquoENT de Nancy2 par H Everett httpdeptinfounicefr~grin

Qursquoest ce que Java

Langage portable gracircce agrave lrsquoexeacutecution par une machine virtuelle JVM laquo Write once run everywhere raquo Indeacutependant des plates-formes Difficile agrave atteindre laquo Write once debug

everywhere raquo Simple orienteacute objet

Syntaxe tregraves proche du langage CC++ Pas de gestion de la meacutemoire de la part du

concepteur Tout est objet sauf les types primitifs Heacuteritage simple eacutepuration par rapport agrave C++

Sucircrndash fortement typeacutendash veacuterifications au chargement des classes et

durant leur exeacutecution Dynamique et distribueacute

Classes chargeacutees en fonction des besoins (le plus souvent par le reacuteseau)

Permet le paralleacutelisme de maniegravere simple faciliteacutes pour distribuer les traitements entre plusieurs machines

Une bregraveve histoire de Java Inventeacute par Sun 1990 reacutepondre agrave 5 objectifs

utiliser une meacutethodologie orienteacutee objet permettre agrave un mecircme programme decirctre exeacutecuteacute

sur plusieurs systegravemes dexploitation diffeacuterents pouvoir utiliser de maniegravere native les reacuteseaux

informatiques pouvoir exeacutecuter du code distant de maniegravere sucircre ecirctre facile agrave utiliser et posseacuteder les points forts

des langages de programmation orienteacutes objet comme le C++

Diffeacuterentes versions Java 102 250 classes lent Java 11 500 classes un peu plus rapide Java 2 2300 classes (diffeacuterents versions)

beaucoup plus rapide Java 5 3270 classes Java 6

3 eacuteditions J2SE Java 2 standard Edition JDK = J2SE

Development Kit aussi appeleacute SDK (Software Development Kit) pour certaines versions

J2EE Enterprise Edition qui ajoute les API pour eacutecrire des applications installeacutees sur les serveurs dans des applications distribueacutees servlet JSP EJBhellip

J2ME Micro Edition version alleacutegeacutee de Java pour eacutecrire des programmes embarqueacutes (cartes agrave puceJava card teacuteleacutephones portableshellip)

Premier programme Le code source du premier programme

anatomie drsquoune classe

public class PremiereAppli public static void main(String[] args)

Systemoutprintln(laquo Jrsquoapprends java)

Nom de la classe

Nom de la meacutethode

Public pour que tout Le monde puisse y acceacuteder

Afficher sur la sortie standard La chaicircne agrave afficher

Type de retour voidSignifie pas de valeur de retour

Compilation drsquoun code source

Un code source ne peut ecirctre exeacutecuteacute directement par un ordinateur

Il faut traduire ce code source dans un langage que lrsquoordinateur (le processeur de lordinateur) peut comprendre (langage natif)

Un compilateur est un programme qui effectue cette traduction

Compilation en Java rarr bytecode

En Java le code source nrsquoest pas traduit directement dans le langage de lrsquoordinateur

Il est drsquoabord traduit dans un langage appeleacute laquo bytecode raquo langage drsquoune machine virtuelle (JVM Java Virtual Machine) deacutefinie par Sun

Ce langage est indeacutependant de lrsquoordinateur qui va exeacutecuter le programme

La compilation fournit du bytecode

Programme Java

Compilateur javac

Programme en bytecode indeacutependant de lordinateur

Programme sourcePremiereApplijava

compilateur

BytecodePremiereAppliclass

Compilation javac PremiereApplijava

Exeacutecution java PremiereAppli Dans toute application il faut une

classe publique qui contient main() La premiegravere meacutethode agrave ecirctre exeacutecuteacutee

Java Virtual Machine Les systegravemes qui veulent pouvoir exeacutecuter

un programme Java doivent fournir une JVM

A lheure actuelle tous les systegravemes ont une JVM (Linux Windows MacOshellip)

Il existe aussi depuis peu quelques JVM laquo en dur raquo sous forme de processeurs dont le langage natif est le bytecode elles sont rarement utiliseacutees (en raison de la portabiliteacute)

Le bytecode peut ecirctre exeacutecuteacute par nimporte quelle JVM

Si un systegraveme possegravede une JVM il peut exeacutecuter tous les fichiers class compileacutes sur nimporte quel autre systegraveme

BytecodePremierAppliclass

JVM sous MacOs

JVM sous Windows

JVM sous Lunix

Avantages de la JVM pour Internet

Gracircce agrave sa portabiliteacute le bytecode dune classe peut ecirctre chargeacute depuis une machine distante du reacuteseau et exeacutecuteacutee par une JVM locale

La JVM fait de nombreuses veacuterifications sur le bytecode avant son exeacutecution pour srsquoassurer qursquoil ne va effectuer aucune action dangereuse

La JVM apporte doncndash de la souplesse pour le chargement du code agrave

exeacutecuterndash mais aussi de la seacutecuriteacute pour lexeacutecution de ce code

Les veacuterifications effectueacutees sur le bytecode et leacutetape dinterpreacutetation de ce bytecode (dans le langage natif du processeur) ralentissent lexeacutecution des classes Java

Les techniques laquo Just In Time (JIT) raquo oulaquo Hotspot raquo reacuteduisent ce problegraveme elles

permettent de ne traduire quune seule fois en code natif et agrave la voleacutee les instructions qui sont exeacutecuteacutees

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Qursquoest ce que Java

Langage portable gracircce agrave lrsquoexeacutecution par une machine virtuelle JVM laquo Write once run everywhere raquo Indeacutependant des plates-formes Difficile agrave atteindre laquo Write once debug

everywhere raquo Simple orienteacute objet

Syntaxe tregraves proche du langage CC++ Pas de gestion de la meacutemoire de la part du

concepteur Tout est objet sauf les types primitifs Heacuteritage simple eacutepuration par rapport agrave C++

Sucircrndash fortement typeacutendash veacuterifications au chargement des classes et

durant leur exeacutecution Dynamique et distribueacute

Classes chargeacutees en fonction des besoins (le plus souvent par le reacuteseau)

Permet le paralleacutelisme de maniegravere simple faciliteacutes pour distribuer les traitements entre plusieurs machines

Une bregraveve histoire de Java Inventeacute par Sun 1990 reacutepondre agrave 5 objectifs

utiliser une meacutethodologie orienteacutee objet permettre agrave un mecircme programme decirctre exeacutecuteacute

sur plusieurs systegravemes dexploitation diffeacuterents pouvoir utiliser de maniegravere native les reacuteseaux

informatiques pouvoir exeacutecuter du code distant de maniegravere sucircre ecirctre facile agrave utiliser et posseacuteder les points forts

des langages de programmation orienteacutes objet comme le C++

Diffeacuterentes versions Java 102 250 classes lent Java 11 500 classes un peu plus rapide Java 2 2300 classes (diffeacuterents versions)

beaucoup plus rapide Java 5 3270 classes Java 6

3 eacuteditions J2SE Java 2 standard Edition JDK = J2SE

Development Kit aussi appeleacute SDK (Software Development Kit) pour certaines versions

J2EE Enterprise Edition qui ajoute les API pour eacutecrire des applications installeacutees sur les serveurs dans des applications distribueacutees servlet JSP EJBhellip

J2ME Micro Edition version alleacutegeacutee de Java pour eacutecrire des programmes embarqueacutes (cartes agrave puceJava card teacuteleacutephones portableshellip)

Premier programme Le code source du premier programme

anatomie drsquoune classe

public class PremiereAppli public static void main(String[] args)

Systemoutprintln(laquo Jrsquoapprends java)

Nom de la classe

Nom de la meacutethode

Public pour que tout Le monde puisse y acceacuteder

Afficher sur la sortie standard La chaicircne agrave afficher

Type de retour voidSignifie pas de valeur de retour

Compilation drsquoun code source

Un code source ne peut ecirctre exeacutecuteacute directement par un ordinateur

Il faut traduire ce code source dans un langage que lrsquoordinateur (le processeur de lordinateur) peut comprendre (langage natif)

Un compilateur est un programme qui effectue cette traduction

Compilation en Java rarr bytecode

En Java le code source nrsquoest pas traduit directement dans le langage de lrsquoordinateur

Il est drsquoabord traduit dans un langage appeleacute laquo bytecode raquo langage drsquoune machine virtuelle (JVM Java Virtual Machine) deacutefinie par Sun

Ce langage est indeacutependant de lrsquoordinateur qui va exeacutecuter le programme

La compilation fournit du bytecode

Programme Java

Compilateur javac

Programme en bytecode indeacutependant de lordinateur

Programme sourcePremiereApplijava

compilateur

BytecodePremiereAppliclass

Compilation javac PremiereApplijava

Exeacutecution java PremiereAppli Dans toute application il faut une

classe publique qui contient main() La premiegravere meacutethode agrave ecirctre exeacutecuteacutee

Java Virtual Machine Les systegravemes qui veulent pouvoir exeacutecuter

un programme Java doivent fournir une JVM

A lheure actuelle tous les systegravemes ont une JVM (Linux Windows MacOshellip)

Il existe aussi depuis peu quelques JVM laquo en dur raquo sous forme de processeurs dont le langage natif est le bytecode elles sont rarement utiliseacutees (en raison de la portabiliteacute)

Le bytecode peut ecirctre exeacutecuteacute par nimporte quelle JVM

Si un systegraveme possegravede une JVM il peut exeacutecuter tous les fichiers class compileacutes sur nimporte quel autre systegraveme

BytecodePremierAppliclass

JVM sous MacOs

JVM sous Windows

JVM sous Lunix

Avantages de la JVM pour Internet

Gracircce agrave sa portabiliteacute le bytecode dune classe peut ecirctre chargeacute depuis une machine distante du reacuteseau et exeacutecuteacutee par une JVM locale

La JVM fait de nombreuses veacuterifications sur le bytecode avant son exeacutecution pour srsquoassurer qursquoil ne va effectuer aucune action dangereuse

La JVM apporte doncndash de la souplesse pour le chargement du code agrave

exeacutecuterndash mais aussi de la seacutecuriteacute pour lexeacutecution de ce code

Les veacuterifications effectueacutees sur le bytecode et leacutetape dinterpreacutetation de ce bytecode (dans le langage natif du processeur) ralentissent lexeacutecution des classes Java

Les techniques laquo Just In Time (JIT) raquo oulaquo Hotspot raquo reacuteduisent ce problegraveme elles

permettent de ne traduire quune seule fois en code natif et agrave la voleacutee les instructions qui sont exeacutecuteacutees

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Sucircrndash fortement typeacutendash veacuterifications au chargement des classes et

durant leur exeacutecution Dynamique et distribueacute

Classes chargeacutees en fonction des besoins (le plus souvent par le reacuteseau)

Permet le paralleacutelisme de maniegravere simple faciliteacutes pour distribuer les traitements entre plusieurs machines

Une bregraveve histoire de Java Inventeacute par Sun 1990 reacutepondre agrave 5 objectifs

utiliser une meacutethodologie orienteacutee objet permettre agrave un mecircme programme decirctre exeacutecuteacute

sur plusieurs systegravemes dexploitation diffeacuterents pouvoir utiliser de maniegravere native les reacuteseaux

informatiques pouvoir exeacutecuter du code distant de maniegravere sucircre ecirctre facile agrave utiliser et posseacuteder les points forts

des langages de programmation orienteacutes objet comme le C++

Diffeacuterentes versions Java 102 250 classes lent Java 11 500 classes un peu plus rapide Java 2 2300 classes (diffeacuterents versions)

beaucoup plus rapide Java 5 3270 classes Java 6

3 eacuteditions J2SE Java 2 standard Edition JDK = J2SE

Development Kit aussi appeleacute SDK (Software Development Kit) pour certaines versions

J2EE Enterprise Edition qui ajoute les API pour eacutecrire des applications installeacutees sur les serveurs dans des applications distribueacutees servlet JSP EJBhellip

J2ME Micro Edition version alleacutegeacutee de Java pour eacutecrire des programmes embarqueacutes (cartes agrave puceJava card teacuteleacutephones portableshellip)

Premier programme Le code source du premier programme

anatomie drsquoune classe

public class PremiereAppli public static void main(String[] args)

Systemoutprintln(laquo Jrsquoapprends java)

Nom de la classe

Nom de la meacutethode

Public pour que tout Le monde puisse y acceacuteder

Afficher sur la sortie standard La chaicircne agrave afficher

Type de retour voidSignifie pas de valeur de retour

Compilation drsquoun code source

Un code source ne peut ecirctre exeacutecuteacute directement par un ordinateur

Il faut traduire ce code source dans un langage que lrsquoordinateur (le processeur de lordinateur) peut comprendre (langage natif)

Un compilateur est un programme qui effectue cette traduction

Compilation en Java rarr bytecode

En Java le code source nrsquoest pas traduit directement dans le langage de lrsquoordinateur

Il est drsquoabord traduit dans un langage appeleacute laquo bytecode raquo langage drsquoune machine virtuelle (JVM Java Virtual Machine) deacutefinie par Sun

Ce langage est indeacutependant de lrsquoordinateur qui va exeacutecuter le programme

La compilation fournit du bytecode

Programme Java

Compilateur javac

Programme en bytecode indeacutependant de lordinateur

Programme sourcePremiereApplijava

compilateur

BytecodePremiereAppliclass

Compilation javac PremiereApplijava

Exeacutecution java PremiereAppli Dans toute application il faut une

classe publique qui contient main() La premiegravere meacutethode agrave ecirctre exeacutecuteacutee

Java Virtual Machine Les systegravemes qui veulent pouvoir exeacutecuter

un programme Java doivent fournir une JVM

A lheure actuelle tous les systegravemes ont une JVM (Linux Windows MacOshellip)

Il existe aussi depuis peu quelques JVM laquo en dur raquo sous forme de processeurs dont le langage natif est le bytecode elles sont rarement utiliseacutees (en raison de la portabiliteacute)

Le bytecode peut ecirctre exeacutecuteacute par nimporte quelle JVM

Si un systegraveme possegravede une JVM il peut exeacutecuter tous les fichiers class compileacutes sur nimporte quel autre systegraveme

BytecodePremierAppliclass

JVM sous MacOs

JVM sous Windows

JVM sous Lunix

Avantages de la JVM pour Internet

Gracircce agrave sa portabiliteacute le bytecode dune classe peut ecirctre chargeacute depuis une machine distante du reacuteseau et exeacutecuteacutee par une JVM locale

La JVM fait de nombreuses veacuterifications sur le bytecode avant son exeacutecution pour srsquoassurer qursquoil ne va effectuer aucune action dangereuse

La JVM apporte doncndash de la souplesse pour le chargement du code agrave

exeacutecuterndash mais aussi de la seacutecuriteacute pour lexeacutecution de ce code

Les veacuterifications effectueacutees sur le bytecode et leacutetape dinterpreacutetation de ce bytecode (dans le langage natif du processeur) ralentissent lexeacutecution des classes Java

Les techniques laquo Just In Time (JIT) raquo oulaquo Hotspot raquo reacuteduisent ce problegraveme elles

permettent de ne traduire quune seule fois en code natif et agrave la voleacutee les instructions qui sont exeacutecuteacutees

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Une bregraveve histoire de Java Inventeacute par Sun 1990 reacutepondre agrave 5 objectifs

utiliser une meacutethodologie orienteacutee objet permettre agrave un mecircme programme decirctre exeacutecuteacute

sur plusieurs systegravemes dexploitation diffeacuterents pouvoir utiliser de maniegravere native les reacuteseaux

informatiques pouvoir exeacutecuter du code distant de maniegravere sucircre ecirctre facile agrave utiliser et posseacuteder les points forts

des langages de programmation orienteacutes objet comme le C++

Diffeacuterentes versions Java 102 250 classes lent Java 11 500 classes un peu plus rapide Java 2 2300 classes (diffeacuterents versions)

beaucoup plus rapide Java 5 3270 classes Java 6

3 eacuteditions J2SE Java 2 standard Edition JDK = J2SE

Development Kit aussi appeleacute SDK (Software Development Kit) pour certaines versions

J2EE Enterprise Edition qui ajoute les API pour eacutecrire des applications installeacutees sur les serveurs dans des applications distribueacutees servlet JSP EJBhellip

J2ME Micro Edition version alleacutegeacutee de Java pour eacutecrire des programmes embarqueacutes (cartes agrave puceJava card teacuteleacutephones portableshellip)

Premier programme Le code source du premier programme

anatomie drsquoune classe

public class PremiereAppli public static void main(String[] args)

Systemoutprintln(laquo Jrsquoapprends java)

Nom de la classe

Nom de la meacutethode

Public pour que tout Le monde puisse y acceacuteder

Afficher sur la sortie standard La chaicircne agrave afficher

Type de retour voidSignifie pas de valeur de retour

Compilation drsquoun code source

Un code source ne peut ecirctre exeacutecuteacute directement par un ordinateur

Il faut traduire ce code source dans un langage que lrsquoordinateur (le processeur de lordinateur) peut comprendre (langage natif)

Un compilateur est un programme qui effectue cette traduction

Compilation en Java rarr bytecode

En Java le code source nrsquoest pas traduit directement dans le langage de lrsquoordinateur

Il est drsquoabord traduit dans un langage appeleacute laquo bytecode raquo langage drsquoune machine virtuelle (JVM Java Virtual Machine) deacutefinie par Sun

Ce langage est indeacutependant de lrsquoordinateur qui va exeacutecuter le programme

La compilation fournit du bytecode

Programme Java

Compilateur javac

Programme en bytecode indeacutependant de lordinateur

Programme sourcePremiereApplijava

compilateur

BytecodePremiereAppliclass

Compilation javac PremiereApplijava

Exeacutecution java PremiereAppli Dans toute application il faut une

classe publique qui contient main() La premiegravere meacutethode agrave ecirctre exeacutecuteacutee

Java Virtual Machine Les systegravemes qui veulent pouvoir exeacutecuter

un programme Java doivent fournir une JVM

A lheure actuelle tous les systegravemes ont une JVM (Linux Windows MacOshellip)

Il existe aussi depuis peu quelques JVM laquo en dur raquo sous forme de processeurs dont le langage natif est le bytecode elles sont rarement utiliseacutees (en raison de la portabiliteacute)

Le bytecode peut ecirctre exeacutecuteacute par nimporte quelle JVM

Si un systegraveme possegravede une JVM il peut exeacutecuter tous les fichiers class compileacutes sur nimporte quel autre systegraveme

BytecodePremierAppliclass

JVM sous MacOs

JVM sous Windows

JVM sous Lunix

Avantages de la JVM pour Internet

Gracircce agrave sa portabiliteacute le bytecode dune classe peut ecirctre chargeacute depuis une machine distante du reacuteseau et exeacutecuteacutee par une JVM locale

La JVM fait de nombreuses veacuterifications sur le bytecode avant son exeacutecution pour srsquoassurer qursquoil ne va effectuer aucune action dangereuse

La JVM apporte doncndash de la souplesse pour le chargement du code agrave

exeacutecuterndash mais aussi de la seacutecuriteacute pour lexeacutecution de ce code

Les veacuterifications effectueacutees sur le bytecode et leacutetape dinterpreacutetation de ce bytecode (dans le langage natif du processeur) ralentissent lexeacutecution des classes Java

Les techniques laquo Just In Time (JIT) raquo oulaquo Hotspot raquo reacuteduisent ce problegraveme elles

permettent de ne traduire quune seule fois en code natif et agrave la voleacutee les instructions qui sont exeacutecuteacutees

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Diffeacuterentes versions Java 102 250 classes lent Java 11 500 classes un peu plus rapide Java 2 2300 classes (diffeacuterents versions)

beaucoup plus rapide Java 5 3270 classes Java 6

3 eacuteditions J2SE Java 2 standard Edition JDK = J2SE

Development Kit aussi appeleacute SDK (Software Development Kit) pour certaines versions

J2EE Enterprise Edition qui ajoute les API pour eacutecrire des applications installeacutees sur les serveurs dans des applications distribueacutees servlet JSP EJBhellip

J2ME Micro Edition version alleacutegeacutee de Java pour eacutecrire des programmes embarqueacutes (cartes agrave puceJava card teacuteleacutephones portableshellip)

Premier programme Le code source du premier programme

anatomie drsquoune classe

public class PremiereAppli public static void main(String[] args)

Systemoutprintln(laquo Jrsquoapprends java)

Nom de la classe

Nom de la meacutethode

Public pour que tout Le monde puisse y acceacuteder

Afficher sur la sortie standard La chaicircne agrave afficher

Type de retour voidSignifie pas de valeur de retour

Compilation drsquoun code source

Un code source ne peut ecirctre exeacutecuteacute directement par un ordinateur

Il faut traduire ce code source dans un langage que lrsquoordinateur (le processeur de lordinateur) peut comprendre (langage natif)

Un compilateur est un programme qui effectue cette traduction

Compilation en Java rarr bytecode

En Java le code source nrsquoest pas traduit directement dans le langage de lrsquoordinateur

Il est drsquoabord traduit dans un langage appeleacute laquo bytecode raquo langage drsquoune machine virtuelle (JVM Java Virtual Machine) deacutefinie par Sun

Ce langage est indeacutependant de lrsquoordinateur qui va exeacutecuter le programme

La compilation fournit du bytecode

Programme Java

Compilateur javac

Programme en bytecode indeacutependant de lordinateur

Programme sourcePremiereApplijava

compilateur

BytecodePremiereAppliclass

Compilation javac PremiereApplijava

Exeacutecution java PremiereAppli Dans toute application il faut une

classe publique qui contient main() La premiegravere meacutethode agrave ecirctre exeacutecuteacutee

Java Virtual Machine Les systegravemes qui veulent pouvoir exeacutecuter

un programme Java doivent fournir une JVM

A lheure actuelle tous les systegravemes ont une JVM (Linux Windows MacOshellip)

Il existe aussi depuis peu quelques JVM laquo en dur raquo sous forme de processeurs dont le langage natif est le bytecode elles sont rarement utiliseacutees (en raison de la portabiliteacute)

Le bytecode peut ecirctre exeacutecuteacute par nimporte quelle JVM

Si un systegraveme possegravede une JVM il peut exeacutecuter tous les fichiers class compileacutes sur nimporte quel autre systegraveme

BytecodePremierAppliclass

JVM sous MacOs

JVM sous Windows

JVM sous Lunix

Avantages de la JVM pour Internet

Gracircce agrave sa portabiliteacute le bytecode dune classe peut ecirctre chargeacute depuis une machine distante du reacuteseau et exeacutecuteacutee par une JVM locale

La JVM fait de nombreuses veacuterifications sur le bytecode avant son exeacutecution pour srsquoassurer qursquoil ne va effectuer aucune action dangereuse

La JVM apporte doncndash de la souplesse pour le chargement du code agrave

exeacutecuterndash mais aussi de la seacutecuriteacute pour lexeacutecution de ce code

Les veacuterifications effectueacutees sur le bytecode et leacutetape dinterpreacutetation de ce bytecode (dans le langage natif du processeur) ralentissent lexeacutecution des classes Java

Les techniques laquo Just In Time (JIT) raquo oulaquo Hotspot raquo reacuteduisent ce problegraveme elles

permettent de ne traduire quune seule fois en code natif et agrave la voleacutee les instructions qui sont exeacutecuteacutees

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Premier programme Le code source du premier programme

anatomie drsquoune classe

public class PremiereAppli public static void main(String[] args)

Systemoutprintln(laquo Jrsquoapprends java)

Nom de la classe

Nom de la meacutethode

Public pour que tout Le monde puisse y acceacuteder

Afficher sur la sortie standard La chaicircne agrave afficher

Type de retour voidSignifie pas de valeur de retour

Compilation drsquoun code source

Un code source ne peut ecirctre exeacutecuteacute directement par un ordinateur

Il faut traduire ce code source dans un langage que lrsquoordinateur (le processeur de lordinateur) peut comprendre (langage natif)

Un compilateur est un programme qui effectue cette traduction

Compilation en Java rarr bytecode

En Java le code source nrsquoest pas traduit directement dans le langage de lrsquoordinateur

Il est drsquoabord traduit dans un langage appeleacute laquo bytecode raquo langage drsquoune machine virtuelle (JVM Java Virtual Machine) deacutefinie par Sun

Ce langage est indeacutependant de lrsquoordinateur qui va exeacutecuter le programme

La compilation fournit du bytecode

Programme Java

Compilateur javac

Programme en bytecode indeacutependant de lordinateur

Programme sourcePremiereApplijava

compilateur

BytecodePremiereAppliclass

Compilation javac PremiereApplijava

Exeacutecution java PremiereAppli Dans toute application il faut une

classe publique qui contient main() La premiegravere meacutethode agrave ecirctre exeacutecuteacutee

Java Virtual Machine Les systegravemes qui veulent pouvoir exeacutecuter

un programme Java doivent fournir une JVM

A lheure actuelle tous les systegravemes ont une JVM (Linux Windows MacOshellip)

Il existe aussi depuis peu quelques JVM laquo en dur raquo sous forme de processeurs dont le langage natif est le bytecode elles sont rarement utiliseacutees (en raison de la portabiliteacute)

Le bytecode peut ecirctre exeacutecuteacute par nimporte quelle JVM

Si un systegraveme possegravede une JVM il peut exeacutecuter tous les fichiers class compileacutes sur nimporte quel autre systegraveme

BytecodePremierAppliclass

JVM sous MacOs

JVM sous Windows

JVM sous Lunix

Avantages de la JVM pour Internet

Gracircce agrave sa portabiliteacute le bytecode dune classe peut ecirctre chargeacute depuis une machine distante du reacuteseau et exeacutecuteacutee par une JVM locale

La JVM fait de nombreuses veacuterifications sur le bytecode avant son exeacutecution pour srsquoassurer qursquoil ne va effectuer aucune action dangereuse

La JVM apporte doncndash de la souplesse pour le chargement du code agrave

exeacutecuterndash mais aussi de la seacutecuriteacute pour lexeacutecution de ce code

Les veacuterifications effectueacutees sur le bytecode et leacutetape dinterpreacutetation de ce bytecode (dans le langage natif du processeur) ralentissent lexeacutecution des classes Java

Les techniques laquo Just In Time (JIT) raquo oulaquo Hotspot raquo reacuteduisent ce problegraveme elles

permettent de ne traduire quune seule fois en code natif et agrave la voleacutee les instructions qui sont exeacutecuteacutees

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Compilation drsquoun code source

Un code source ne peut ecirctre exeacutecuteacute directement par un ordinateur

Il faut traduire ce code source dans un langage que lrsquoordinateur (le processeur de lordinateur) peut comprendre (langage natif)

Un compilateur est un programme qui effectue cette traduction

Compilation en Java rarr bytecode

En Java le code source nrsquoest pas traduit directement dans le langage de lrsquoordinateur

Il est drsquoabord traduit dans un langage appeleacute laquo bytecode raquo langage drsquoune machine virtuelle (JVM Java Virtual Machine) deacutefinie par Sun

Ce langage est indeacutependant de lrsquoordinateur qui va exeacutecuter le programme

La compilation fournit du bytecode

Programme Java

Compilateur javac

Programme en bytecode indeacutependant de lordinateur

Programme sourcePremiereApplijava

compilateur

BytecodePremiereAppliclass

Compilation javac PremiereApplijava

Exeacutecution java PremiereAppli Dans toute application il faut une

classe publique qui contient main() La premiegravere meacutethode agrave ecirctre exeacutecuteacutee

Java Virtual Machine Les systegravemes qui veulent pouvoir exeacutecuter

un programme Java doivent fournir une JVM

A lheure actuelle tous les systegravemes ont une JVM (Linux Windows MacOshellip)

Il existe aussi depuis peu quelques JVM laquo en dur raquo sous forme de processeurs dont le langage natif est le bytecode elles sont rarement utiliseacutees (en raison de la portabiliteacute)

Le bytecode peut ecirctre exeacutecuteacute par nimporte quelle JVM

Si un systegraveme possegravede une JVM il peut exeacutecuter tous les fichiers class compileacutes sur nimporte quel autre systegraveme

BytecodePremierAppliclass

JVM sous MacOs

JVM sous Windows

JVM sous Lunix

Avantages de la JVM pour Internet

Gracircce agrave sa portabiliteacute le bytecode dune classe peut ecirctre chargeacute depuis une machine distante du reacuteseau et exeacutecuteacutee par une JVM locale

La JVM fait de nombreuses veacuterifications sur le bytecode avant son exeacutecution pour srsquoassurer qursquoil ne va effectuer aucune action dangereuse

La JVM apporte doncndash de la souplesse pour le chargement du code agrave

exeacutecuterndash mais aussi de la seacutecuriteacute pour lexeacutecution de ce code

Les veacuterifications effectueacutees sur le bytecode et leacutetape dinterpreacutetation de ce bytecode (dans le langage natif du processeur) ralentissent lexeacutecution des classes Java

Les techniques laquo Just In Time (JIT) raquo oulaquo Hotspot raquo reacuteduisent ce problegraveme elles

permettent de ne traduire quune seule fois en code natif et agrave la voleacutee les instructions qui sont exeacutecuteacutees

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Compilation en Java rarr bytecode

En Java le code source nrsquoest pas traduit directement dans le langage de lrsquoordinateur

Il est drsquoabord traduit dans un langage appeleacute laquo bytecode raquo langage drsquoune machine virtuelle (JVM Java Virtual Machine) deacutefinie par Sun

Ce langage est indeacutependant de lrsquoordinateur qui va exeacutecuter le programme

La compilation fournit du bytecode

Programme Java

Compilateur javac

Programme en bytecode indeacutependant de lordinateur

Programme sourcePremiereApplijava

compilateur

BytecodePremiereAppliclass

Compilation javac PremiereApplijava

Exeacutecution java PremiereAppli Dans toute application il faut une

classe publique qui contient main() La premiegravere meacutethode agrave ecirctre exeacutecuteacutee

Java Virtual Machine Les systegravemes qui veulent pouvoir exeacutecuter

un programme Java doivent fournir une JVM

A lheure actuelle tous les systegravemes ont une JVM (Linux Windows MacOshellip)

Il existe aussi depuis peu quelques JVM laquo en dur raquo sous forme de processeurs dont le langage natif est le bytecode elles sont rarement utiliseacutees (en raison de la portabiliteacute)

Le bytecode peut ecirctre exeacutecuteacute par nimporte quelle JVM

Si un systegraveme possegravede une JVM il peut exeacutecuter tous les fichiers class compileacutes sur nimporte quel autre systegraveme

BytecodePremierAppliclass

JVM sous MacOs

JVM sous Windows

JVM sous Lunix

Avantages de la JVM pour Internet

Gracircce agrave sa portabiliteacute le bytecode dune classe peut ecirctre chargeacute depuis une machine distante du reacuteseau et exeacutecuteacutee par une JVM locale

La JVM fait de nombreuses veacuterifications sur le bytecode avant son exeacutecution pour srsquoassurer qursquoil ne va effectuer aucune action dangereuse

La JVM apporte doncndash de la souplesse pour le chargement du code agrave

exeacutecuterndash mais aussi de la seacutecuriteacute pour lexeacutecution de ce code

Les veacuterifications effectueacutees sur le bytecode et leacutetape dinterpreacutetation de ce bytecode (dans le langage natif du processeur) ralentissent lexeacutecution des classes Java

Les techniques laquo Just In Time (JIT) raquo oulaquo Hotspot raquo reacuteduisent ce problegraveme elles

permettent de ne traduire quune seule fois en code natif et agrave la voleacutee les instructions qui sont exeacutecuteacutees

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

La compilation fournit du bytecode

Programme Java

Compilateur javac

Programme en bytecode indeacutependant de lordinateur

Programme sourcePremiereApplijava

compilateur

BytecodePremiereAppliclass

Compilation javac PremiereApplijava

Exeacutecution java PremiereAppli Dans toute application il faut une

classe publique qui contient main() La premiegravere meacutethode agrave ecirctre exeacutecuteacutee

Java Virtual Machine Les systegravemes qui veulent pouvoir exeacutecuter

un programme Java doivent fournir une JVM

A lheure actuelle tous les systegravemes ont une JVM (Linux Windows MacOshellip)

Il existe aussi depuis peu quelques JVM laquo en dur raquo sous forme de processeurs dont le langage natif est le bytecode elles sont rarement utiliseacutees (en raison de la portabiliteacute)

Le bytecode peut ecirctre exeacutecuteacute par nimporte quelle JVM

Si un systegraveme possegravede une JVM il peut exeacutecuter tous les fichiers class compileacutes sur nimporte quel autre systegraveme

BytecodePremierAppliclass

JVM sous MacOs

JVM sous Windows

JVM sous Lunix

Avantages de la JVM pour Internet

Gracircce agrave sa portabiliteacute le bytecode dune classe peut ecirctre chargeacute depuis une machine distante du reacuteseau et exeacutecuteacutee par une JVM locale

La JVM fait de nombreuses veacuterifications sur le bytecode avant son exeacutecution pour srsquoassurer qursquoil ne va effectuer aucune action dangereuse

La JVM apporte doncndash de la souplesse pour le chargement du code agrave

exeacutecuterndash mais aussi de la seacutecuriteacute pour lexeacutecution de ce code

Les veacuterifications effectueacutees sur le bytecode et leacutetape dinterpreacutetation de ce bytecode (dans le langage natif du processeur) ralentissent lexeacutecution des classes Java

Les techniques laquo Just In Time (JIT) raquo oulaquo Hotspot raquo reacuteduisent ce problegraveme elles

permettent de ne traduire quune seule fois en code natif et agrave la voleacutee les instructions qui sont exeacutecuteacutees

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Compilation javac PremiereApplijava

Exeacutecution java PremiereAppli Dans toute application il faut une

classe publique qui contient main() La premiegravere meacutethode agrave ecirctre exeacutecuteacutee

Java Virtual Machine Les systegravemes qui veulent pouvoir exeacutecuter

un programme Java doivent fournir une JVM

A lheure actuelle tous les systegravemes ont une JVM (Linux Windows MacOshellip)

Il existe aussi depuis peu quelques JVM laquo en dur raquo sous forme de processeurs dont le langage natif est le bytecode elles sont rarement utiliseacutees (en raison de la portabiliteacute)

Le bytecode peut ecirctre exeacutecuteacute par nimporte quelle JVM

Si un systegraveme possegravede une JVM il peut exeacutecuter tous les fichiers class compileacutes sur nimporte quel autre systegraveme

BytecodePremierAppliclass

JVM sous MacOs

JVM sous Windows

JVM sous Lunix

Avantages de la JVM pour Internet

Gracircce agrave sa portabiliteacute le bytecode dune classe peut ecirctre chargeacute depuis une machine distante du reacuteseau et exeacutecuteacutee par une JVM locale

La JVM fait de nombreuses veacuterifications sur le bytecode avant son exeacutecution pour srsquoassurer qursquoil ne va effectuer aucune action dangereuse

La JVM apporte doncndash de la souplesse pour le chargement du code agrave

exeacutecuterndash mais aussi de la seacutecuriteacute pour lexeacutecution de ce code

Les veacuterifications effectueacutees sur le bytecode et leacutetape dinterpreacutetation de ce bytecode (dans le langage natif du processeur) ralentissent lexeacutecution des classes Java

Les techniques laquo Just In Time (JIT) raquo oulaquo Hotspot raquo reacuteduisent ce problegraveme elles

permettent de ne traduire quune seule fois en code natif et agrave la voleacutee les instructions qui sont exeacutecuteacutees

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Java Virtual Machine Les systegravemes qui veulent pouvoir exeacutecuter

un programme Java doivent fournir une JVM

A lheure actuelle tous les systegravemes ont une JVM (Linux Windows MacOshellip)

Il existe aussi depuis peu quelques JVM laquo en dur raquo sous forme de processeurs dont le langage natif est le bytecode elles sont rarement utiliseacutees (en raison de la portabiliteacute)

Le bytecode peut ecirctre exeacutecuteacute par nimporte quelle JVM

Si un systegraveme possegravede une JVM il peut exeacutecuter tous les fichiers class compileacutes sur nimporte quel autre systegraveme

BytecodePremierAppliclass

JVM sous MacOs

JVM sous Windows

JVM sous Lunix

Avantages de la JVM pour Internet

Gracircce agrave sa portabiliteacute le bytecode dune classe peut ecirctre chargeacute depuis une machine distante du reacuteseau et exeacutecuteacutee par une JVM locale

La JVM fait de nombreuses veacuterifications sur le bytecode avant son exeacutecution pour srsquoassurer qursquoil ne va effectuer aucune action dangereuse

La JVM apporte doncndash de la souplesse pour le chargement du code agrave

exeacutecuterndash mais aussi de la seacutecuriteacute pour lexeacutecution de ce code

Les veacuterifications effectueacutees sur le bytecode et leacutetape dinterpreacutetation de ce bytecode (dans le langage natif du processeur) ralentissent lexeacutecution des classes Java

Les techniques laquo Just In Time (JIT) raquo oulaquo Hotspot raquo reacuteduisent ce problegraveme elles

permettent de ne traduire quune seule fois en code natif et agrave la voleacutee les instructions qui sont exeacutecuteacutees

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Le bytecode peut ecirctre exeacutecuteacute par nimporte quelle JVM

Si un systegraveme possegravede une JVM il peut exeacutecuter tous les fichiers class compileacutes sur nimporte quel autre systegraveme

BytecodePremierAppliclass

JVM sous MacOs

JVM sous Windows

JVM sous Lunix

Avantages de la JVM pour Internet

Gracircce agrave sa portabiliteacute le bytecode dune classe peut ecirctre chargeacute depuis une machine distante du reacuteseau et exeacutecuteacutee par une JVM locale

La JVM fait de nombreuses veacuterifications sur le bytecode avant son exeacutecution pour srsquoassurer qursquoil ne va effectuer aucune action dangereuse

La JVM apporte doncndash de la souplesse pour le chargement du code agrave

exeacutecuterndash mais aussi de la seacutecuriteacute pour lexeacutecution de ce code

Les veacuterifications effectueacutees sur le bytecode et leacutetape dinterpreacutetation de ce bytecode (dans le langage natif du processeur) ralentissent lexeacutecution des classes Java

Les techniques laquo Just In Time (JIT) raquo oulaquo Hotspot raquo reacuteduisent ce problegraveme elles

permettent de ne traduire quune seule fois en code natif et agrave la voleacutee les instructions qui sont exeacutecuteacutees

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Avantages de la JVM pour Internet

Gracircce agrave sa portabiliteacute le bytecode dune classe peut ecirctre chargeacute depuis une machine distante du reacuteseau et exeacutecuteacutee par une JVM locale

La JVM fait de nombreuses veacuterifications sur le bytecode avant son exeacutecution pour srsquoassurer qursquoil ne va effectuer aucune action dangereuse

La JVM apporte doncndash de la souplesse pour le chargement du code agrave

exeacutecuterndash mais aussi de la seacutecuriteacute pour lexeacutecution de ce code

Les veacuterifications effectueacutees sur le bytecode et leacutetape dinterpreacutetation de ce bytecode (dans le langage natif du processeur) ralentissent lexeacutecution des classes Java

Les techniques laquo Just In Time (JIT) raquo oulaquo Hotspot raquo reacuteduisent ce problegraveme elles

permettent de ne traduire quune seule fois en code natif et agrave la voleacutee les instructions qui sont exeacutecuteacutees

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Les veacuterifications effectueacutees sur le bytecode et leacutetape dinterpreacutetation de ce bytecode (dans le langage natif du processeur) ralentissent lexeacutecution des classes Java

Les techniques laquo Just In Time (JIT) raquo oulaquo Hotspot raquo reacuteduisent ce problegraveme elles

permettent de ne traduire quune seule fois en code natif et agrave la voleacutee les instructions qui sont exeacutecuteacutees

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Plate-forme JAVA

Machine reacuteelle

JVM

Programme Java

API

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Votre environnement de deacuteveloppement

SE Linux ou Windows Editeur de texte (emacs wordhellip) Compilateur (javac) Interpreacuteteur de bytecode (java) Aide en ligne Geacutenerateur automatique de documentation

(javadoc) Deacutebogeur (jbd) hellip Un IDE Eclipse

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Structure drsquoune application

Placer une classe dans un fichier source

Placer les meacutethodes dans une classe

Placer les instructions dans les meacutethodes

Fichier source

Fichier de classes

Meacutethode 1instructions

Meacutethode 2instructions

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Exemples 1 classe point Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) un constructeurx = x1y = y1

public double distance(Point p) une meacutethodereturn Mathsqrt((x-px)(x-px) + (y-py)(y-py))

public static void main(String[] args) Point p1 = new Point(1 2) on creacutee deux objetsPoint p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

2 classes et 1 fichier Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Teste la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Compilation et exeacutecution de laclasse Point

La compilation du fichier Pointjavajavac Pointjava fournit 2 fichiers

classes Pointclass et TestPointclass

On lance lrsquoexeacutecution de la classe TestPoint

qui a une meacutethode main()java TestPoint

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

2 classes dans 2 fichiers Modeacutelise un point de coordonneacutees x y public class Point private int x y

public Point(int x1 int y1) x = x1 y = y1public double distance(Point p) return Mathsqrt((x-px)(x-px) + (y-py)(y-py))

Pour tester la classe Point class TestPoint

public static void main(String[] args) Point p1 = new Point(1 2)Point p2 = new Point(5 1)Systemoutprintln(Distance + p1distance(p2))

Fichier Pointjava

Fichier TestPointjava

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Architecture geacuteneacuterale drsquoun programme Java

Programme source Java = ensemble de fichiers

laquo java raquo

Chaque fichier laquo java raquo contient une ou plusieurs deacutefinitions de classes

Au plus une deacutefinition de classe public par fichier laquo java raquo avec nom du fichier = nom de la classe publique

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Chargement dynamique des classes

Durant lrsquoexeacutecution drsquoun code Java les classes(leur bytecode) sont chargeacutees dans la JVM aufur et agrave mesure des besoins Une classe peut ecirctre chargeacuteendash depuis la machine locale (le cas le plus

freacutequent)ndash depuis une autre machine par le reacuteseaundash par tout autre moyen (base de donneacuteeshellip)

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Autre exemple Lutilisateur fournit son age en argument de

ligne de commandepublic class Age public static void main(String args[]) int age age = IntegerparseInt(args[0]) Systemoutprintln(Vous avez + age +

ans) Exeacutecution java Age 5 Reacutesultat Vous

avez 5 ans

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

String est une classe String args[] est un tableau de chaicircnes

de caractegraveres qui stocke les arguments fourni en ligne de commande

int est un type primitif Integer est une classe drsquoobjets de type

int parseInt() est une meacutethode de la classe

Integer qui convertit String en int

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Applications indeacutependanteset applets

Java permet de deacutevelopper deux sortes de programmes Applications indeacutependantes Applets exeacutecuteacutees dans

lrsquoenvironnementJVM drsquoun navigateur Web et chargeacutees par une page HTML

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Application indeacutependante

Exeacutecution de la classe de lancement de lrsquoapplication (dite classe principale main en anglais) par exemple

java TestPoint1048708 java lance lrsquointerpreacutetation du code de lameacutethode main() de la classe

TestPoint

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Applet

Objet de la classe Java Applet reacutefeacuterenceacute dans une page Web (eacutecrite dans le langage HTML)

Le lancement dune (un ) applet(te ) se fait quand la partie de la page Web qui reacutefeacuterence lapplet est afficheacutee par le client Web

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Exemple de page Web qui contient une appletltHTMLgtltHEADgtltTITLEgt Une applet ltTITLEgtltHEADgtltBODYgtltH2gt Exeacutecution drsquoune applet ltH2gtltAPPLET code=HelloAppletclasswidth=500height=300gt

Votre navigateur ne peut exeacutecuter une appletltAPPLETgtltBODYgtltHTMLgt

Dimensions de lemplacementreacuteserveacute agrave laffichage de lapplet

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

import javaawtGraphicsimport javaappletAppletpublic class HelloApplet extends

Applet public void paint(Graphics g) gdrawString(Hello world 50 25)

Zone ougrave commenceralaffichage x = 50 pixels

y = 25 pixels

Repreacutesente lrsquoemplacementde la page Web ougrave lrsquoapplet

srsquoaffichera

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Eacutetapes pour lrsquoexeacutecution drsquoune applet

ClientHTTP

ServeurHTTP

Exeacutecution de lrsquoappletDans la JVM du client

1 Demande chargement pageWeb qui contient une applet

2 Chargement de la page Webde la classe de lrsquoapplet

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Remarques Le navigateur a sa propre machine virtuelle Un programme Java speacutecial deacutemarreacute par lenavigateur va lancer certaines meacutethodes de

laclasse Applet init() start() stop()

destroy() paint() init() est exeacutecuteacute seulement quand lrsquoappletest lanceacutee pour la premiegravere fois paint() dessine lapplet dans la page Web

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Exeacutecution de lrsquoapplet

Soit A partir du navigateur A partir de lrsquoappletviewer

Javac HelloAppletjava -gt HelloAppletclass

Appletviewer HelloApplethtml

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

Utiliteacute des applets Les applets permettent de faire des

pages Webplus riches (gracircce aux possibiliteacutes offertes

par Java) La page Web peut contenir

ndash des animations ou des mises en forme complexes

pour mettre en valeur certaines informationsndash des reacutesultats de calculs complexesndash des informations laquo dynamiques raquo (pas connues

aumoment ougrave la page Web statique est creacuteeacutee)trouveacutees en interrogeant une base de donneacutees

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3

TD1

Exo1 Reprendre les exercices eacutetudieacutes en cours creacuteez les applications compilez et exeacutecutez

Exo2 Creacuteer une application qui calcule la somme de 3 nombres donneacutes en arguments de ligne de commande

  • Slide 3