Académique Documents
Professionnel Documents
Culture Documents
I - Le Langage Java PDF
I - Le Langage Java PDF
Le langage Java
Rmi Forax
forax@univ-mlv.fr
Java Avanc
La technologie Java
En quelques mots :
Orient Objet
Java Aujourd'hui
3 environnements d'excutions diffrents
etc...
Compatibilite ascendante
Java/OpenSource
Machine Virtuelle
C/C++ :
Architecture en C
Code en Ascii
Compilateur
010
010
010
010
Editeur de lien
010
Plateforme + OS
Architecture en Java
Code en Unicode
Compilateur
0xCaf
0xCaf
0xCaf
0xCaf
API
0xCaf
0xCaf
VM
Plateforme + OS
10
Le byte-code
0xCaf
0xCaf
0xCaf
0xCaf
bytecode
VM
VM
VM
MacOS
Linux
Windows
12
Compilation simple
Dans src
Excution simple
14
Exemple :
javac -d classes -cp ../other/classes:lib/truc.jar
-sourcepath src src/fr/umlv/projet/Toto.java
15
Variable d'environnement
Java et certains programmes annexes utilisent les
variables d'environnement :
16
Version du langage
17
18
Autres Compilateurs
Trois compilateurs (Java -> bytecode)
Excelsior JET
19
Machine Virtuelle
Machine virtuelle :
20
Exemple :
java -cp classes:lib/truc.jar fr.umlv.projet.Toto
21
Paramtre de la VM
Autres options de la VM :
-Xint
mode interprter uniquement
-Xbootclasspath
spcifie le chemin des classes de l'API
-Xms
taille initiale de la mmoire
-Xmx
taille maximale de la mmoire
http://blogs.sun.com/roller/resources/watt/jvm-options-list.html
22
23
Un interprteur :
24
Avantage :
Inconvnient :
25
Un exemple
Mesure le temps pass dans la fonction de Fibonacci
(mal code) :
26
Un exemple (suite)
16:08
1 fichier(s)
509 JITExample.java
509 octets
C:\eclipse\workspace\java-avanc\src>javac JITExample.java
C:\eclipse\workspace\java-avanc\src>dir
Rpertoire de C:\eclipse\workspace\java-avanc\src
19/07/2004
19/07/2004
16:12
16:08
2 fichier(s)
650 JITExample.class
509 JITExample.java
1 159 octets
C:\eclipse\workspace\java-avanc\src>
27
On excute avec la VM
On utilise la commande java
C:\eclipse\workspace\java-avanc\src>java JITExample
34082
32966
31568
31568
809041
61739
5867
5587
5587
5587
28
Explication
29
Explication (2)
30
Un chargeur de classe
(classloader)
0xCaf
0xCaf
0xCaf
0xCaf
Un JIT
(transformation la vole du bytecode)
Le Garbage Collector
(rcupre les objets
non utiliss)
010
0xCaf
0xCaf
API
ClassLoader
JIT
VM
GC
Plateforme + OS
31
Inline inter-bibliothque
http://www.idiom.com/~zilla/Computer/javaCbenchmark.html
32
Archive java
33
Archive java
34
Dsassembleur de bytecode
35
Exemple de javap
-bash-2.05b$ javap -classpath classes -c JITExample
public class JITExample extends java.lang.Object{
public JITExample();
0:
aload_0
1:
invokespecial
#8; //Method java/lang/Object."<init>":()V
4:
return
public static void main(java.lang.String[]);
0:
iconst_0
1:
istore_1
2:
goto
18
5:
getstatic
#33; //Field
java/lang/System.out:Ljava/io/PrintStream;
8:
iconst_5
9:
invokestatic
#37; //Method time:(I)J
12: invokevirtual
#39; //Method java/io/PrintStream.println:
(J)V
15: iinc
1, 1
18: iload_1
19: bipush 10
21: if_icmplt
5
24: return
}
36
debugger/profileur
Le debugger :
Le profiler :
37
javadoc
gnration de la doc automatique
jstat, jconsole, jmap, jps, jinfo, jhat
monitoring de la machine virtuelle
javah
gnration header en C (interop avec C)
keytool, policytool
gestion signature et scurit
rmiregistry, ordb, derby.jar (JavaDB)
Registry RMI, Orb CORBA, BD embarque
38
39
Script ant
40
Script ant
Script ant
43
Excuter un jar :
<java jarfile=projet.jar/>
44
45
IDEA (IntelliJ)
46
Introspection
47