Présentation
Auteur(s)
-
Jean-Michel DOUIN : Docteur en informatique - Maître de conférences au Conservatoire national des arts et métiers (CNAM)
Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.
Lire l’articleINTRODUCTION
La popularité du web a promu Java comme langage de programmation sur Internet. Ce succès vient principalement de l’intégration d’une machine virtuelle Java au sein de tout navigateur. Le code intermédiaire engendré par la compilation d’un code source Java est chargé et exécuté par la machine dans une fenêtre du navigateur. 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 la migration de codes à 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 est également intégrée au sein de systèmes embarqués, comme une plate-forme équipée d’un microcontrôleur avec peu de mémoire centrale.
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 des extensions conséquentes du langage Java sans aucune modification de la machine.
Cet article présente une architecture synthétique de la machine, le format du fichier compilé et le jeu d’instructions. Le format du fichier compilé est détaillé et accompagné d’un exemple concret de code source Java. Les instructions de la machine sont regroupées par famille, leur description est associée aux codes sources Java les ayant engendrées, et les opérations sur la machine virtuelle sont également proposées.
VERSIONS
- Version courante de août 2013 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
5. Conclusion et perspectives
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. Les annonces régulières indiquent que les fournisseurs de systèmes en temps réel proposent une implémentation de machine et que les fabricants de micro‐processeurs offrent la technologie Java sur leurs produits.
Les performances actuelles de la machine semblent convenir pour de petites applications. Depuis un navigateur, l’utilisateur est plus habitué aux lenteurs de transmission. Les perspectives offertes par le langage et les librairies, toujours plus riches et plus nombreuses, aboutissent à des applications de plus en plus conséquentes en taille de code et en espace mémoire. Le temps d’exécution devient un critère important. SUN a réagi par la publication d’un article sur des orientations d’architecture à suivre afin d’améliorer les performances [14]. Ces propositions concernent essentiellement la mémoire des objets, l’implémentation des threads et le compilateur :
-
les références du programme accèdent directement aux objets, l’indirection due au ramasse‐miettes devra être supprimée ;
-
les langages C et Java partagent la même pile des segments d’activation, le passage des paramètres entre les deux environnements devient inutile ;
-
la synchronisation des threads est développée en code natif ;
-
un algorithme de ramasse‐miettes incrémental devrait fournir de meilleures performances ;
-
le compilateur en code natif est amélioré ;
-
à la compilation, le code des méthodes peut être placé à l’endroit de l’appel, le temps d’appel est supprimé ;
-
les appels de méthodes sont optimisés en temps.
Toutes ces propositions ne peuvent qu’améliorer les performances. Ces premières orientations sont légitimes, d’autres seront proposées et ce domaine suscite de nombreux développements, la proposition Java étant elle‐même assez récente.
Le projet Java, connu sous le nom de Oak, était initialement destiné aux systèmes embarqués. Le développement d’Internet, accessible au grand public, les périphériques de grande diffusion connectés au réseau, ont engendré de la part d’industriels un investissement dans la technologie Java ; la liste...
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
Conclusion et perspectives
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