Présentation

Article

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

Article de référence | Réf : H1588 v2

Conclusion
Machine virtuelle Java (JVM)

Auteur(s) : Jean-Michel DOUIN

Date de publication : 10 août 2013

Pour explorer cet article
Télécharger l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !

Sommaire

Présentation

Version en anglais English

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.

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

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

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


Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(240 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

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

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS

Lecture en cours
Présentation
Version en anglais English

5. Conclusion

En quelques années, la diffusion de Java a engendré un nombre important d'implémentations de la machine virtuelle. Il devient rare de disposer d'un ordinateur sans une machine virtuelle Java. Dix années se sont écoulées depuis la première version de cet article, et fait assez rare en informatique, la définition du jeu d'instructions et la grammaire des fichiers générés sont restées les mêmes. Le code intermédiaire assure une stabilité et les millions de machines Java installées dans le monde y contribuent également.

Cette machine virtuelle est maintenant présente sur bon nombre d'ordinateurs allant du serveur d'applications pour de grandes entreprises aux clients équipés d'un navigateur. Un autre succès a été le portage d'une version minimale de cette machine  sur les mobiles que l'on pourrait qualifier de première génération, la machine virtuelle développée par Google pour leur système Android en Java semble s'imposer sur les smart-phones et autres tablettes. Un autre succès toujours actuel est le portage de cette machine sur une carte SIM équipant la plupart des téléphones mobiles.

De nouveaux langages sont apparus : Scala, Groovy, JJRuby, Jython, Clojure, et le point commun entre ces langages est qu'ils utilisent la machine virtuelle Java. La dernière version du JDK (Java Development Kit), la JDK7 propose une nouvelle instruction invokedynamic, générée par une version d'un compilateur pour JRuby.

La pérennité de l'architecture présentée dans cet article semble assurée au moins pour la prochaine décennie.

HAUT DE PAGE

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

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(240 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

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

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS

Lecture en cours
Conclusion
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

  • ...

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

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(240 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

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

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS