Java

Cours et TD/TP Java



Année 2010-2011  

Plan

Généralité

Java est une technologie composée d'un langage de programmation orienté objet et d'un environnement d'exécution. Préalablement nommé Oak, il a été créé par James Gosling et Patrick Naughton chez Sun Microsystems avec le soutien de Bill Joy.

  • Le langage Java fut officiellement présenté le 23 mai 1995 au SunWorld.
  • Le concept Java est basé sur le langage Java, la machine virtuelle Java et l'API Java (ces deux derniers composants forment l'environnement d'exécution, ou JRE, pour Java Runtime Environment).
Oak ("Chêne") est le nom qui est donné à Java dans un premier temps. Mais comme celui-ci est déjà utilisé on lui donne le nom de Java en l'honneur du nom argotique (en américain de Nord) du breuvage le plus consommé par les programmeurs, c'est-à-dire le café, dont une partie de la production vient de l'île de Java

Concepts de base

La première caractéristique de Java est d'être orienté objet. Tout y est objet ou presque ... A la source de l'objet, la classe. La classe est le support de l'encapsulation : c'est un ensemble de données et de fonctions regroupées dans une même entité. Une classe est une description abstraite d'un objet. Les fonctions qui opèrent sur les données sont appelées des méthodes. Instancier une classe consiste à créer un objet sur son modèle. Pour accéder à une classe il faut en déclarer une instance de classe ou objet. Une classe comporte sa déclaration, des variables et la définition de ses méthodes. Une classe se compose en deux parties : un en tête et un corps. Le corps peut être divisé en 2 sections : la déclaration des données et des constantes on parle souvent d'attributs et la définition des méthodes. Les méthodes et les données sont pourvues de qualitficatifs de visibilité qui gèrent leur accessibilité par les composants hors de la classe.

La deuxième caractéristique du langage, c'est la portabilité cela signifie que les programmes écrits en Java doivent fonctionner sur plusieurs types de matériel informatique. Un programmeur doit pouvoir écrire un programme une seule fois et, le faire fonctionner dans n'importe quel ordinateur. Ceci est permis en compilant le code source d'un programme Java dans un pseudo-code intermédiaire appelé bytecode Java. Le code est par la suite exécuté par une machine virtuelle la JVM, un programme écrit en code natif sur le matériel cible qui interprète le pseudo-code Java en code utilisable pour le matériel concerné. De plus, des bibliothèques sont offertes pour fournir l'accès à des fonctionnalités propres à la machine cible -- comme les graphiques ou le réseau -- d'une manière unifiée. Le langage Java offre aussi le support au parallèlisme et à la distribution.

Java est un langage pour le Web. La plate-forme Java fut l'un des premiers systèmes à offrir le support de l'exécution du code à partir de sources distantes. Une applet peut fonctionner dans le navigateur Web d'un utilisateur, exécutant du code téléchargé d'un serveur HTTP. Le code fonctionne dans un espace très restrictif, ce qui protège l'utilisateur des codes erronés ou mal intentionnés.

public class Complexe
{
private double re,im;
public static final Complexe I = new Complexe(0,1);
public Complexe(double reel, double imaginaire)
{
re = reel;
im= imaginaire;
}

public double partieReelle()
{ return re;}

public double partieImaginaire()
{ return im;}

public double module()
{ return Math.sqrt(re*re + im*im);}

public Complexe add(Complexe z)
{ return new Complexe(re+z.partieReelle(),
im + z.partieImaginaire());}

public Complexe mul(Complexe z)
{
double zre = z.partieReelle();
double zim = z.partieImaginaire();
return new Complexe( re*zre - im*zim ,
re*zim + im*zre);
}

public static Complexe add(Complexe z1, Complexe z2)
{
double z1re = z1.partieReelle();
double z2re = z2.partieReelle();
double z1im = z1.partieImaginaire();
double z2im = z2.partieImaginaire();
return new Complexe (z1re + z2re, z1im + z2im);
}

public static Complexe mul(Complexe z1, Complexe z2)
{
double z1re = z1.partieReelle();
double z2re = z2.partieReelle();
double z1im = z1.partieImaginaire();
double z2im = z2.partieImaginaire();
return new Complexe (z1re*z2re - z1im*z2im ,
z1re*z2im + z1im*z2re);
}
}

public class UseComplexe
{
public static void main(String args[])
{
z1 = new Complexe (1,1);
z2 = new Complexe (0,0);
z3 = z1.add(z2);
}
}

Cours

Ce cours fait suite à celui de l1 et du premier semestre de l2. Nous aborderons en particulier :
  • Les exceptions en Java
  • L'héritage
  • Le polymorphisme
  • La classe Object
  • Les Entrées/Sorties
  • Graphismes et fenétrages
  • Les threads
  • Les collections
Les transparents de cours : version provisoire , en .2x2 ou en .4x4 N'oubliez pas de configurer acroread ou xpdf.
  • Pour acroread menu edit puis preference et enfin weblink
  • Pour xpdf modifier votre fichier xpdfrc en précisant urlCommand.

Les TD/TP

Vous trouverez ici un lien concernant les TD et les TP qui sont une application directe du cours. La version évoluera en fonction de notre avancement et j'ajouterai quelques corrections (pas toutes).
Les sujets de TD et TP jusqu'aux threads.

Vous pouvez essayer de réaliser ce problème qui vous permettra de réviser les concepts majeurs de swing.

Pour désarchiver les corrections :
  • Enregistrer le fichier dans un répertoire donné en cliquant avec le bouton droit de la souris. "Enregistrer la cible sous"
  • Dans votre répertoire tapez l'une des commande suivantes :
    • Un fichier fichier.tar : tar xvf fichier.tar
    • Un fichier fichier.tar.gz : tar zxvf fichier.tar.gz
    • Un fichier fichier.tar.bz2 : tar jxvf fichier.tar.bz2
  • Vous pouvez également utiliser ark.
Si vous avez un problème d'encodage :
  • $ iconv --from-code=ISO-8859-15 --to-code=UTF-8 nomDuFichierEncodeEnISO > nomDuFichierEncodeEnUTF8


Corrections

Partiel-Exam

Quelques références