son que powered plataformas las funciona descargar cuales compilador como caracteristicas java cross-platform

que - java runtime environment



¿Cómo es independiente de la plataforma Java cuando necesita una JVM para ejecutarse? (22)

¿Independiente significa que el código Java debería poder ejecutarse en cualquier máquina y no necesitaría instalar ningún software especial (JVM en este caso debe estar presente en la máquina)?

Con Java, puede compilar el código fuente en Windows y el código compilado (bytecode para ser más preciso) puede ser ejecutado (interpretado) en cualquier plataforma que ejecute una JVM. Entonces sí necesita una JVM pero la JVM puede ejecutar cualquier código compilado, el código compilado es independiente de la plataforma .

En otras palabras, tiene tanto la portabilidad del código fuente como la portabilidad del código compilado.

Como, por ejemplo, necesitamos tener el Compilador Turbo C para compilar el código fuente C / C ++ y luego ejecutarlo ... La máquina debe tener el compilador C.

La máquina no tiene que tener un compilador de C, la máquina tiene que usar un binario específico de la plataforma. Con C o C ++, el código compilado es específico para cada arquitectura, es independiente de la plataforma .

En otras palabras, con C / C ++ tiene la portabilidad del código fuente (con cierta disciplina) pero no la portabilidad del código compilado: necesita recompilar para cada arquitectura en binarios específicos de la plataforma.

Acabo de empezar a aprender Java y estoy confundido sobre el tema de la independencia de la plataforma.

¿No implica "independiente" que el código Java debe ejecutarse en cualquier máquina y no necesita instalar ningún software especial? Sin embargo, la JVM debe estar presente en la máquina.

Por ejemplo, necesitamos tener el Compilador Turbo C para compilar el código fuente C / C ++ y luego ejecutarlo. La máquina debe tener el compilador de C.

¿Alguien podría querer lo que se entiende cuando Java se describe como "plataforma independiente"?


{App1 (código Java) ------> App1byteCode} ........ {(JVM + MacOS) ayuda a trabajar con App1, App2, App3}

{App2 (Java Code) -----> App2byteCode} ........ {(JVM + LinuxOS) ayuda a trabajar con App1, App2, App3}

{App3 (Java Code) -----> App3byteCode} ........ {(JVM + WindowsOS) ayuda a trabajar con App1, App2, App3}

¿Cómo está pasando esto?

Respuesta: JVM tiene capacidad para leer ByteCode y Response de acuerdo con el sistema operativo subyacente, ya que JVM está en sincronización con el sistema operativo.

Entonces, encontramos que necesitamos JVM con Sync with Platform.

Pero lo principal es que el programador no tiene que conocer conocimientos específicos de la Plataforma y programar su aplicación teniendo en cuenta una plataforma específica.

Esta flexibilidad del programa de escritura en Java --- compilar a ByteCode y ejecutar en cualquier máquina (Sí, es necesario tener JVM de plataforma DEPENDIENTE para ejecutarlo) hace que Java Platform sea independiente.


Cuando compilamos datos de origen C, genera un código nativo que puede ser entendido por el sistema operativo actual. Cuando movemos este código fuente al otro sistema operativo, no puede ser entendido por el sistema operativo debido a que el código nativo significa que la representación es cambio de OS a OS. Por lo tanto, C o C ++ dependen de la plataforma.

Ahora en el caso de Java, después de la compilación obtenemos código de bytes en lugar de código nativo. Cuando ejecutaremos el código de bytes, se convertirá en código nativo con la ayuda de JVM y luego se ejecutará.

Por lo tanto, Java es independiente de la plataforma y C o C ++ no es independiente de la plataforma.


En c / c ++, el código fuente (archivo de programa c) después de la compilación usando un compilador se convierte directamente en código de máquina nativo (que es entendible para una máquina particular en la que se compila el código). Y, por lo tanto, el código compilado de c / c ++ no puede ejecutarse en sistemas operativos diferentes.

Pero en el caso de Java: el archivo fuente de Java (.java) se compilará utilizando el compilador JAVAC (presente en JDK) que proporciona el código de Byte (archivo .class) que es entendible para cualquier JVM instalada en cualquier SO (Sistema Físico) .

Aquí necesitamos tener JVM diferente (que depende de la plataforma) para diferentes sistemas operativos donde queremos ejecutar el código, pero el archivo .class (código compilado / código intermedio) permanece igual, porque es comprensible para cualquiera de las JVM instaladas. en cualquier sistema operativo.

En c / c ++: solo el código fuente es independiente de la máquina. En Java: tanto el código fuente como el código compilado son independientes de la plataforma.

Esto hace que Java Platform (máquina) sea independiente.


Es una buena pregunta, pero cuando un compilador cambia el código fuente a código de bytes nativo intermedio, en el cual convierte el programa en el código de bytes dando los errores después de toda la comprobación a la vez (si se encuentra) y luego el programa necesita un intérprete que verificaría el programa línea por línea y lo cambiaría directamente a código máquina o código objeto y cada sistema operativo de forma predeterminada no puede tener un intérprete Java por razones de seguridad, por lo que debe tener jvm a cualquier costo para ejecutarlo en esa plataforma de SO diferente La independencia como dijiste aquí significa que el programa se puede ejecutar en cualquier sistema operativo como Unix, Mac, Linux, Windows, etc. pero esto no significa que todos y cada uno de los sistemas operativos puedan ejecutar los códigos sin una JVM que diga especificación, implementación, y por ejemplo, si avanzo entonces cambiando la configuración de tu pc para que puedas tener un cargador de clases que pueda abrir incluso el código de bytes, entonces también puedes ejecutar el código de bytes de Java, applets, etc. -por nimish :) lo mejor de suerte


JVM depende del os. para cada os JVM diferente.

".class" es el mismo para todas las JVM. entonces, cada JVM entiende los datos del archivo ".class".

La JVM dependiente de Windows proporciona instrucciones dependientes de Windows a Windows. JVM dependiente de Linux da instrucciones linux dependientes a Linux.

eso es como para otros sistemas operativos. entonces, java se ejecuta en cualquier sistema operativo.

es por eso que Java es independiente.


JVM dependerá de la plataforma.
Pero lo que genere será independiente de la plataforma. [que llamamos como bytecode o simplemente puedes decir ... el archivo de clase]. por eso, Java se llama plataforma independiente.
puede ejecutar el mismo archivo de clase en Mac también en Windows pero requerirá JRE.


Java es independiente de la plataforma en el aspecto del desarrollador de Java, pero este no es el caso para el usuario final, que necesita tener una JVM dependiente de la plataforma para ejecutar código Java. Básicamente, cuando se compila el código Java, se genera un código de bytes que es típicamente independiente de la plataforma. Por lo tanto, el desarrollador debe escribir un código único para toda la serie de plataformas. Pero este beneficio viene con un dolor de cabeza para el usuario final que necesita instalar JVM para ejecutar este código compilado. Esta JVM es diferente para cada plataforma. Por lo tanto, la dependencia solo entra en vigencia para el usuario final.


Java es independiente de la plataforma, ya que tiene JVM (máquina virtual Java). Déjenos ilustrarlo con un ejemplo de la vida real. Supongamos que eres libre para los miembros de tu familia. ¿Pero por qué?

Porque los conoces bien y ellos también te conocen. Pero no eres libre para los miembros de mi familia. Porque no los conoces y tampoco te conocen. Pero si soy tu amigo y puedo presentarte a los miembros de mi familia, podrás hablar con ellos libremente.

De manera similar, si usted es un código y yo soy una JVM. Además, su familia es la plataforma de Windows y la mía es la plataforma de Linux. En el caso de que usted sea un C u otros idiomas dependientes de la plataforma, solo conoce a los miembros de su familia y viceversa. Es por eso que solo la plataforma en la que se escribió conoce ese Código y lo respaldará. Pero si eres un código JAVA y cuando vienes a mi familia a saber. la plataforma Linux y si allí me encuentras, JVM, entonces puedo presentarte a mi familia, la plataforma Linux y podrás interactuar con ella.

Para idiomas dependientes de la plataforma, no hay ningún amigo como JVM disponible para presentarse a ninguna familia de plataforma. Así es como Java es independiente de la plataforma. :)


Java no es independiente de la plataforma porque se ejecuta en la JVM. Una vez dicho esto, obtienes independencia de la plataforma a través de la programación en contra de una única máquina abstracta que tiene realizaciones concretas en la mayoría de plataformas de sistema operativo comunes (y algunos dispositivos integrados).

Una idea relacionada es la capa de abstracción de hardware presente en muchos sistemas operativos que permite que el mismo sistema operativo se ejecute en hardware dispar.

En su pregunta original, Turbo C es análogo al programa javac, y el JVM es el OS / HAL.


La JVM es una "máquina simulada" que se puede instalar en diferentes sistemas. De esta forma, el mismo código Java puede ejecutarse en diferentes sistemas, ya que depende de la JVM, no del sistema operativo en sí.

Es decir, esto permite que el programador se comunique con el sistema virtual (JVM) y utilice sus funciones, en lugar de las funciones específicas de la máquina y el sistema operativo. Como Java solo depende de JVM, es independiente de la plataforma (si la plataforma tiene JVM instalado).

En resumen, Java no es independiente de la plataforma como tal, sino que requiere una instalación JVM para todos los sistemas en los que debería ejecutarse. Sin embargo, se ejecutará en todos los sistemas que tengan instalada la JVM.


Los abstracts de JVM de la plataforma de concreto. Su programa depende solo de la JVM y dado que la JVM está disponible para diferentes plataformas como Windows y Linux, su programa es independiente de la plataforma (pero depende de jvm).


No, es al revés. Es porque usa la máquina virtual que el programa Java se independiza.

La máquina virtual no es independiente, debe instalar una que esté específicamente diseñada para su tipo de sistema. La máquina virtual crea una plataforma independiente sobre el sistema operativo.


Normalmente, el código compilado es el conjunto exacto de instrucciones que la CPU necesita para "ejecutar" el programa. En Java, el código compilado es un conjunto exacto de instrucciones para una "CPU virtual" que se requiere para funcionar igual en todas las máquinas físicas.

Entonces, en cierto sentido, los diseñadores del lenguaje Java decidieron que el lenguaje y el código compilado iban a ser independientes de la plataforma, pero dado que el código finalmente tiene que ejecutarse en una plataforma física, optaron por poner todo el código dependiente de la plataforma la JVM.

Este requisito para una JVM contrasta con su ejemplo de Turbo C. Con Turbo C, el compilador producirá el código dependiente de la plataforma, y ​​no hay necesidad de una JVM similar porque el programa compilado Turbo C puede ser ejecutado directamente por la CPU.

Con Java, la CPU ejecuta la JVM, que depende de la plataforma. Esta JVM en ejecución luego ejecuta el bytecode de Java que es independiente de la plataforma, siempre que tenga una JVM disponible para que se ejecute. Se podría decir que al escribir código Java, no se programa para que el código se ejecute en la máquina física, se escribe el código que se ejecutará en la Máquina Virtual Java.

La única forma en que todo este bytecode de Java funciona en todas las máquinas virtuales Java es que se ha escrito un estándar bastante estricto para el funcionamiento de las máquinas virtuales Java. Esto significa que no importa qué plataforma física esté utilizando, la parte en la que Java bytecode interactúa con JVM está garantizado que funciona de una sola manera. Como todas las JVM funcionan exactamente igual, el mismo código funciona exactamente igual en todas partes sin volver a compilar. Si no puede pasar las pruebas para asegurarse de que sea igual, no puede llamar a su máquina virtual una "máquina virtual Java".

Por supuesto, hay formas en que puede romper la portabilidad de un programa Java. Puede escribir un programa que busque archivos que solo se encuentran en un sistema operativo (cmd.exe, por ejemplo). Podría usar JNI, que efectivamente le permite poner código C o C ++ compilado en una clase. Puede usar convenciones que solo funcionan para un sistema operativo determinado (como asumir que ":" separa directorios). Pero está garantizado que nunca tendrá que recompilar su programa para una máquina diferente a menos que esté haciendo algo realmente especial (como JNI).


Significa que el programador de Java no necesita (en teoría) los detalles de la máquina o del sistema operativo. Estos detalles sí existen y las bibliotecas JVM y de clase los manejan. Además, en agudo contraste con C, los binarios de Java (bytecode) a menudo se pueden mover a sistemas completamente diferentes sin modificarlos ni recompilarlos.


Solo una nota al margen de la discusión sobre JVM y JIT Compilation. Este es el mismo principio que con C # y el CLR y, en cierta medida, en Python, y cuando alguien dice que el código se ejecuta "directamente en el hardware", lo que es cierto en realidad porque las instrucciones ya compiladas pueden aprovechar la optimización en la máquina / CPU en la que se está ejecutando. Entonces, incluso si la compilación inicial de un módulo es bastante lenta, la próxima vez que se ejecute este módulo, el código que se ejecuta se ejecuta a velocidad nativa y, por lo tanto, se ejecuta directamente en el hardware, por así decirlo.


bytecode no es independiente de plataforma, pero su JVM hace que bytecode sea independiente. Bytecode no es el código de matchine. los bytecodes son códigos numéricos compactos, constantes y referencias (normalmente direcciones numéricas) que codifican el resultado del análisis sintáctico y semántico de cosas como el tipo, el alcance y las profundidades de anidamiento de los objetos del programa. Por lo tanto, permiten un rendimiento mucho mejor que la interpretación directa del código fuente. bytecode debe interpretarse antes de la ejecución, lo que siempre se hace por el intérprete de JVM.


java no es una plataforma independiente, en sí misma es una plataforma, basada en esa plataforma que las aplicaciones java ejecutan, pero la plataforma java en sí misma depende de la plataforma


1:jvm (es decir, máquina virtual Java) es una colección de programas que contiene gran cantidad de archivos que proporciona varios elementos de función presentes en una carpeta (es decir, colecciones de programas en formato de nivel medio) como packages llamados. jvm ayuda a no sobrecargarse en o/s donde solo ayuda a ejecutar los archivos .class o aplicaciones java solo. Ayuda a hacer su formato de nivel medio de igualdades después de la compilación por el compilador java, luego proporciona el código de bytes ( archivo .class) reprsentation que no es específico de o/s processor .
2: jvm crea un código de bytes en el archivo .exe para proccessor a la asignación de memoria entendible y prsents para cada función después de recibir el código de byte de frm.
3: jvm también libera alocation de memoria de ram después de que el control hace que termine su ejecución.


Editar: No del todo. Ver comentarios a continuación.

Java no se ejecuta directamente en nada. Necesita ser convertido a bytecode por una JVM.

Debido a que las JVM existen para todas las plataformas principales, esto hace que Java sea independiente de la plataforma a TRAVÉS de la JVM.


Javac : compilador que convierte el código fuente en código de bytes. JVM : intérprete que convierte el código de bytes en código de lenguaje de máquina.

Como sabemos, Java es compilar ** r & ** lenguaje basado en intérpretes . Una vez que se compila el código java también conocido como código fuente, se convierte a código nativo conocido como BYTE CODE que es portátil y se puede ejecutar fácilmente en todos los sistemas operativos. El código de bytes generado se representa básicamente en formato hexa decimal . Este formato es el mismo en todas las plataformas, ya sea la estación de trabajo Solaris o Macintosh, Windows o Linux. Después de la compilación, el intérprete lee el código de bytes generado y lo traduce de acuerdo con la máquina host. . El código de bytes es interpretado por Java Virtual Machine, que está disponible con todos los sistemas operativos que instalamos. entonces, para llevar los programas Java a una nueva plataforma, todo lo que se requiere es portar el intérprete y algunas de las rutinas de la biblioteca.

¡¡¡Espero eso ayude!!!


Technical Article on How java is platform indepedent?

Antes de entrar en detalles, primero debes entender cuál es el significado de la plataforma. La plataforma consiste en el hardware de la computadora (principalmente la arquitectura del microprocesador) y el sistema operativo. Plataforma = hardware + sistema operativo

Cualquier cosa que sea independiente de la plataforma puede ejecutarse en cualquier sistema operativo y hardware.

Java es independiente de la plataforma, por lo que java puede ejecutarse en cualquier sistema operativo y hardware. Ahora la pregunta es ¿cómo es independiente de la plataforma?

Esto se debe a la magia del código Byte que es independiente del sistema operativo. Cuando el compilador de Java compila cualquier código, genera el código de bytes, no el código nativo de la máquina (a diferencia del compilador de C). Ahora este código de bytes necesita un intérprete para ejecutar en una máquina. Este intérprete es JVM. Entonces JVM lee ese código de bytes (que es independiente de la máquina) y lo ejecuta. Diferente JVM está diseñado para diferentes sistemas operativos y el código de bytes puede ejecutarse en diferentes sistemas operativos.

En el caso de C o C ++ (lenguaje que no es independiente de la plataforma), el compilador genera el archivo .exe que depende del sistema operativo, por lo que cuando ejecutamos este archivo .exe en otro sistema operativo no se ejecutará porque este archivo es dependiente de SO, por lo que no es compatible. el otro sistema operativo.

Finalmente, un código de byte independiente del sistema operativo intermedio hace que la plataforma java sea independiente.