En el mundo de Java, a menudo hablamos de la JVM, y cuando Java era nuevo, tenía la característica supuestamente asesina de "Escribir una vez, ejecutar en cualquier lugar".
Por la forma en que las personas hablan y escriben, esto parece diferente de la forma en que funciona Python, por ejemplo. Sin embargo, no he tenido conocimiento de ninguna manera en que el código Python que he escrito funcionaría de manera diferente en otra máquina. (Aunque no he escrito tanto Python).
Entonces, ¿qué me estoy perdiendo? ¿Cómo es la JVM diferente de un intérprete de Python? ¿Hay alguna forma en que Python carece de la independencia de la plataforma Java? ¿O es solo una diferencia cultural?
java
python
cross-platform
jvm
Eric Wilson
fuente
fuente
Respuestas:
Java hace un muy buen trabajo al aislarlo del sistema operativo subyacente y le brinda las mismas herramientas exactas en la mayoría de las plataformas en las que trabaja para hablar con las cosas en el sistema operativo subyacente.
Python, por otro lado, no hace un buen trabajo al aislarlo del sistema operativo subyacente, no tiene una forma estándar de manejo entre las comunicaciones de proceso (observe las diferencias en el módulo sys y el módulo os entre una ventana y * implementación nix de Python, por ejemplo).
He escrito código en python que solo funcionaría en un cuadro * NIX o en un cuadro de Windows utilizando solo las llamadas API disponibles de Python, donde en Java sería muy difícil escribir código que fuera solo API Java que no funcionaría igual en ambos Cuadro de Windows o cuadro * NIX
fuente
Tópicamente y solo desde un tiempo de ejecución de idioma, hay poca diferencia. El JVM en particular está diseñado no solo como un intérprete sino también como un compilador de tiempo de ejecución, inferencia de código, una capa de virtualización instrumental que puede tener ganchos dinámicos aplicados, varias semánticas de GC y la capacidad de describir la ergonomía de la virtualización, por nombrar algunos. Python puede ejecutarse en una JVM? ¿Puede Java ejecutarse en un intérprete de Python?
La mayoría de los intérpretes son intérpretes de lenguaje de ejecución / token, JVM (y otros) como usted sabe interpretar / compilar / ejecutar código intermedio. IBM, por ejemplo, ha estado haciendo esto durante décadas fuera de Java, no es nada nuevo. ¿Incluso VB se ejecutó en código intermedio durante algún tiempo, creo?
El WORA ahora está casi pasado de moda, ya que muchos idiomas interpretados se ejecutan prácticamente en cualquier lugar sin cambios.
fuente
Cuando Java era nuevo, WORA era algo de lo que jactarse, específicamente, que podía compilar en una plataforma y ejecutar eso ( código de bytes compilado) en otras plataformas.
Por supuesto, los idiomas interpretados se ejecutan de manera bastante similar, independientemente de en qué plataforma se ejecute el intérprete (siempre que el intérprete esté disponible para esa plataforma). Sin embargo, los sistemas de archivos, problemas de permisos, codificaciones, terminaciones de línea e innumerables problemas pequeños pero irritantes pueden causar dolores de cabeza. Algunas cosas que dependen de la plataforma no son fáciles de abstraer.
fuente
¿Python tiene una GUI independiente de la plataforma?
De todos modos, la característica de WORA era, nuevamente, atraer a los programadores de C, ya que C tendía a modelar de cerca la plataforma subyacente, y como las plataformas eran diferentes (¿tamaño de la palabra? ¿Endianess?), La creación de programas de C totalmente portátiles requería gran cuidado y atención.
La promesa de Java era que todo este tedio no tenía que hacerse, ya que la plataforma está muy bien definida y SABES que un carácter es de 16 bits, etc. Además, la GUI está escrita en Java y también es 100% portátil, lo que significa que tu El programa puede ejecutarse en una computadora de la que nunca ha oído hablar e incluso ejecutarse correctamente.
fuente
Excepto que Java es enfáticamente no WORA. He visto software de Java que se rompió después de que Java se haya actualizado a una versión superior en el número de versión menor . En mi humilde opinión, WORA es solo un truco de marketing.
fuente