Java Virtual Machine (JVM) et principes multiplateformes <BR /> Je crois que tout le monde a appris que Java a des fonctionnalités multiplateliées, peut être "compilée immédiatement et s'exécuter partout". Modifications.
Alors, comment la plate-forme multiplateuse est-elle implémentée? Cela implique de parler de Java Virtual Machine (JVM).
JVM est également un logiciel et différentes plates-formes ont des versions différentes. Le code source Java que nous écrivons générera un fichier .class appelé un fichier bytecode après compilation. La machine virtuelle Java est chargée de traduire le fichier bytecode en code machine sous une plate-forme spécifique, puis de l'exécuter. En d'autres termes, tant que le JVM correspondant est installé sur différentes plates-formes, vous pouvez exécuter le fichier bytecode et exécuter le programme Java que nous avons écrit.
Au cours de ce processus, le programme Java que nous avons écrit n'a apporté aucun changement.
JVM est un "pont" et un "middleware" qui est la clé de l'implémentation multiplateforme. but.
Remarque: Le résultat de la compilation n'est pas de générer du code machine, mais de générer des bytecodes. Le bytecode généré par compilation et génération sous différentes plates-formes est le même, mais le code machine traduit par JVM est différent.
Par conséquent, l'exécution des programmes Java doit avoir une prise en charge JVM, car le résultat de la compilation n'est pas du code machine, et il doit être traduit à nouveau par le JVM avant l'exécution. Même si vous emballez les programmes Java en exécutables (tels que .exe), vous avez toujours besoin de support JVM.
Remarque: Programmes Java multiplateformes, pas JVMS. JVM est développé en C / C ++ et est le code machine compilé.
Sur l'efficacité d'exécution de JVM
Au cours des dernières années du lancement de Java, les gens ont eu des opinions différentes.
Cependant, le JVM a une option pour traduire et enregistrer le bytecode le plus fréquemment utilisé en code machine, un processus appelé compilation instantanée. Cette méthode est en effet très efficace, ce qui a conduit à l'utilisation de machines virtuelles sur la plate-forme .NET de Microsoft.
Les compilateurs en temps opportun sont désormais assez remarquables et sont même devenus des concurrents de compilateurs traditionnels, et dans certains cas, même dépasser les compilateurs traditionnels car le JVM peut surveiller les informations d'exécution. Par exemple, un compilateur instantané peut surveiller et optimiser le code fréquemment utilisé, éliminant les appels de fonction (c'est-à-dire "intégrés").
Cependant, Java a des frais généraux supplémentaires que C / C ++ n'a pas, et les applications clés sont plus lentes. Par exemple, Java adopte une méthode de dessin indépendante de la plate-forme, et l'exécution des programmes GUI (programmes clients) est lente;
L'échec du marché client
La bibliothèque GUI de Java n'est pas excellente, l'interface n'est pas conviviale et la plupart des utilisateurs n'y sont pas habitués;
Ce qui est encore plus inacceptable, c'est qu'après que Microsoft ait divisé ses propres intérêts et Sun, Windows n'a plus de JVM préinstallé. . Mais pouvez-vous vous attendre à ce qu'il sache sur JVM et installe correctement les paramètres?
Bien que vous puissiez intégrer le JVM dans votre programme, installez-le et configurez-vous automatiquement, et ne pas autoriser l'intervention de l'utilisateur, voulez-vous venir avec un JVM beaucoup plus grand que votre programme? Il peut être acceptable pour un logiciel de le faire. Combien est gaspillé dans l'espace disque?
Par conséquent, peu de programmes clients pour les utilisateurs ordinaires qui sont directement lancés sur le marché sont développés en Java. Si vous souhaitez vous engager dans le développement des clients, il est recommandé d'apprendre C / C ++ et .NET, qui présentent de grands avantages dans le développement du client Windows.
Diverses raisons sont destinées à être défavorables pour être introduites sur le marché et sont acceptées par les utilisateurs ordinaires. Mais là encore, le développement des clients n'est pas l'intention initiale de Java.
Concepts de classes et d'objets Java
Java est un langage de programmation orienté objet.
Les cours de Java peuvent être considérés comme une version améliorée des structures en langue C. Une structure est un type de données construit qui peut contenir différents membres (variables), et les types de données de chaque membre peuvent être différents; Par exemple:
#include <stdio.h> int main () {// Définir l'étudiant de la structure {// le nom de char * variable; / Les membres de la structure d'opération Stu1.Name = "Xiao Ming"; nom, Stu1.age, Stu1.score);}} Résultats en cours:
L'âge de Xiao Ming est de 15 ans et sa note est de 92,500000
Les classes de Java sont également un type de construction de types de données, mais ont été étendues. Par exemple:
classe publique Demo {public static void main (String [] args) {// Définir la classe Student Student {// Définir la classe à travers la classe Class Class // Variables contenues dans le nom de chaîne de classe; La fonction incluse void dit () {System.out.println (Nom + "L'âge est" + Age + ", le score est" + score); Étudiant Stu1 = New Student (); )); Résultats en cours:
L'âge de Xiao Ming est de 15 ans et sa note est de 92,5
Dans le langage C, la définition des variables de structure peut être complétée par le nom de la structure et l'espace mémoire peut être alloué; espace.
L'analogie peut être comparée aux dessins, les objets peuvent être comparés aux pièces et les dessins expliquent les paramètres des pièces et les tâches qu'ils entreprennent; un dessin peut produire des pièces avec les mêmes propriétés, et différents dessins peuvent produire différents types de pièces.
Dans Java, en utilisant le nouveau mot-clé, vous pouvez créer des objets via des classes, c'est-à-dire des dessins en parties.
Remarque: La classe est juste un dessin qui joue une explication et n'occupe pas d'espace mémoire;
Les variables et les fonctions contenues dans une classe ont des noms spécifiques.
Programmation orientée objet (POO)
Les classes sont un concept général. Les classes peuvent être considérées comme une version améliorée des structures. - Projets de taille.
Parce que Java, C ++ et d'autres langues prennent en charge les classes et les objets, l'écriture de programmes dans ces langues est également appelée programmation orientée objet, et ces langages sont également appelés langages de programmation orientés objet. Parce que le langage C ne prend pas en charge les concepts des classes et des objets, il est appelé un langage de programmation orienté vers le processus.
En fait, orienté objet n'est qu'une mise à niveau axée sur le processus.
Dans le langage C, les blocs de code réutilisés qui remplissent une certaine fonction peuvent être définis comme des fonctions, et les fonctions avec une classe de fonctions sont déclarées dans un fichier d'en-tête, et les fonctions de différents types sont déclarées dans différents fichiers d'en-tête pour exécuter une meilleure gestion, facile à écrire et à appeler.
Dans Java, le bloc de code qui complète une certaine fonction peut être défini comme une méthode, et des méthodes avec des fonctions similaires peuvent être définies dans une classe, c'est-à-dire dans un fichier source (car un fichier source ne peut contenir qu'une seule classe publique), Plusieurs fichiers source peuvent être situés dans un dossier, qui a un nom spécifique appelé un package.
Ce qui précède est C ++, tandis que Java est:
La programmation orientée objet n'a absolument aucun avantage dans l'efficacité de l'exécution des logiciels.