Rechercher

Pourquoi JAVA utilise une machine virtuelle (JVM) ?

Mis à jour : mars 8

Question 1 : Quelle est la principale différence entre la plate-forme Java et les autres plates-formes logicielles ?


Réponse 1 : La plate-forme Java est une plate-forme logicielle uniquement, qui s'exécute sur d'autres plates-formes matérielles comme Unix, Windows, Mac OS, etc.




La plateforme Java a deux composants :


1) Machine virtuelle Java (JVM) est un logiciel (c'est-à-dire un processus) qui peut être porté sur diverses plates-formes matérielles (par exemple Windows, Linux, etc.). Le Byte Code est le langage machine de la JVM.


2) Java Application Programming Interface (Java API)- n'est rien d'autre qu'un ensemble de classes et d'interfaces fournies avec le JDK. Toutes ces classes sont écrites en utilisant le langage Java et contiennent une bibliothèque de méthodes pour les opérations de programmation courantes comme la manipulation de chaînes de caractères et de structures de données, opérations de communication sous réseau, le transfert de fichiers, etc. Les fichiers source * .java sont dans l'archive src.zip et l'exécutable *.class sont dans l'archive rt.jar.


Question 2 Comment différencieriez-vous entre JDK, JRE, JVM et JIT ?


Réponse 2 : Il n'y a pas de meilleur moyen d'avoir une vue d'ensemble qu'un diagramme.




1. JDK : vous pouvez télécharger une copie du kit de développement Java (JDK) pour votre système d'exploitation comme Unix, Windows, etc.


2. JRE : Java Runtime Environment est une implémentation de la JVM. Le JDK comprend généralement l'environnement d'exécution Java (JRE) qui contient la machine virtuelle et d'autres dépendances pour exécuter des applications Java.


3. JIT : Un JIT est un générateur de code qui convertit le byte code Java en code machine natif. Les programmes Java invoqués avec un JIT s'exécutent généralement beaucoup plus rapidement que lorsque le byte code est exécuté par l'interpréteur. Le compilateur JIT est un outil standard qui fait partie de la JVM et invoqué chaque fois que vous utilisez la commande interpréteur Java. Vous pouvez désactiver le compilateur JIT à l'aide de l'option -Djava.compiler = NONE sur la machine virtuelle Java. Vous souhaiterez peut-être désactiver le compilateur JIT si vous exécutez la machine virtuelle Java en mode de débogage distant, ou si vous souhaitez voir les numéros de ligne source au lieu de l'étiquette (code compilé) dans les stack traces de Java.


Question 3 : Est-il possible de convertir du byte code en code source ?


Réponse 3 : Oui. Un décompilateur Java est un programme informatique capable d'inverser le travail effectué par un compilateur. En substance, il peut reconvertir le byte code (c'est-à-dire le fichier .class) en code source (c'est-à-dire le fichier .java). Il existe aujourd'hui de nombreux décompilateurs, mais le décompilateur JD (Java Decompiler) le plus utilisé est disponible à la fois en tant que programme GUI autonome et en tant que plug-in Eclipse.


Question 4 : Quand utiliser un décompilateur ?


Réponse 4 :


1) Lorsque vous avez des fichiers *.class et que vous n'avez pas accès au code source (fichiers *.java). Par exemple, certains fournisseurs ne livrent pas le code source des fichiers de classe java ou vous avez accidentellement perdu (par exemple supprimé) votre code source, auquel cas vous pouvez utiliser le décompilateur Java pour reconstruire le fichier source.


2) Un autre scénario est que si vous avez généré vos fichiers .class à partir d'un autre langage comme un script groovy, à l'aide de la commande groovyc, vous souhaiterez peut-être utiliser un décompilateur Java pour inspecter le code source Java pour les fichiers de classe générés groovy à déboguer ou à obtenir une meilleure compréhension de l'intégration groovy avec Java.


3) Pour vous assurer que votre code est correctement obscurci avant de le publier dans le domaine public.


4) Correction et débogage des fichiers .class lorsque les développeurs sont lents à répondre aux questions qui nécessitent des réponses immédiates. Pour apprendre à la fois Java et le fonctionnement de la machine virtuelle Java.


5) Apprenez et déboguez comment le code avec les types génériques a été converti après la compilation.


Question 5 : Est-il possible d'empêcher la conversion du byte code en code source ?


Réponse 5 :

Si vous souhaitez protéger vos fichiers de classe Java contre la décompilation, vous pouvez jeter un œil sur un outil d'obfuscation Java comme yGuard ou ProGuard, sinon vous devrez dire à votre propriété intellectuelle au revoir .


Question 6 : Quelles sont les deux modes d’exécution de JVM ?


Réponse 6 : Mode client et mode serveur.


Le mode client est adapté aux programmes de courte durée comme les applications GUI autonomes. Spécialement réglé pour réduire le temps de démarrage des applications et l'empreinte mémoire, ce qui le rend bien adapté aux applications clientes.

Par exemple: c: \> java -client MyProgram.


Le mode serveur convient aux applications serveur de longue durée, qui peuvent être actives pendant des semaines ou des mois à la fois. Spécialement réglé pour minimiser le temps d’exécution des opérations. Le temps d’exécution des opérations est plus important que le temps de démarrage rapide ou l'utilisation de la mémoire :

c: \> java -server MyProgram.


Question 7 : Comment savez-vous dans quel mode votre JVM fonctionne ?


Réponse 7 : c:\> java –version


Question 8 : Quelle est la différence entre JVM 32 bits et JVM 64 bits ?


Réponse 8 : Les JVM sont disponibles en 32 bits (argument JVM -d32) et 64 bits (argument JVM -d64). Les JVM 64 bits ne sont disponibles qu'à partir de JDK 5.0. Il est recommandé d'utiliser la 32 bits comme JVM par défaut et la 64 bits si plus de mémoire est nécessaire que ce qui peut être alloué à une JVM 32 bits. La machine virtuelle Java Oracle ne peut pas dépasser ~ 2 Go sur une machine serveur 32 bits même si vous installez plus de 2 Go de RAM sur votre serveur. Il est recommandé d'utiliser un système d'exploitation 64 bits avec un matériel de mémoire plus important lorsque des tailles de segment plus importantes sont requises. Par exemple,> 4 Go sont affectés à la machine virtuelle Java et utilisés pour les déploiements de> 250 utilisateurs simultanés ou> 2500 utilisateurs occasionnels.


Question 9 : Quels sont les arguments JVM que vous pouvez utiliser dans vos projets ?


Réponse 9 :

Pour définir une propriété système qui peut être récupérée à l'aide de

System.getPropety (property-name);


Pour définir le chemin de classe: -cp ou –classpath :


Pour définir les options du Garbage Collector :


Question 10 : Comment surveiller les JVM ?


Réponse 10 : Depuis Java SE 5.0, le JRE fournit un moyen de gérer et de surveiller la machine virtuelle Java. Il se décline en deux méthodes :





1) La JVM dispose d'un instrument intégré qui vous permet de la surveiller et de la gérer à l'aide de Java Management eXtension (JMX). Vous pouvez également surveiller des applications instrumentées avec JMX. Pour démarrer une application Java avec l'agent de gestion pour la surveillance locale, définissez l'argument JVM suivant lorsque vous exécutez votre application :


Pour démarrer la JConsole :


2) L'autre méthode est d’utiliser SNMP (Simple Network Management Protocol) qui permet de créer un agent qui s'appuie sur l'API de gestion et de surveillance de la plate-forme Java SE et expose les mêmes informations via SNMP. Les événements SNMP peuvent être envoyés. Splunk, Nagios, Zenoss, OpenNMS et Netsnmp sont quelques outils SNMP populaires.


Question 11 : Qu'est-ce qu'un fichier jar ? En quoi diffère-t-il d'un fichier zip ?


Réponse 11 : JAR signifie Java ARchive. Un fichier jar a généralement une extension de nom de fichier .jar. Il contient principalement des fichiers de classe Java mais tous les types de fichiers peuvent être inclus. Par exemple, des fichiers XML, des fichiers de propriétés, des fichiers HTML, des fichiers image, des fichiers binaires, etc. Vous pouvez utiliser l'utilitaire d'application «jar» intégré dans /JDK1.6.0/jre/bin pour créer, extraire et afficher son contenu. Vous pouvez également utiliser n'importe quel utilitaire de fichier zip pour afficher son contenu. Un fichier jar ne peut pas contenir d'autres fichiers jar, Alors qu'un fichier war ou ear peut en contenir plusieurs.


Vous pouvez trouver une explication détaillée dans notre formation en ligne sur Java EE.


Fondamentalement, un fichier jar est identique à un fichier zip, sauf qu'il contient un répertoire META-INF pour stocker des métadonnées ou des attributs. Le fichier le plus connu est META-INF / MANIFEST.MF. Lorsque vous créez un fichier JAR, il reçoit automatiquement un fichier manifeste par défaut. Il ne peut y avoir qu'un seul fichier manifeste dans une archive. La plupart des utilisations des fichiers JAR au-delà du simple archivage et de la compression nécessitent des informations spéciales dans le fichier manifeste. Par exemple :

- Si vous avez une application regroupée dans un fichier JAR, vous avez besoin d'un moyen d'indiquer quelle classe dans le fichier JAR est le point d'entrée de votre application. Le point d'entrée est la classe ayant une méthode avec signature public static void main (String [] args). Par exemple, Main-Class: Test.class

- Un package dans un fichier JAR peut être éventuellement scellé, ce qui signifie que toutes les classes définies dans ce package doivent être archivées dans le même fichier JAR. Vous souhaiterez peut-être sceller un package, par exemple, pour garantir la cohérence de la version entre les classes de votre logiciel ou par mesure de sécurité.

Name: myCompany / myPackage /

Sealed: true









0 vue

#Suivez-Nous

+213560764957

©2020 by DIGITAL GROWING.