2010-01-22 18 views
10

Sólo por curiosidad para saber cuándo java se hace independiente de la plataforma, ¿hay razones específicas JVM se hace dependiente de la plataforma ..¿Por qué la JVM no es independiente de la plataforma, dado que Java (el idioma) es independiente de la plataforma?

+7

¿Qué estás pidiendo en realidad? – nos

+5

Personalmente creo que esto no debería haber sido cerrado (voté para reabrir). La pregunta puede estar formulada en forma limitada, pero hay una pregunta "real" allí (aunque la respuesta puede parecer obvia a primera vista para algunos). – ChristopheD

+0

@ChristopheD - ¿podría aclarar la pregunta? – KatieK

Respuesta

13

A menos que tenga una CPU que pueda ejecutar código byte de Java (hay tales cosas), debe poder interactuar con el sistema operativo (para cosas como leer archivos, conectarse a la red, mostrar a la pantalla, etc. ..).

Puede escribir una JVM en otros idiomas (como Java o JavaScript), pero en última instancia tiene que haber algo que pueda interactuar con el sistema operativo subyacente.

16

La JVM ejecuta código Java, pero está escrito en la plataforma de lenguajes específicos, tales como C/C++/ASM etc. . La JVM no está escrita en Java y, por lo tanto, no puede ser independiente de la plataforma.

+2

En realidad, varias JVM * están * escritas en Java: Maxine y Jikes son solo dos ejemplos. –

+2

Debido a que se requiere un cargador de C dependiente de plataforma pequeña para iniciar el arranque, no importa lo que digan, la JVM no es 100% java :) –

+1

Tiene razón. Aunque la forma en que esas máquinas virtuales tienden a usar C es más como un lenguaje de descripción de datos y no como un lenguaje de programación. En su mayoría, confían en el compilador de C para obtener las estructuras de datos establecidas como el sistema operativo las espera y no tanto para la semántica de C. Probablemente puedas escribir un programa Java que genere los diseños de memoria correctos, pero ¿por qué lo harías? El compilador de C de la plataforma ya contiene toda la desagradable lógica de diseño. –

9

La JVM debe depender de la plataforma para permitir que su Java se ejecute en la plataforma específica. Una JVM para Windows traducirá su Java en diferentes llamadas al sistema que una JVM para OS X.

3

Porque es necesario que haya alguna forma de convertir las llamadas Java de la aplicación independiente de la plataforma a llamadas que son compatibles con el sistema operativo subyacente.

11

me pareció que esta era una gran respuesta a la pregunta:

JVM bytecode traduce en lenguaje de máquina

programa Cada Java es compilado en un lenguaje intermedio denominado código de bytes de Java. El JVM se usa para traducir el bytecode en el idioma de la máquina para una computadora particular , y también para ejecutar las instrucciones de lenguaje de máquina correspondientes. El JVM y el bytecode combinados dan a Java su estado como un lenguaje "portátil".

El lenguaje de máquina depende del sistema operativo

Dada la información anterior, debería ser más fácil de deducir una respuesta a la pregunta . Dado que la JVM debe traducir el código de bytes en el lenguaje de máquina , y dado que el idioma de la máquina depende del sistema operativo que se utiliza, está claro que la plataforma JVM es dependiente de la plataforma (sistema operativo). Este hecho puede verificarse intentando descargar la JVM - se le dará una lista de JVM correspondientes a diferentes sistemas operativos, y obviamente elegirá la JVM para el sistema operativo que esté ejecutando.

Citado de Is the JVM Platform Dependent?

+0

esta respuesta es útil ... –

3

No, JVM no son independientes de la plataforma. De hecho, son entornos de tiempo de ejecución específicos de plataforma proporcionados por el proveedor. Cada plataforma (Windows, UNIX, Mac, etc.) tiene su propia JVM para ejecutar aplicaciones Java. Aunque el código de bytes admite la conexión a múltiples bases de datos ...

Piense en la reproducción de música en un reproductor de MP3, reproductor de CD y antiguos reproductores de casetes fieles (Boom Box). La salida es siempre la misma, es decir, música. Pero la entrada (medios es decir.los archivos mp3 para reproductores de MP3, CD para reproductores de CD y casetes para reproductores de casetes) varían según el sistema [aquí los sistemas serán los diversos sistemas operativos, como Windows, UNIX, Mac, etc.]. Espero haber podido resolver su problema ...

0

simplemente como - * - hace un +.

Todos sabemos Java es independiente de la plataforma

pero OS en el que escribir el código es dependiente de la plataforma

y salida debe ser independiente de la plataforma modo, hacemos JVM (que es en el medio y se instala con jre) depende de la plataforma para que la salida sea independiente.

+0

tipo de. El lenguaje es independiente de la plataforma, pero de alguna manera debe ejecutarse en dicha plataforma. La maquinaria para hacer eso dependerá de la plataforma donde se ejecute. – vonbrand

0

Creo que podría ser independiente de la plataforma si se combinan muchos idiomas diferentes (cada uno escrito en una plataforma específica) para hacer que cambie su propio código de forma dinámica. Pero todos estos requieren un gran esfuerzo para suceder y tal vez destruir su portabilidad .

0

JVM traduce el código de bytes que es universal al código de máquina que depende de la máquina, por lo tanto, JVM depende de la plataforma. Debido a este código de bytes, Java es independiente de la plataforma.

-1

No, JVM depende de la plataforma. El código escrito en Java no depende de la plataforma. Si escribe código Java en un sistema operativo Windows, puede ejecutar ese código en Linux u otros sistemas operativos. Pero la JVM para Windows y Linux es diferente. JVM se encuentran en JRE y cuando descarga JRE de Oracle dice JRE para Windows, Linux y otros sistemas operativos

1

JVM depende del sistema operativo. Para que el código sea independiente, algo debe ser dependiente y eso es JVM. Al descargar JDK, solicita el sistema operativo para el que desea descargarlo. Lo que claramente implica que JVM depende de la plataforma.

1

La JVM no es independiente de la plataforma

La clave aquí es que la JVM depende del sistema operativo - por lo que si está ejecutando Mac OS X tendrá una JVM diferente que si está ejecutando Windows o algún otro sistema operativo. Este hecho puede verificarse tratando de descargar la JVM para su máquina en particular: cuando intente descargarla, se le dará una lista de las JVM correspondientes a los diferentes sistemas operativos, y obviamente elegirá la JVM que se seleccione para el sistema operativo que estas corriendo.

Cuestiones relacionadas