81 votes

Comment la plate-forme Java est-elle indépendante lorsqu'elle a besoin d'une machine virtuelle Java?

J'ai juste commencé à apprendre le Java et je suis confus sur le sujet de l'indépendance de plate-forme.

N'est pas "indépendant" signifie que le code Java doit s'exécuter sur n'importe quelle machine et n'ont pas besoin de logiciel spécial pour être installé? Pourtant, la JVM doit être présent dans la machine.

Par exemple, nous avons besoin d'avoir le Turbo C Compilateur pour compiler en C/C++ code source, et puis l'exécuter. La machine doit avoir le compilateur C.

Pourrait quelqu'un merci de ce que l'on entend lorsque Java est décrit comme "indépendant de la plateforme"?

112voto

Edwin Buck Points 33097

Généralement, le code compilé est exactement le jeu d'instructions du PROCESSEUR nécessite d'exécuter le programme. En Java, le code compilé est un ensemble précis d'instructions pour un "PROCESSEUR virtuel" qui est nécessaire pour travailler de la même sur chaque machine physique.

Donc, dans un sens, les concepteurs du langage Java a décidé que la langue et le code compilé allait être indépendant de la plateforme, mais étant donné que le code a, finalement, à exécuter sur une plate-forme physique, ils ont choisi de mettre tous les dépendants de la plateforme de code dans la JVM.

Cette exigence d'une JVM est en contraste à votre Turbo C exemple. Avec Turbo C, le compilateur produira dépendants de la plateforme de code, et il n'est pas nécessaire pour une JVM travail-aussi bien que la compilation des Turbo C programme peut être exécuté par le PROCESSEUR directement.

Avec Java, le PROCESSEUR exécute la JVM, qui est dépendant de la plate-forme. Ce fonctionnement de la JVM puis exécute le bytecode Java qui est indépendant de la plateforme, à condition que vous ayez une JVM disponible pour exécuter sur. Vous pourriez dire que l'écriture de code Java, vous n'avez pas de programme pour l'exécution du code sur la machine physique, vous écrivez le code destiné à être exécuté sur une Machine Virtuelle Java.

La seule façon que tout ce bytecode Java fonctionne sur toutes les machines virtuelles Java, c'est que plutôt une norme stricte a été écrit pour la façon dont la machine virtuelle Java de travail. Cela signifie que n'importe quelle plate-forme physique que vous utilisez, la partie où le bytecode Java les interfaces avec la JVM est garanti pour fonctionner que d'une seule façon. Depuis toutes les machines virtuelles fonctionnent exactement de la même chose, le même code fonctionne exactement de la même façon partout, sans recompilation. Si vous ne pouvez pas passer les tests pour s'assurer que c'est le même, vous n'êtes pas autorisé à appeler votre machine virtuelle une "machine virtuelle Java".

Bien sûr, il ya des façons que vous pouvez briser la portabilité d'un programme Java. Vous pouvez écrire un programme qui recherche des fichiers ne se trouvent que sur un système d'exploitation (cmd.exe pour exemple). Vous pouvez utiliser JNI, ce qui vous permet de mettre compilé en code C ou C++ dans une classe. Vous pouvez utiliser les conventions, qui ne fonctionnent que pour un certain système d'exploitation (par exemple, la supposition ":" sépare les répertoires). Mais vous êtes assuré de ne jamais avoir à recompiler votre programme pour une machine différente, sauf si vous êtes en train de faire quelque chose de vraiment spécial (comme JNI).

54voto

Jatin Khurana Points 505
            Technical Article on How java is platform indepedent?

Avant de rentrer dans le détail,vous devez d'abord comprendre ce qu'est la moyenne de la plate-forme? Plate-forme se compose du matériel de l'ordinateur(principalement l'architecture du microprocesseur) et OS. La plate-forme=matériel+Système d'Exploitation

Tout ce qui est de la plateforme indepedent peut s'exécuter sur n'importe quel système d'exploitation et le matériel.

Java est une plate-forme indepedent donc java peut fonctionner sur tout système d'exploitation et le matériel. Maintenant la question est de savoir comment il est indépendant de la plateforme?

C'est à cause de la magie de Byte Code qui est OS indepedent. Lorsque le compilateur java compiler le code puis il générer le code d'octets et non pas la machine en code natif(contrairement au C du compilateur).Maintenant, c' code octet besoin d'un interprète pour s'exécuter sur une machine.Cet interprète est de la JVM.Donc JVM lu que le byte code(c'est la machine indepedent) amd l'exécuter. Différentes JVM est conçu pour les différents OS et de byte code est capable de fonctionner sur différents systèmes d'exploitation.

Dans le cas de C ou C++(langage qui ne sont pas de la plateforme indepedent) compilateur de générer de l' .fichier exe qui est de l'OS depedent alors, quand nous exécuter cette .exe fichier sur un autre OS, il ne fonctionnera pas car ce fichier est OS depedent n'est donc pas compatible avec les autres systèmes d'exploitation.

Enfin un intermédiaire OS indepedent de Byte code faire la java indépendant de la plateforme.

26voto

Matthew Flaschen Points 131723

Cela signifie que le programmeur Java n'a pas (en théorie) besoin de connaître les détails de la machine ou du système d'exploitation. Ces détails existent et sont gérés par la bibliothèque JVM et les bibliothèques de classes. En outre, contrairement au langage C, les fichiers binaires Java (bytecode) peuvent souvent être déplacés vers des systèmes entièrement différents sans modification ni recompilation.

9voto

Lars Andren Points 2902

La JVM est un "simulé machine" qui peut être installé sur des systèmes différents. De cette manière, le même code Java peut fonctionner sur différents systèmes, parce qu'il repose sur la JVM, et non pas sur le système d'exploitation lui-même.

C'est-à-dire, ce qui permet au programmeur de communiquer avec la machine virtuelle (JVM) et d'utiliser ses fonctions, au lieu de la machine et l'OS de fonctions. Depuis Java ne repose que sur la JVM, il est indépendant de la plateforme (si la plate-forme de la JVM installée).

Donc, en bref, Java n'est pas indépendant de la plateforme en tant que tel, il nécessite une JVM-installation de tous les systèmes, il devrait fonctionner sur. Cependant, il va fonctionner sur tous les systèmes qui a la JVM installée.

9voto

Guffa Points 308133

Non, c'est l'inverse. C'est parce que vous utilisez la machine virtuelle que le programme Java est indépendant.

La machine virtuelle n’est pas indépendante, vous devez en installer une qui est spécialement conçue pour votre type de système. La machine virtuelle crée une plate-forme indépendante au-dessus du système d'exploitation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X