LA GALAXIE JAVA

publicité
LA GALAXIE JAVA
La galaxie Java
1 of 30
La galaxie JAVA
• Les lignes de force
• Les raisons d’un succès
• JAVA dans le système
d’information
• Comment ça marche? (et est-ce que ça
marche?)
• L’Objet selon Java
La galaxie Java
[email protected]
2 of 30
Les lignes de force
code
réseau
APPLET
données
La galaxie Java
[email protected]
3 of 30
Les lignes de
force
• code multi-plateformes
• code dynamique
•
organisation/modularité
•
sécurité
•
multi-tâches
La galaxie Java
[email protected]
4 of 30
programmer en
Java?
• formulations élégantes
• souci constant de génie
logiciel
• dispositifs de sécurité
ore
d
j’a
A.Faucillon
• compromis bien dosés
La galaxie Java
[email protected]
5 of 30
techniques
complémentaires
• composants “beans”
• e.j.b.
• servlets
• distribution (RMI, JINI)
réseau
La galaxie Java
[email protected]
6 of 30
librairies
utilitaires programmation
calculs
E/S, E/S objets
internationalisation
réseau
I.H.M. portables, graphique
objets distants
composants dynamiques
accès B.D.D.
sécurité
La galaxie Java
[email protected]
7 of 30
extensions
utilitaires devt.
système, deploiement
graphique, 3D, multimedia
b.d.d, transactions
réseau, services répartis, annuaires
embarqué
composants d’entreprise
échanges sécurisés
JavaCard,....
La galaxie Java
[email protected]
8 of 30
Java dans le système
d’information
pte
o
’ad
A.Faucillon
j
de nouvelles
applications pour
de nouvelles
architectures
La galaxie Java
[email protected]
9 of 30
client léger sur Web
serveur
HTTP
Servlets
HTML
“navigateur” XML, ...
Applet
La galaxie Java
[email protected]
10 of 30
client “lourd”
serveur
déploiement
contr
ôle
application
serveur
applicatif
-net
intra/extra
La galaxie Java
[email protected]
11 of 30
nota: Java comme langage d’extension
réseau,E/S
J.N.I
enchassement
CORBA
Application non JAVA
La galaxie Java
[email protected]
12 of 30
serveurs d’application
appl.B
appl.A
appl.C
persistance
RESSOURCES
La galaxie Java
[email protected]
13 of 30
serveurs hiérarchisés
ce
n
na
te
m
t/
en
ain
em
oi
pl
dé
ifs
t
ica
pl
p
sa
ge
n
ha
éc
La galaxie Java
[email protected]
14 of 30
services “spontanés”
La galaxie Java
[email protected]
15 of 30
Comment ça marche ?
fichier binaire (pseudo-code)
conforme aux spécifications JVM
plate-forme de type A
JVM
(interpréteur
spécifique)
OS
plate-forme de type B
librairies
java
système de
fenêtrage
JVM
(interpréteur
spécifique)
OS
librairies
java
système de
fenêtrage
La galaxie Java
[email protected]
16 of 30
techniques d’exécution
152 invokestatic #66 <Method
java.lang.String valueOf(char)>
155 astore_3
156 goto 203
159 aload_0
160 getfield #56 <Field char lastOp>
163 bipush 61
165 if_icmpne 194
168 aload_0
169 aconst_null
170 putfield #58 <Field
java.math.BigDecimal result>
173 aload_0
174 bipush 43
176 putfield #56 <Field char lastOp>
lit, exécute
lit, exécute
....
COMPILATEUR A LA VOLEE (JIT)
compile le fichier
en codes natifs
et les exécute
codes natifs
en mémoire
HOTSPOT
interprétation
en back-up
INTERPRETE
compilation
optimisée
La galaxie Java
[email protected]
17 of 30
sécurité
• chargeurs de classes
• vérificateur de pseudo-code
• espaces d’exécution sécurisés :
* politique par défaut (“sandbox”)
* politiques personnalisées
(codes authentifiés
+ autorisations spécifiques)
La galaxie Java
[email protected]
18 of 30
dans la soute ....
• gestion automatique de la mémoire
(glaneur de mémoire
+ réorganisation dynamique du tas)
• gestion de processus légers
(ordonnanceur intégré
ou threads natifs du système)
La galaxie Java
[email protected]
19 of 30
L’Objet selon JAVA
• ça ressemble à du C++
• ça n’a pas le “goût” du C++
• ce n’est absolument pas du C++ !
La galaxie Java
[email protected]
20 of 30
La définition de classe
import fr.emse.medialab.util.* ;
public class UneClasse extends SuperClasse {
//membres
public final String oid ;
private Chose obj ;.....
public void setChose(Chose arg) {// mutateur
obj=arg ;
}
public static class Comparator extends
Chose.Comparator {// classe membre!
int compare(Object o1, Object o2){
return super.compare( ((Unclasse)o1).obj,
((UneClasse)o2).obj) ;
}
} // pas de surcharge d’opérateur
// non membres
public UneClasse(Truc truc, Chose obj){//constructeur
super(truc);
oid = truc.toString() ;......
}//pas de destructeur (ou presque)
}
// RIEN EN DEHORS DE LA CLASSE!
La galaxie Java
[email protected]
21 of 30
rien hors de la classe
• pas de variables ou de fonctions
“globales”
double ix = Math.sin( iy * Math.PI) ;
double iz = StrictMath.sin(valeur) ;
• pas de fichier “include”
les contrôles de types fonctionnent par
introspection du binaire des classes
La galaxie Java
[email protected]
22 of 30
encapsulation
Les classes sont regroupées dans des
“packages”
fr.emse.medialab.graphics
edu.mit.medialab.graphics
L’encapsulation se considère:
• au niveau de la classe (private),
• au niveau du package (par défaut),
• au niveau d’une relation d’héritage
(protected)
La galaxie Java
[email protected]
23 of 30
types
type variable != classe de l’ instance!
• aspect conceptuel
Manager leSousChef; // extends Salarie ....
Manager lePatron = new PDG(...); // extends Manager
Salarie[] employés = { leLampiste, leSousChef, lePatron}
• aspect “physique”
PDG chef = new PDG(..);
Manager reChef = chef ;
chef
// tout est “référence”
reChef
• aspect évaluation (méthodes d’instance virtuelles)
La galaxie Java
[email protected]
24 of 30
polymorphisme: héritage
• on n’hérite que d’une seule classe
• on ne peut aggraver le “contrat”
* pas d’encapsulation aggravée
* pas “plus” d’exception
le type des exceptions propagées fait partie de la spécification des méthodes
* par contre possibilité de surcharger
des méthodes de la super-classe
• on peut bloquer toute tentative de
redéfinition (modificateur final)
La galaxie Java
[email protected]
25 of 30
types abstraits purs
public class Client {
.....
Messager messager ;
.....
public interface Messager {
public void envoiMessage(String message);
}
public class Fax extends Telephone implements Messager {
public void envoiMessage(String message) {
...
public class EMail extends AgentReseau implements Messager {
public void envoiMessage(String message) {
...
Client dupond, durand ;
....
dupond.messager = new Fax(“0141331733”) ;
durand.messager = new EMail(“[email protected]”) ;
....
for (int ct= 0 ; ct < tableauClient.length; ct++){
tableauClient[ct].messager.envoiMessage(
“Tout va bien!”);
}
La galaxie Java
[email protected]
26 of 30
accès/ réseau
.
IHM
Base de Données
requêtes texte
R
serveur intermédiaire
EU
RV
CE
A
RF
TE
SE
pseudo-base (tests)
IN
La galaxie Java
[email protected]
27 of 30
Classes membres
public class Pile {
private Object[] tableExtensible ;
private int sommetDePile ;
...
private class ParcoursPile
implements java.util.Enumeration {
int index = sommetDePile ;
public boolean hasMoreElements(){
return index >= 0;
}
public Object nextElement(){
return tableExtensible[index--];
}
}// fin parcoursPile
public java.util.Enumeration elements() {
return new ParcoursPile();
}
...
}
La galaxie Java
[email protected]
28 of 30
Autres caractéristiques
• gestion exceptions
• processus et concurrence d’accès
• prise en compte de la répartition sur
réseau
• documentation intégrée
La galaxie Java
[email protected]
29 of 30
des savoir-faires en
devenir
• idiomes, “patterns”, bonnes pratiques
• relations conception/réalisation
La galaxie Java
[email protected]
30 of 30
Téléchargement