1. QUELQUES GENERALITES
 
 
Précédent Suivant
 
Quelques généralités
Pourquoi Java ?
* Motivations
* Langage objet simple
* Sécurisé
* Adapté au réseau
* Portable
* Performant
* Langage proposé par Sun en 1995
* Racheté par Oracle en 2010
* Objectif: embarqué dans tout type d'appareil
* Par exemple, une cafetière ==> la légende
* Java = café en argot américain
Hello World !
* Exemple: fichier "Hello.java"
* public class Hello {
public static void main(String[] args) {
System.out.println("Hello World !");
}
}
* Compilation du programme
* javac -classpath . Hello.java
* Résultat: fichier "Hello.class"
* Exécution du programme
* Hello.class ==> ne fonctionne pas, ce n'est pas un exécutable
* java -classpath . Hello
Compilation et code binaire
* Exemple: C++
* Compilation
==> code spécifique
* Recompilation nécessaire
sur chaque type de machine
Pseudo-code binaire et machine virtuelle
* Compilation
==> "pseudo" code binaire
* Similaire à un code machine
* Rapide à interpréter
* Machine virtuelle
* JVM: Java Virtual Machine
* Permet d'interpréter le code
* Portable sur toute machine
* Equipée d'une JVM
* Ralentissement ?
* Léger
* Optimisation avec JIT
(Just In Time)
Compiler et exécuter un code Java
* Compilation du fichier "Liste.java"
* javac -classpath classpath Liste.java
* Génère un fichier "Liste.class"
* Un fichier ".class" par classe
* Plusieurs classes dans un fichier ==> plusieurs fichiers ".class"
* S'occupe des dépendances
* Compile les classes dont dépend "Liste" si nécessaire
* "classpath" = liste des chemins où trouver les classes
* Variable d'environnement "CLASSPATH"
* Evite de préciser à chaque fois le "classpath"
* Exécution de la classe "Liste"
* java -classpath classpath Liste
* On donne juste le nom de la classe, pas le fichier
* Exécution de la méthode "main" de cette classe
Fichiers sources (1/2)
* Extension ".java"
* Interface et implémentation mélangées
* Contrairement au C++ notamment
* Interface = .hpp
* Implémentation = .cpp
* Une seule classe visible
* Même nom que le fichier
* Attention à la casse !
* Les autres classes sont cachées
* Relation d'amitié entre toutes les classes d'un fichier
* Accès aux membres protégés
Fichiers sources (2/2)
* Fichier "Exemple.java"
public class Exemple {
protected static int y = 3;
public static void main(String args[]) {
System.out.println("Amie.x = " + Amie.x);
Amie.out_y();
}
}
class Amie {
protected static int x = 2;
protected static void out_y()
{ System.out.println("Exemple.y = " + Exemple.y); }
}
Packages (1/2)
* Package = module
* Rassemble un ensemble de classes
* Un package = un répertoire
* Contient des fichiers ".java" ou ".class"
* Exemple
* Répertoire maths/
* Répertoire matrice/
* Fichier Matrice.java
* Fichier Vecteur.java
* Répertoire grandnombre/
* Dans "Matrice.java"
* package maths.matrice; ? Déclaration d'appartenance
* class Matrice { ... }
Packages (2/2)
* Utilisation d'un package
* Java trouve automatiquement
* Recherche dans les répertoires du "classpath"
* "import" permet un raccourci de nom
* Utilisation de la classe "Matrice"
* Directement
* new maths.matrice.Matrice();
* Raccourci pour toutes les classes d'un package
* import maths.matrice.*;
* ... new Matrice();
* ... new Vecteur();
* Raccourci pour une classe d'un package
* import maths.matrice.Matrice;
* ... new Matrice();
* ... new maths.matrice.Vecteur();
Plateforme et évolutions
* Evolution rapide de la plateforme
* Problème des classes ou méthodes "deprecated" (obsolètes)
* Documentation très complète (dans Google: "java api 1.5")
* Packages "standards"
* Packages relatifs à une version
* Compiler pour une version
* -target 1.3 ==> génère code binaire en version 1.3
* Exécuter à partir d'une version
* -source 1.3 ==> exécute code binaire en le considérant en version 1.3
* Distributions
* Environnement d'exécution (machine virtuelle)
* Java Runtime Environment (JRE)
* Environnement de développement
* Avant version 2: Java Development Kit (JDK)
* A partir version 2: Software Development Kit (SDK)
* Editions J2SE (Standard), J2EE (Entreprise), J2ME (Mobile)
* A partir version 5.0: Java SE, Java EE, Java ME
 
 
Copyright (c) 1999-2016 - Bruno Bachelet - bruno@nawouak.net - http://www.nawouak.net
La permission est accordée de copier, distribuer et/ou modifier ce document sous les termes de la licence GNU Free Documentation License, Version 1.1 ou toute version ultérieure publiée par la fondation Free Software Foundation. Voir cette licence pour plus de détails (http://www.gnu.org).