Présentation
EnglishRÉ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’articleAuteur(s)
-
Jean-Michel DOUIN : Ingénieur et docteur du CNAM - Enseignant/chercheur au CNAM
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.
MOTS-CLÉS
VERSIONS
- Version archivée 1 de août 2000 par Jean-Michel DOUIN
DOI (Digital Object Identifier)
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
Présentation
3. Classes Java
Chaque fichier contient un type Java (une classe, une interface ou une énumération). Un fichier est généré pour une classe interne, locale ou anonyme. Ce fichier contient le code et toutes les données nécessaires à l'exécution des instructions de la machine virtuelle. Ces données sont pour la plupart dans leur forme symbolique. Le format choisi du fichier permet de respecter les contraintes de compatibilité binaire et d'autoriser de futures extensions. Les principales étapes du chargeur de classes locales ou distantes sont également présentées.
3.1 Format du fichier compilé
Le fichier compilé (ou fichier dont le suffixe est « .class ») forme une suite d'octets.
Deux octets lus forment un mot de 16 bits, l'octet de poids fort étant en premier. Les mots de 32 et 64 bits sont construits de la même façon. Les noms de types u1, u2 et u4 choisis par SUN représentent respectivement les données sur un, deux et quatre octets. Les composantes du fichier .class sont dans l'ordre d'apparition [magic, minor_version, major_version, constant_pool, access_flags, this_class, super_class, interface, fields, methods, attributes].
Ces champs sont rassemblés dans une structure nommée ClassFile définie ci-dessous dans une syntaxe apparentée au langage Java.
structure ClassFile {
u4 magic;
u2 minor_version;
u2 major_version;
u2 constant_pool_count;
info constant_pool [constant_pool_count];
u2 access_flags;
u2 this_class;
u2 super_class;
u2 interfaces_count;
u2 interfaces [interfaces_count];
u2 fields_count;
field_info fields [fields_count];
u2 method_count;
method_info methods [method_count];
u2 attributes_count;
attribute_info attributes [attributes_count];
}
Plusieurs...
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
Classes Java
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
-
...
Garbage – First Collector https://docs.oracle.com/javase/9/gctuning/garbage-first-garbage-collector.htm#JSGCT-GUID-ED3AB6D3-FD9B-4447-9EDF-983ED2F7A573
Carte à puce Java Sun http://www.java.sun.com/products/javacard
PicoJava et processeurs Java http://www.ajile.com
Oracle Technology Network http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html
HAUT DE PAGE2.1 Fabricants (liste non exhaustive)
Dallas Semiconductor http://www.maxim-ic.com
Ajile Systems http://www.ajile.com
Oracle http://www.oracle.com/fr
HAUT DE PAGE
Standard Performance Evaluation Corporation (SPEC) http://www.spec.org...
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