mj : a rational module system for...
TRANSCRIPT
![Page 1: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/1.jpg)
MJ : A Rational Module System for Javaand its Applications
de J. Corwin, D. F. Bacon, D. Grove et C. MurthyOOPSLA 2003
Présentation d'articleConception de serveurs d'applications ouverts (P2P)
Sylvain Sené ─ Mardi 8 février 2005
![Page 2: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/2.jpg)
2
Systèmes grande échelle séparation en composantsSpécification des fonctionnalités et hiérarchie
Modularité de Java non adaptée aux systèmes grande échelleAspect statique (classes, paquetages) et dynamique (classloaders)2
Granularité trop fine des classesPaquetages non hiérarchiques
NoClassDefFoundError, Erreurs d'exécution ou
boucles infinies entre les classloaders
Introduction
MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Stratégie adoptée : contrôle des composants par les classloaders et le CLASSPATH compliqué et manque de vérification statique
![Page 3: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/3.jpg)
2
Systèmes grande échelle séparation en composantsSpécification des fonctionnalités et hiérarchie
Modularité de Java non adaptée aux systèmes grande échelleAspect statique (classes, paquetages) et dynamique (classloaders)3
Granularité trop fine des classesPaquetages non hiérarchiques
NoClassDefFoundError, Erreurs d'exécution ou
boucles infinies entre les classloaders
Introduction
MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Stratégie adoptée : contrôle des composants par les classloaders et le CLASSPATH compliqué et manque de vérification statique
![Page 4: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/4.jpg)
Systèmes grande échelle séparation en composantsSpécification des fonctionnalités et hiérarchie
Modularité de Java non adaptée aux systèmes grande échelleAspect statique (classes, paquetages) et dynamique (classloaders)4
Granularité trop fine des classesPaquetages non hiérarchiques
Stratégie adoptée : contrôle des composants par les classloaders et le CLASSPATH compliqué et manque de vérification statique
NoClassDefFoundError, Erreurs d'exécution ou
boucles infinies entre les classloaders2
Introduction
MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
![Page 5: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/5.jpg)
Préliminaires
Certaines faiblesses de Java
MJ : un système de gestion de modules
MJ : sa validation
Discussion
3MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Plan
![Page 6: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/6.jpg)
4
Les classloaders
Programme Java ≠ un unique programme exécutable = une composition de fichier class
Ces fichiers class sont chargés en mémoire par les classloaders
en fonction des besoins
Une référence à une classe A dans une classe C est réalisée par un classloader
Problème : le classloader ne fait aucune différence entre une référence versle même module (ou composant) et une référence vers un module différent
Formellement : linkage et activation de composants vus de la même façon
MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
PréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
![Page 7: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/7.jpg)
4
Les classloaders
Programme Java ≠ un unique programme exécutable = une composition de fichier class
Ces fichiers class sont chargés en mémoire par les classloaders
en fonction des besoins
Une référence à une classe A dans une classe C est réalisée par un classloader
Problème : le classloader ne fait aucune différence entre une référence versle même module (ou composant) et une référence vers un module différent
Formellement : linkage et activation de composants vus de la même façon
MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
PréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
![Page 8: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/8.jpg)
4
Les classloaders
Programme Java ≠ un unique programme exécutable = une composition de fichier class
Ces fichiers class sont chargés en mémoire par les classloaders
en fonction des besoins
Une référence à une classe A dans une classe C est réalisée par un classloader
Problème : le classloader ne fait aucune différence entre une référence versle même module (ou composant) et une référence vers un module différent
Formellement : linkage et activation de composants vus de la même façon
MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
PréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
![Page 9: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/9.jpg)
Absence de hiérarchie des paquetagesUne unique interface fournie
5
Visibilité des paquetagesjava.io et java.lang sont totalement indépendants
Comment faire pour qu'un objet ait une classe d'implémentation Afournissant une interface abstraite B à un ensemble de ses invocateurs
et une autre interface C plus étendue à un ensemble différent ? La délegation ?
Aucun mécanisme n'existe
java.io ne peut récupérer directement les valeurs
des instances de java.lang.String Perte de performance
NON ! La permission est générale
MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
PréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
![Page 10: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/10.jpg)
Absence de hiérarchie des paquetagesUne unique interface fournie
5
Visibilité des paquetagesjava.io et java.lang sont totalement indépendants
Comment faire pour qu'un objet ait une classe d'implémentation Afournissant une interface abstraite B à un ensemble de ses invocateurs
et une autre interface C plus étendue à un ensemble différent ? La délegation ?
Aucun mécanisme n'existe
java.io ne peut récupérer directement les valeurs
des instances de java.lang.String Perte de performance
NON ! La permission est générale
MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
PréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
![Page 11: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/11.jpg)
Absence de hiérarchie des paquetagesUne unique interface fournie
5
Visibilité des paquetagesjava.io et java.lang sont totalement indépendants
Comment faire pour qu'un objet ait une classe d'implémentation Afournissant une interface abstraite B à un ensemble de ses invocateurs
et une autre interface C plus étendue à un ensemble différent ? La délegation ?
Aucun mécanisme n'existe
java.io ne peut récupérer directement les valeurs
des instances de java.lang.String Perte de performance
NON ! La permission est générale
MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
PréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
![Page 12: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/12.jpg)
Absence de hiérarchie des paquetagesUne unique interface fournie
5
Visibilité des paquetagesjava.io et java.lang sont totalement indépendants
Comment faire pour qu'un objet ait une classe d'implémentation Afournissant une interface abstraite B à un ensemble de ses invocateurs
et une autre interface C plus étendue à un ensemble différent ? La délegation ?
Aucun mécanisme n'existe
java.io ne peut récupérer directement les valeurs
des instances de java.lang.String Perte de performance
NON ! La permission est générale
MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
PréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
![Page 13: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/13.jpg)
Versions multiples des classes
6MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Les applications grande échelle nécessitent souvent différentes versionsd'une même classe ou encore d'un même paquetage
Prolifération des classpaths et des classloaders “personnels” sur les serveurs d'application confusion entre les développeurs
Nécessité d'avoir un mécanisme plus simple
Exemple : CORBA et les ORBsAppels de deux serveurs à partir d'un serveur d'application : 2 ORBs sur le
même espace d'adressage de la machine virtuelle
Utilisation de copies de la classe org.omg.CORBA.ORG
PréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
![Page 14: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/14.jpg)
Versions multiples des classes
6MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Les applications grande échelle nécessitent souvent différentes versionsd'une même classe ou encore d'un même paquetage
Prolifération des classpaths et des classloaders “personnels” sur les serveurs d'application confusion entre les développeurs
Nécessité d'avoir un mécanisme plus simple
Exemple : CORBA et les ORBsAppels de deux serveurs à partir d'un serveur d'application : 2 ORBs sur le
même espace d'adressage de la machine virtuelle
Utilisation de copies de la classe org.omg.CORBA.ORG
PréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
![Page 15: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/15.jpg)
Versions multiples des classes
6MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Les applications grande échelle nécessitent souvent différentes versionsd'une même classe ou encore d'un même paquetage
Prolifération des classpaths et des classloaders “personnels” sur les serveurs d'application confusion entre les développeurs
Nécessité d'avoir un mécanisme plus simple
Exemple : CORBA et les ORBsAppels de deux serveurs à partir d'un serveur d'application : 2 ORBs sur le
même espace d'adressage de la machine virtuelle
Utilisation de copies de la classe org.omg.CORBA.ORG
PréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
![Page 16: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/16.jpg)
ObjectifsPréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
7MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Vérification statique des références
ClassNotFoundException et NoClassDefFoundException
Très peu de changements du code existantRester très proche du langage Java
Création d'un nouveau système de gestion des modules de haut niveau plus adaptéen évitant la complexité de la gestion personnelle (développement, déploiement, compréhension, maintenance) du CLASSPATH et des
classloaders
![Page 17: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/17.jpg)
ObjectifsPréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
7MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Création d'un nouveau système de gestion des modules de haut niveau plus adaptéen évitant la complexité de la gestion personnelle (développement, déploiement, compréhension, maintenance) du CLASSPATH et des
classloaders
Vérification statique des références
ClassNotFoundException et NoClassDefFoundException
Très peu de changements du code existantRester très proche du langage Java
![Page 18: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/18.jpg)
Principe généralPréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
8MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Données sur les modules
Emplacement et nature des classes fournies par le module export, hide, dynamic export et dynamic hide
Dépendances entre les modules et les classes relatives provides et import
Visiblité des classes fournies seal, unseal, forbid et unforbid
Code d'initialisation
Création d'un registre de composants contenant :la description de tous les modules et
les archives des classes fournies par les modules
![Page 19: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/19.jpg)
Principe généralPréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
8MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Données sur les modules
Emplacement et nature des classes fournies par le module export, hide, dynamic export et dynamic hide
Dépendances entre les modules et les classes relatives provides et import
Visiblité des classes fournies seal, unseal, forbid et unforbid
Code d'initialisation
Création d'un registre de composants contenant :la description de tous les modules et
les archives des classes fournies par les modules
![Page 20: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/20.jpg)
Principe généralPréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
8MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Données sur les modules
Emplacement et nature des classes fournies par le module export, hide, dynamic export et dynamic hide
Dépendances entre les modules et les classes relatives provides et import
Visiblité des classes fournies seal, unseal, forbid et unforbid
Code d'initialisation
Création d'un registre de composants contenant :la description de tous les modules et
les archives des classes fournies par les modules
![Page 21: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/21.jpg)
Principe généralPréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
8MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Création d'un registre de composants contenant :la description de tous les modules et
les archives des classes fournies par les modules
Données sur les modules
Emplacement et nature des classes fournies par le module export, hide, dynamic export et dynamic hide
Dépendances entre les modules et les classes relatives provides et import
Visiblité des classes fournies seal, unseal, forbid et unforbid
Code d'initialisation
![Page 22: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/22.jpg)
Principe généralPréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
8MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Données sur les modules
Emplacement et nature des classes fournies par le module export, hide, dynamic export et dynamic hide
Dépendances entre les modules et les classes relatives provides et import
Visiblité des classes fournies seal, unseal, forbid et unforbid
Code d'initialisation
Création d'un registre de composants contenant :la description de tous les modules et
les archives des classes fournies par les modules
![Page 23: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/23.jpg)
ExemplePréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
9MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
provides “catalina.jar”;
import * from xerces;import * from bootstrap;import com.sun.tools.* from tools;
hide * in *;export org.apache.catalina.* to webapp;export org.apache.catalina.servlets to servlets;
forbid org.apache.catalina.* in *;
module catalina{
public static void load() {...}public static void main(String []args) {...}
}
![Page 24: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/24.jpg)
ExemplePréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
9MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
provides “catalina.jar”;
import * from xerces;import * from bootstrap;import com.sun.tools.* from tools;
hide * in *;export org.apache.catalina.* to webapp;export org.apache.catalina.servlets to servlets;
forbid org.apache.catalina.* in *;
module catalina{
public static void load() {...}public static void main(String []args) {...}
}
![Page 25: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/25.jpg)
ExemplePréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
9MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
provides “catalina.jar”;
import * from xerces;import * from bootstrap;import com.sun.tools.* from tools;
hide * in *;export org.apache.catalina.* to webapp;export org.apache.catalina.servlets to servlets;
forbid org.apache.catalina.* in *;
module catalina{
public static void load() {...}public static void main(String []args) {...}
}
![Page 26: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/26.jpg)
ExemplePréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
9MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
provides “catalina.jar”;
import * from xerces;import * from bootstrap;import com.sun.tools.* from tools;
hide * in *;export org.apache.catalina.* to webapp;export org.apache.catalina.servlets to servlets;
forbid org.apache.catalina.* in *;
module catalina{
public static void load() {...}public static void main(String []args) {...}
}
![Page 27: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/27.jpg)
ExemplePréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
9MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
provides “catalina.jar”;
import * from xerces;import * from bootstrap;import com.sun.tools.* from tools;
hide * in *;export org.apache.catalina.* to webapp;export org.apache.catalina.servlets to servlets;
forbid org.apache.catalina.* in *;
module catalina{
public static void load() {...}public static void main(String []args) {...}
}
![Page 28: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/28.jpg)
ParticularitésPréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
10MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
JVM : classe nommée par son classname et son classloader (objet connu à l'exécution)
MJ : les classloaders sont nommés par leur classname et leur modulename (existence statique)
En réalité, les modules jouent le rôle des classloaders de manière statique
Modules statiques Vs. modules dynamiquesDistinction précise des résolutions dynamiques par le dynamic export
Utilitaires de compilation : modjavac et javamodc
![Page 29: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/29.jpg)
ParticularitésPréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
10MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
JVM : classe nommée par son classname et son classloader (objet connu à l'exécution)
MJ : les classloaders sont nommés par leur classname et leur modulename (existence statique)
Modules statiques Vs. modules dynamiquesDistinction précise des résolutions dynamiques par le dynamic export
Utilitaires de compilation : modjavac et javamodc
En réalité, les modules jouent le rôle des classloaders de manière statique
![Page 30: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/30.jpg)
ParticularitésPréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
10MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
JVM : classe nommée par son classname et son classloader (objet connu à l'exécution)
MJ : les classloaders sont nommés par leur classname et leur modulename (existence statique)
Modules statiques Vs. modules dynamiquesDistinction précise des résolutions dynamiques par le dynamic export
Utilitaires de compilation : modjavac et javamodc
En réalité, les modules jouent le rôle des classloaders de manière statique
![Page 31: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/31.jpg)
ParticularitésPréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
10MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
JVM : classe nommée par son classname et son classloader (objet connu à l'exécution)
MJ : les classloaders sont nommés par leur classname et leur modulename (existence statique)
Modules statiques Vs. modules dynamiquesDistinction précise des résolutions dynamiques par le dynamic export
Utilitaires de compilation : modjavac et javamodc
En réalité, les modules jouent le rôle des classloaders de manière statique
![Page 32: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/32.jpg)
Apache Tomcat 4.1.18PréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
11MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Objectif : remplacer les mécanismes inhérents aux classloaders en utilisant le système de gestion des modules MJ
Méthode : diviser Tomcat et les librairies dont il dépend en modules (1 module par fichier .jar et par librairie 30 modules)
Détermination des bonnes relations import/exportSuppression des utilisations des classloaders
Remplacement de ces utilisations par les bons appels à MJ
Résultat : obtention d'un Tomcat identique en changeant uniquement 400 lignes de codes sur environ 167000. A présent, on peut contrôler
la visibilité des classes et par exemple améliorer les performances d'entrée-sortie de 30 %.
![Page 33: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/33.jpg)
Apache Tomcat 4.1.18PréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
11MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Méthode : diviser Tomcat et les librairies dont il dépend en modules (1 module par fichier .jar et par librairie 30 modules)
Détermination des bonnes relations import/exportSuppression des utilisations des classloaders
Remplacement de ces utilisations par les bons appels à MJ
Résultat : obtention d'un Tomcat identique en changeant uniquement 400 lignes de codes sur environ 167000. A présent, on peut contrôler
la visibilité des classes et par exemple améliorer les performances d'entrée-sortie de 30 %.
Objectif : remplacer les mécanismes inhérents aux classloaders en utilisant le système de gestion des modules MJ
![Page 34: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/34.jpg)
Apache Tomcat 4.1.18PréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
11MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Méthode : diviser Tomcat et les librairies dont il dépend en modules (1 module par fichier .jar et par librairie 30 modules)
Détermination des bonnes relations import/exportSuppression des utilisations des classloaders
Remplacement de ces utilisations par les bons appels à MJ
Résultat : obtention d'un Tomcat identique en changeant uniquement 400 lignes de codes sur environ 167000. A présent, on peut contrôler
la visibilité des classes et par exemple améliorer les performances d'entrée-sortie de 30 %.
Objectif : remplacer les mécanismes inhérents aux classloaders en utilisant le système de gestion des modules MJ
![Page 35: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/35.jpg)
Apache Tomcat 4.1.18PréliminairesCertaines faiblesses de JavaMJ : un système de gestion de modulesMJ : sa validationDiscussion
11MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Méthode : diviser Tomcat et les librairies dont il dépend en modules (1 module par fichier .jar et par librairie 30 modules)
Détermination des bonnes relations import/exportSuppression des utilisations des classloaders
Remplacement de ces utilisations par les bons appels à MJ
Résultat : obtention d'un Tomcat identique en changeant uniquement 400 lignes de codes sur environ 167000. A présent, on peut contrôler
la visibilité des classes et par exemple améliorer les performances d'entrée-sortie de 30 %.
Objectif : remplacer les mécanismes inhérents aux classloaders en utilisant le système de gestion des modules MJ
![Page 36: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/36.jpg)
Discussion — Conclusion
12MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Article bien organisé mais assez mal écrit
Prévisions de tester MJ sur un serveur d'applications commercial : WebSphere
Des questions ?
Une solution qui apporte des résultats intéressants, des améliorations deperformances significatives
AvantagesRéduction de la complexité, vérification statique, robustesse
![Page 37: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/37.jpg)
Discussion — Conclusion
12MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Article bien organisé mais assez mal écrit
Prévisions de tester MJ sur un serveur d'applications commercial : WebSphere
Des questions ?
Une solution qui apporte des résultats intéressants, des améliorations deperformances significatives
AvantagesRéduction de la complexité, vérification statique, robustesse
![Page 38: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/38.jpg)
Discussion — Conclusion
12MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Article bien organisé mais assez mal écrit
Prévisions de tester MJ sur un serveur d'applications commercial : WebSphere
Des questions ?
Une solution qui apporte des résultats intéressants, des améliorations deperformances significatives
AvantagesRéduction de la complexité, vérification statique, robustesse
![Page 39: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/39.jpg)
Discussion — Conclusion
12MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Article bien organisé mais assez mal écrit
Prévisions de tester MJ sur un serveur d'applications commercial : WebSphere
Des questions ?
Une solution qui apporte des résultats intéressants, des améliorations deperformances significatives
AvantagesRéduction de la complexité, vérification statique, robustesse
![Page 40: MJ : A Rational Module System for Javaperso.citi.insa-lyon.fr/sfrenot/cours/Mastere/articles/soutenance_p2p... · MJ : A Rational Module System for Java and its Applications — J](https://reader034.vdocuments.net/reader034/viewer/2022050403/5f810027845fdc570d2e73bd/html5/thumbnails/40.jpg)
Discussion — Conclusion
12MJ : A Rational Module System for Java and its Applications — J. Corwin, D. F. Bacon, D. Grove, C. Murthy
Article bien organisé mais assez mal écrit
Prévisions de tester MJ sur un serveur d'applications commercial : WebSphere
Des questions ?
Une solution qui apporte des résultats intéressants, des améliorations deperformances significatives
AvantagesRéduction de la complexité, vérification statique, robustesse