Upload
jefferson-tommy
View
14
Download
0
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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