Dans le monde Java, nous parlons souvent de la JVM, et lorsque Java était nouveau, il avait la fonction supposée tueuse de "Write Once, Run Anywhere".
De la façon dont les gens parlent et écrivent, cela semble différent de la façon dont Python, par exemple, fonctionne. Pourtant, je ne savais pas que le code Python que j'avais écrit fonctionnerait différemment sur une autre machine. (Même si je n'ai pas beaucoup écrit en Python.)
Alors qu'est-ce qui me manque? En quoi la JVM est-elle différente d'un interpréteur Python? Existe-t-il un moyen pour Python de ne pas être indépendant de la plate-forme Java? Ou est-ce juste une différence culturelle?
java
python
cross-platform
jvm
Eric Wilson
la source
la source
Réponses:
Java fait un très bon travail pour vous isoler du système d'exploitation sous-jacent et vous donne les mêmes outils exacts sur la plupart des plates-formes sur lesquelles il travaille pour parler des choses dans le système d'exploitation sous-jacent.
Python, d'autre part, ne fait pas un bon travail pour vous isoler du système d'exploitation sous-jacent, il n'a pas de méthode standard de gestion entre les communications de processus (regardez les différences entre le module sys et le module os entre une fenêtre et * implémentation nix de Python par exemple.)
J'ai écrit du code en python qui ne fonctionnerait que sur une boîte * NIX ou Windows en utilisant uniquement les appels d'API disponibles Python, où en Java il serait très difficile d'écrire du code qui était juste une API Java qui ne fonctionnerait pas de la même Boîte Windows ou * boîte NIX
la source
Topiquement et uniquement à partir d'un runtime de langue, il y a peu de différence. La JVM en particulier est conçue non seulement comme un interprète, mais aussi un compilateur d'exécution, l'inférence de code, une couche de virtualisation instrumentale qui peut avoir des crochets dynamiques appliqués, diverses sémantiques GC et la capacité de décrire l'ergonomie de la virtualisation, pour n'en nommer que quelques-uns. Python peut fonctionner dans une JVM? Java peut-il s'exécuter dans un interpréteur Python?
La plupart des interprètes sont des interprètes de langage / jeton d'exécution, des machines virtuelles Java (et d'autres), comme vous le savez, interpréter / compiler / exécuter du code intermédiaire. IBM, par exemple, fait cela depuis des décennies en dehors de Java, ce n'est pas nouveau. Même VB a fonctionné en code intermédiaire pendant un certain temps, je crois?
Le WORA est pour la plupart dépassé maintenant, car de nombreux langages interprétés fonctionnent à peu près n'importe où sans changement.
la source
Lorsque Java était nouveau, WORA était quelque chose dont on pouvait se vanter - en particulier, que vous pouviez compiler sur une plateforme et l'exécuter (bytecode compilé) sur d'autres plateformes.
Bien sûr, les langages interprétés fonctionnent à peu près de la même manière, quelle que soit la plateforme sur laquelle s'exécute l'interpréteur (tant que l'interpréteur est disponible pour cette plateforme). Cependant, les systèmes de fichiers, les problèmes d'autorisation, les encodages, les fins de ligne et d'innombrables autres petits problèmes irritants peuvent provoquer des maux de tête. Certaines choses dépendantes de la plateforme ne sont pas faciles à résumer.
la source
Python a-t-il une interface graphique indépendante de la plate-forme?
Quoi qu'il en soit, la fonctionnalité WORA était - encore une fois - d'attirer les programmeurs C, car C avait tendance à modéliser la plate-forme sous-jacente, et comme les plates-formes étaient différentes (taille du mot? Endianess?), La création de programmes C entièrement portables nécessitait beaucoup de soin et d'attention.
La promesse de Java était que toute cette fastidieuse ne devait pas être faite, car la plate-forme est très bien définie et vous SAVEZ qu'un caractère est de 16 bits, etc. L'interface graphique est également écrite en Java et également 100% portable, ce qui signifie que votre programme peut s'exécuter sur un ordinateur dont vous n'avez jamais entendu parler et même fonctionner correctement.
la source
Sauf que Java n'est absolument pas WORA. J'ai vu un logiciel Java qui s'est cassé après que Java a été mis à niveau vers une version supérieure sur le numéro de version mineur . À mon humble avis, WORA n'est qu'un gadget marketing.
la source