Plan (hide)
- 1. Généralité
- 2. Concepts de base
- 3. Cours
- 4. Les TD/TP
- 4.1 Corrections
- 5. Examens et autres désagréments
- 5.1 Travaux demandés
- 6. Quelques références
1. Généralité
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
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).
2. 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 qualificatifs 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); } }
3. Cours
Ce cours fait suite à celui de l1 et du premier semestre de l2. Nous aborderons en particulier :
- L'héritage ;
- Le polymorphisme ;
- La classe
Object
; - Les exceptions en Java ;
- Généricité de type, lambda, références de méthodes et streams ;
- Les collections ;
- Les Entrées/Sorties ;
- Les threads ;
- Java Fx, graphismes et fenêtrages (cette partie pourra ne pas être traitée) ;
Les transparents de cours sont ici. Les exemples ne sont pas toujours accessibles via le fichier pdf, voici une archive dans laquelle vous trouverez les fichiers sources. Attention, c'est éventuellement le bazar, ils ont été commentés en cours, ainsi certains sont mal écrits et/ou ne tiennent pas compte des nouvelles possibilités de Java. Vous avez également un complément sous la forme d'une présentation rapide concernant les threads, l'EDT et swing.
Java 5 a introduit la notion de généricité de type, cela est présenté sommairement dans les transparents. Vous trouverez une présentation plus complète sur le sujet, ici ainsi que sur les collections qui utilisent ce mécanisme, sans oublier un exercice. Depuis Java 1.8 les expressions lambdas, les références de méthodes et les streams sont largement utilisés. Un premier survol vous est proposé.
Depuis java 7. L'api NIO 2
remplace la classe File
de la très ancienne api IO
. Une série de diapositives présente cela. Un exemple/exercice est également proposé.
La notion de threads est également redéveloppée et complétée et vous trouverez un exercice ici, vous permettant de mettre en oeuvre les différents concepts.
La bibliothèque JavaFX remplace désormais officiellement Swing. Plutôt que mettre à jour mes transparents j'en ai fait une présentation séparée.
4. Les TD/TP
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
Un outil pratique pour écrire vos programmes Java est l'environnement de développement intégré (IDE Integrated Development Environment en anglais) Eclipse. Il simplifie l'écriture de code en proposant un certain nombre de raccourcis et d'aide. Il est gratuit et disponible pour la plupart des systèmes d'exploitation. Un rapide aperçu vous est proposé ici.
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).
Vous pouvez également essayer de réaliser ce problème qui vous permettra de réviser les concepts majeurs de swing.
Rappelez vous qu'un langage s'apprend en pratiquant, vous apprendrez bien plus de vos erreurs que de la lecture de code écrit par d'autre, au moins dans un premier temps.
4.1 Corrections
Elles viendront au fil du temps.
5. Examens et autres désagréments
- Examen du 14 Juin 2005 :
- Énoncé ;
- Correction ;
- Partiel du 6 Mai 2011 :
- Énoncé ;
- Correction.
- Examen 20 mai 2015 :
- Énoncé ;
- Examen 2017 :
- Énoncé ;
5.1 Travaux demandés
En général 1 ou 2 dans le semestre.
6. Quelques références
- Site Web officiel de Java.
- Eclipse Environnement de développement Java.
- Documentation java (8).
- Documentation java (15).
- Java Code convention : conseils de présentation pour vos codes Java (page non maintenue)....
- Tutoriels java, une source très intéressante.
- Développons en java de JM. Doudoux.