40
MJ : A Rational Module System for Java and its Applications de J. Corwin, D. F. Bacon, D. Grove et C. Murthy OOPSLA 2003 Présentation d'article Conception de serveurs d'applications ouverts (P2P) Sylvain Sené ─ Mardi 8 février 2005

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

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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