Cours JAVA

Formation pour apprendre ensemble le package java Net


Télécharger Formation pour apprendre ensemble le package java Net

★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Java

Cours 6 : le paquetage (package)

Cours inspiré des cours de Richard Grin, Antoine Tabbone et Hazel Everett 1

  Définition

  • Les classes Java sont regroupées en paquetages (packages en anglais)
  • Ils correspondent aux « bibliothèques » des autres langages
  • Les paquetages offrent un niveau de modularité supplémentaire pour

-  réunir des classes suivant un centre d'intérêt commun

-  la protection des attributs et des méthodes

 Attribution d'un nom

-  Se fait au niveau du fichier source

-  Exemple

//Fichier Vehicule..java package ex1; public class Vehicule {

...

}

//Fichier Voiture_Composee.java package ex1; public class Voiture_Composee {

...

}

//Fichier Voiture_Derivee.java package ex1; public class Voiture_Derivee

extends Vehicule {...

}

//Fichier Main.java package ex1;

public class Main {

public static void main(String[]

args) {

...

}

}

-  De cette manière, tous les fichiers seront rassemblés comme si ilsétaient un

-  De plus, cela protège les classes de l'extérieur. En effet, si vous êtessous Eclipse, par ex., vous pouvez construire un projet contenant plusieurs packages sans conflit de nom entre des classes de même nom

-  Quelques paquetages du SDK

java.lang : classes de base de Java

java.util : utilitaires

java.io : entrées-sorties

java.awt : interface graphique

javax.swing : interface graphique avancée

java.applet : applets

java.net : réseau

java.rmi : distribution des objets

  Intervention du paquetage dans le nommage d'une classe en Java

-  Le nom complet d'une classe (qualifiednamedans la spécification du langage Java) est le nom de la classe préfixé par le nom du paquetage :

java.util.ArrayList

-  Une classe du même paquetage peut être désignée par son nom « terminal »

Les classes du paquetage java.util peuvent désigner la classe ci-dessus par « ArrayList »

-  Une classe d'un autre paquetage doit être désignée par son nom complet, c.à .d avec le préfixe

  Importer une classe d'un paquetage

-  Pour pouvoir désigner une classe d'un autre paquetage par son nom terminal, il faut l'importer import java.util.ArrayList;

public class Classe {

...

ArrayList liste = new ArrayList();

...

-  On peut utiliser une classe sans l'importer

l'importation permet seulement de raccourcir le nom d'une classe dans le code :

è dans ce cas, il faut indiquer le nom total java.util.ArrayList Liste = new java.util.ArrayList();

nImporter toutes les classes d'un paquetage

-  On peut importer toutes les classes d'un paquetage :

import java.util.*;

-  Les classes du paquetage java.util sont implicitement importées

Lever une ambiguuité

-  On aura une erreur à  la compilation si n 2 paquetages ont une classe qui a le même nom

-  Exemple

Ces deux paquetages ont la classe List en commun import java.awt.*; import java.util.*;



- On peut le faire, mais pour lever l'ambiguuité, on devra à  chaque fois donner le nom complet de la classe. Par exemple,

java.util.List l = getListe();

n Importer des constantes static

-  Depuis le JDK 5.0 on peut importer des variables ou méthodes statiques d'une classe ou d'une interface

è On allège ainsi le code, par exemple, pour l'utilisation des fonctions mathématiques de la classe java.lang.Math

-  A utiliser avec précaution pour ne pas nuire à  la lisibilité du code (il peut être plus difficile de savoir d'o๠vient une constante ou méthode)

nExemple d'import static

Import static java.lang.Math.*; // importer tous les

//membres statiques de la classe java.lang.Math

Import java.util.*;

Public class Machin {

...

X = max(sqrt(abs(y)), sin(y));  // au lieu de Math.sqrt,

//Math.sin...

- On peut importer une seule variable ou méthode :

Import static java.lang.Math.PI;

X = 2* PI;

n Ajout d'une classe dans un paquetage

- Il suffit d'indiquer le nom du package au début du fichier - Exemple :

//Fichier Lait.java package ex2; public class Lait extends Liquide{ public void

imprimer(){ System.out.println("je suis du lait");

}

}

//Fichier Tasse.java package ex2; public class Tasse {

private Liquide l; public void AjouterLiquide (Liquide l) { this.l = l; } public void imprimer() {

l.imprimer();

}

}

Sous-paquetage

-  Un paquetage peut avoir des sous-paquetages

-  Par exemple

java.awt.event est un sous-paquetage de java.awt

- L'importation des classes d'un paquetage n'importe pas les classes des sous-paquetages ; - on devra écrire par exemple :

import java.awt.*; import java.awt.event.*;

nNom d'un paquetage

-  Le nom d'un paquetage est hiérarchique : java.awt.event

-  Il est conseillé de préfixer ses propres paquetages par son adresse Internet :

Fr.unice.toto.liste

Com.oreilly.projets.LivresJava

Placement d'un paquetage

-  N'importe oà¹

 Cependant, il faut respecter le chemin dans les import

-  Dans Eclipse

Créer un package

Puis créer les classes au fur et à  mesure dans le package

Ensuite Eclipse s'arrange pour trouver le compilateur et le chemin du paquetage

-  Compilation

Il faut respecter la hiérarchie des import

Exemple complet

class UtiliseClass

DansPaquetage.java  public static void main(String[] arg)

package coursJava.monPaquet; {

public class DansPaquetage  (new DansPaquetage())

{ .faire(); public void faire()  

{    }

System.out.println("bonjour depuis monPaquet");

}

}

PetitEssai.java

package autrePaquet; import coursJava.monPaquet.*; class PetitEssai

{ public static void main(String[] arg)

{

(new DansPaquetage()).faire();

}

}

Exemple complet : compilation

    -  Pour UtiliseClass.java

on se met dans Cours6-Exemples

Javac UtiliseClass.java è UtiliseClass.class et DansPaquetage.class

    -  Pour PetitEsai.java

n on se met également dans Cours6-Exemples pour respecter la hiérarchie indiquée dans les import

package coursJava.monPaquet;  import coursJava.monPaquet.*; public class DansPaquetage  class PetitEssai { {

...       ...

}       }

Le paquetage

nEncapsulation d'une classe dans un paquetage

-  Si la définition de la classe commence par public class



n la classe est accessible de partout

-  Sinon, la classe n'est accessible que depuis les classes du même paquetage

Exercice

nCours6-TD6

- Exercices 1-3

Le paquetage

Archive Java : JAR (Java Archive)

-  Avec la croissance des réseaux, les applications sont vouées à  voyager, il faut donc s'assurer :

qu'elles restent intactes

que tous les éléments (packages) de l'application soient présents

de rendre l'application la moins gourmande en espace

-  Ainsi, Java propose l'utilitaire jar dans le JDK, un utilitaire permettant de rassembler les différentes classes (fichiers

.class) d'une application au sein d'une archive compressée, appelé package, afin d'en assurer l'intégrité et la taille

Le paquetage

n Archive Java : JAR (Java Archive)

-  Grà¢ce à  cet utilitaire, il est possible d'appeler à  partir d'une page Web l'ensemble des classes d'une applet en faisant uniquement référence à  l'archive (dont l'extension est .jar)

http://sardes.inrialpes.fr/~bouchena/teaching/POO/Tda9_Jar/index.htm

Opérations de base

n Création d'un fichier Jar

-  jar cfv fichier.jar fichier_inclus1 ... fichier_inlcusn

c indique qu'il faut créerune archive Jar

findique que le résultat sera redirigé dans un fichier

v (pour verbose) fait afficher les commentaires associés à  l'exécution de la commande, en particulier, les noms des éléments ajoutés au fichier d'archive au fur et à  mesure qu'ils y sont ajoutés

fichier.jarest le nom du fichier d'archive créé

les fichier_inclus1 ... fichier_inlcusnsont une suite de noms de fichiers qui seront inclus dans l'archive ; ces noms peuvent utiliser des * ; s'ils font référence à  des répertoires, leur contenu sera récursivement inclus dans l'archive

Opérations de base

Création d'un fichier Jar

-  Soit le répertoire cours6/monJar contenant

Point.class, Rectangle.class et surfRectangle.class n Manifest.txt contenant la ligne : Main-Class: surfRectangle

jar cfv monJar.jar *.class

-  génère un fichier d'archive, monJar.jar placé dans le répertoire courant

-  La commande génère également un fichier MANIFEST pour cette archive qui sera dans monJar.jar

Visualisation du contenu d'un fichier Jar

-  La commande de base pour visualiser le contenu d'un fichier Jar est :

jar tf fichier.jar

-  O๠:

t fait afficher la tabledu contenu de l'archive Jar findique que l'archive Jar à  visualiser est contenu dans le fichierpassé en paramètre 

Extraction du contenu d'un fichier Jar

jar xfv fichier.jar [fichier_a_extraire1 ... fichier_a_extrairen]

-  O๠:

x indique qu'il faut extrairele contenu d'une archive Jar

findique que l'archive Jar considérée est un fichierpassé en paramètre

v (pour verbose) fait afficher les commentaires associés à  l'exécution de cette commande fichier.jarest le nom du fichier d'archive considéré

éventuellement les fichier_a_extraire1 ... fichier_a_extrairen qui sont une suite de noms de fichiers qui seront extrait de l'archive ; si ces noms ne sont pas spécifiés, l'ensemble du contenu de l'archive sera extrait.

-  le contenu extrait est placé dans le répertoire courant

-  Le fichier Jar demeure, quant à  lui, inchangé

Modification d'un fichier Jar

jar uf fichier.jar [nouveau_fichier1 ... nouveau_fichiern]

-  O๠:

u (update) indique qu'il faut mettre à  jourune archive Jar

findique que l'archive Jar considérée est un fichierpassé en paramètre

fichier.jarest le nom du fichier d'archive considéré



éventuellement les nouveau_fichier1 ... nouveau_fichiernqui sont une suite de noms de fichiers à  ajouter à  l'archive.

-  Cette commande permet d'ajouter des fichiers à  une archive Jar ou de mettre à  jour des fichiers déjà  contenus dans l'archive

Utilisation d'une librairie Jar

-  Créez un répertoire Visageet copiez-y le fichier AppliVisage1.java

-  Placez-vous dans le répertoire Visageet exécutez la commande de compilation suivante :

javac AppliVisage1.java

    -  Que constatez-vous ? Expliquez.

-  Copiez la librairie MyLib.jardans le répertoire Visagepuis exécutez la commande de compilation suivante :

   javac -classpath MyLib.jar AppliVisage1.java

    -  Expliquez

-  Donnez la ligne de commande qui permet d'exécuter le programme Java AppliVisage1

Exécution d'une application Java en ligne de commande à  partird'un fichier Jar

-  Créez un répertoire Helloet copiez-y le fichier Jar Hello1.jar n Quel est le contenu du fichier Hello1.jar?

-  Lancez l'application HelloWorlden exécutant la commande suivante :

java -classpath Hello1.jar HelloWorld

-  Copiez le fichier Jar Hello2.jarpuis exécutez la commande suivante :

   java -jar Hello2.jar

-  Que fait cette commande ?

-  Expliquez pourquoi c'est l'application HelloWorldqui a été exécutée par cette commande et pas un des autres programmes

inclus dans le fichier Jar Hello2.jar(voir le contenu du fichier

META-INF/MANIFEST.MFinclus dans Hello2.jar)

jar umf ajout-manifest fichier.jar [nouveau_fichier1 ... nouveau_fichiern]

-  u (update) indique qu'il faut modifierune archive Jar

-  m (manifest) indique que des options vont être ajoutées au MANIFEST de l'archive Jar créée

-  findique que l'archive Jar sera créée dans un fichier

-  ajout-manifestest le nom d'un fichier texte qui contient les options que l'on souhaite ajouter au MANIFEST (ex. Main-Class: classnameou Class-Path: servlet.jar infobus.jaracme/beans.jar)

-  fichier.jarest le nom du fichier d'archive considéré

Faites les changements nécessaires pour que la commande java -jar Hello1.jar lance l'exécution de la classe AppliVisage1(au lieu de HelloWorldactuellement)

Donnez la ligne de commande qui permet d'effectuer ce changement.

Sous Eclipse

-  Pour ajouter un jar qui se trouve dans le workspace

bouton droit sur le projet -> propriétés -> java build path -> onglet librairies : Add jar

-  Pour un ajouter un jar hors du workspace

bouton droit sur le projet -> propriétés -> java build path -> onglet librairies : Add external jar


311