Architecture de la machine
Machine virtuelle Java (JVM)
H1588 v2 Article de référence

Architecture de la machine
Machine virtuelle Java (JVM)

Auteur(s) : Jean-Michel DOUIN

Date de publication : 10 août 2013 | Read in English

Logo Techniques de l'Ingenieur Cet article est réservé aux abonnés
Pour explorer cet article plus en profondeur Consulter l'extrait gratuit

Déjà abonné ?

Présentation

1 - Contexte

2 - Architecture de la machine

3 - Classes Java

  • 3.1 - Format du fichier compilé
  • 3.2 - Compatibilité binaire
  • 3.3 - Décompilateur
  • 3.4 - Chargement et édition des liens
  • 3.5 - Vérification du fichier compilé

4 - Jeu d'instructions/source Java

5 - Conclusion

Sommaire

Présentation

RÉSUMÉ

Le succès de Java l'a promu langage de programmation sur internet. Cet article présente une architecture synthétique et idéale de la machine virtuelle, ainsi que le format du fichier compilé et un sous-ensemble du jeu d'instructions. Les instructions de la machine sont regroupées par famille et leur description est associée aux codes sources Java les ayant engendrées. Les avantages de cette solution sont connus et multiples, l’inconvénient majeur restant le surcoût en temps d’exécution.

Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.

Lire l’article

Auteur(s)

INTRODUCTION

La popularité du web a promu Java comme langage de programmation sur Internet. Ce succès est venu dans un premier temps de l'intégration d'une machine virtuelle Java au sein de tout navigateur. Le langage Java s'est imposé peu à peu dans le monde académique et également dans l'industrie. La machine virtuelle Java JVM (Java Virtual Machine) est présente sur de nombreuses architectures comme des serveurs d'applications, des caisses enregistreuses, des téléphones mobiles ou encore sur les cartes SIM. La machine virtuelle a peu évolué en un plus de quinze années, ce qui est remarquable dans le monde de l'informatique. Le code intermédiaire engendré par la compilation d'un code source Java est chargé et exécuté par la machine virtuelle. L'exécution du même code intermédiaire quelle que soit la plate-forme offre aux développeurs en Java une large diffusion de leurs programmes. La machine virtuelle et les librairies associées garantissent une exécution du code Java indépendante du système d'exploitation et d'une architecture matérielle. Les composantes de la machine virtuelle Java et le format du code intermédiaire permettent l'accès aux objets distants et le déploiement du code à travers le réseau. Ces caractéristiques sont essentielles dans un environnement distribué et contribuent au succès actuel du langage et de la machine virtuelle. La machine Java est un programme interprétant les instructions transmises par le réseau ou les instructions extraites d'un fichier local.

Les avantages de cette solution éprouvée sont connus et multiples :

  • le code est portable quelle que soit la plate-forme, car il suffit que chaque plate-forme possède un interpréteur de ce code et les librairies d'accès aux ressources de la machine hôte ;

  • le code chargé peut être vérifié au chargement. La vérification du code est facilitée et primordiale dans un environnement ouvert comme Internet ;

  • le code est en général plus compact. L'architecture de la machine Java est de type machine à pile, les opérandes des instructions devenues implicites engendrent une taille de code moins importante qu'une machine traditionnelle à registres.

L'inconvénient majeur réside dans le surcoût en temps d'exécution dû à cette couche logicielle supplémentaire.

L'architecture de la machine est liée aux concepts de la programmation en langage orienté objet, mais la machine reste indépendante du langage de programmation. Le seul type en entrée admis par la machine est le type du fichier compilé. Le format de ce fichier a permis plusieurs extensions conséquentes du langage Java sans aucune modification de la machine.

Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 92 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


MOTS-CLÉS

architecture

VERSIONS

Il existe d'autres versions de cet article :

DOI (Digital Object Identifier)

https://doi.org/10.51257/a-v2-h1588

Lecture en cours
Présentation

Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

2. Architecture de la machine

Les principales composantes de la machine Java (figure 2) sont le chargeur de classes, la mémoire des objets, les librairies natives et l'exécutif ou processeur virtuel. Cet exécutif est lui-même composé de l'interpréteur des instructions, de la zone du code et des données de classe et de la zone des environnements. L'implémentation de ces composantes peut être réalisée par du matériel ou du logiciel. L'architecture développée ici complète l'architecture de la machine virtuelle proposée par Oracle .

2.1 Types de données

Le langage Java distingue les types primitifs et un type unique référence (reference  ) pour les instances de classe (tableau 1). Cette distinction se retrouve dans la machine par le format des données utilisées et les instructions associées.

Tous les types primitifs du langage Java, à l'exception du type boolean, sont des types primitifs de la machine virtuelle. Les types numériques sont discrets ou flottants. Les types discrets sont byte, short, int, long et char. Les types flottants sont les types float et double. Le type Java boolean est représenté dans la machine par un entier de type int ou byte, l'entier 0 est associé à la valeur false, une valeur différente de 0 correspond à la valeur true.

Les valeurs de type reference sont inaccessibles au programmeur, elles représentent les adresses en mémoire des objets. En cours d'exécution, ces adresses sont obtenues à l'allocation des objets. L'objet alloué est soit une instance de classe, soit un tableau.

Également invisible au programmeur, le type address implémente une adresse dans le code de la méthode en cours. Les valeurs de ce type sont utilisées lors de l'exécution du bloc de gestion des exceptions avec la clause finally.

L'unité de base de la mémoire de la machine virtuelle est le mot. Un mot doit être choisi afin qu'il puisse contenir une variable de type Java byte, short,...

Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 93 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


Lecture en cours
Architecture de la machine

Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

Sommaire
Sommaire

BIBLIOGRAPHIE

  • (1) - GOSLING (J.), JOY (B.), STEELE (G.) -   The java language specification.  -  http://www.java.sun.com/docs/books/jls

  • (2) - LINDHOLM (T.), YELLIN (Y.) -   The java virtual machine specification.  -  http://www.java.sun.com/docs/books/vmspec

  • (3) - DYER (D.) -   Java decompilers compared.  -  (1997). http://www.javaworld.com/javaworld/jw-07-1997/jw-07-decompilers.html

  • (4) - McGRAW (G.) -   Java 2's verifier becomes confused by german student's security attack.  -  http://www.javaworld.com/javaworld/jw-04-1999/jw-04-flaw.html

  • (5) - WILKINSON (T.) -   Open source implementation of a java virtual machine.  -  http://www.kaffe.org

  • (6) -   The Java Hotspot performance engine architecture. White paper.  -  http://www.java.sun.com/products/hotspot/whitepaper.html

  • ...

Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 95 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre