¿Cuál es el significado exacto de independencia de la plataforma? [cerrado]

7

¿Cuál es el significado de independencia de plataforma?

Estoy tomando el caso de Java. ¿Puedo ejecutar una aplicación Java en Linux que se construyó en la plataforma Windows? ¿O al revés?

¿Puedo usar un mismo algoritmo de programación (o exacto) en ambos sistemas operativos?

En mi opinión, los tipos de archivos son independientes de la plataforma, como videos, imágenes, documentos, etc.

    
pregunta Dileep DiL 18.06.2011 - 17:25

5 respuestas

22

La independencia de la plataforma en el software significa que puede ejecutar algún código con poca o ninguna modificación en múltiples plataformas.

El diablo está en los detalles:

  • Depende de lo que definas como "la plataforma". En algunos casos, esto puede ser una configuración específica de hardware / máquina. En otros gases puede ser un "PC genérico". En otros casos, puede ser una máquina virtual y un entorno de tiempo de ejecución (que es el caso de Java).
  • Nada es "perfectamente" independiente de la plataforma: siempre hay algunos casos de esquinas que pueden atraparlo. Por ejemplo, si codifica separadores de ruta de archivo en lugar de usar la plataforma independiente File.pathSeparator en Java, entonces su código no funcionará tanto en Windows como en Linux. Como programador, debe tener cuidado con estas cosas, siempre use la opción independiente de la plataforma siempre que sea posible y realice pruebas en diferentes plataformas si le importa la portabilidad.
  • Siempre hay algunas restricciones en plataformas específicas que no se pueden ignorar. Algunos ejemplos son cosas como la longitud máxima de los nombres de archivos o la RAM disponible en un sistema. No importa cuánto intente ser independiente de la plataforma, su código puede fallar si intenta ejecutarlo en una plataforma que está demasiado restringida.
  • Es importante tener en cuenta que algunos idiomas son independientes de la plataforma en el nivel del código fuente (C / C ++ es un buen ejemplo) pero pierden la independencia de la plataforma una vez que se compila el código (ya que el código nativo es específico de la plataforma). Java conserva la independencia de la plataforma incluso después de compilar el código porque se compila en el bytecode independiente de la plataforma (la conversión real al código nativo se maneja más tarde después de que la JVM cargue el bytecode).
  • Ocasionalmente hay errores en las implementaciones de lenguaje que solo ocurren en ciertas plataformas. Por lo tanto, incluso si su código es teóricamente 100% portátil, ¡todavía necesita probarlo en diferentes plataformas para asegurarse de que no esté teniendo ningún error inusual!

En el caso específico de Java:

  • El código de Java es independiente de la plataforma en el sentido de que la misma aplicación o algoritmo de Java (compilado generalmente en el bytecode de Java y empaquetado en un archivo .jar) ejecutar de forma idéntica en Windows y Linux.

  • Bibliotecas de Java (por ejemplo, todos los conjuntos de herramientas de código abierto) generalmente son independientes de la plataforma, siempre que estén escritas en Java puro. La mayoría de las bibliotecas intentan quedarse con Java puro para mantener la independencia de la plataforma, pero en algunos casos esto no es posible (por ejemplo, si la biblioteca necesita interactuar directamente con un hardware especial o llamar a una biblioteca C / C ++ que usa código nativo) .

  • La Plataforma Java / entorno de ejecución es independiente de la plataforma en el sentido de que las mismas bibliotecas (imágenes, redes, File IO, etc.) están disponibles y funcionan de la misma manera en todas las plataformas . Esto se hace deliberadamente para permitir que las aplicaciones que usan estas bibliotecas puedan ejecutarse en cualquier plataforma. Por ejemplo, las bibliotecas de Java que acceden al sistema de archivos saben el hecho de que Windows y Linux utilizan diferentes separadores de ruta de nombre de archivo, y tienen esto en cuenta. Por supuesto, esto significa que bajo el capó el entorno de ejecución hace uso de características específicas de la plataforma, por lo que necesita un JRE diferente para cada plataforma. Puede ver una lista de algunas de las plataformas disponibles en el sitio de descarga de Java: enlace

  • La JVM en sí misma (es decir, la Máquina Virtual de Java responsable de la compilación y ejecución de JIT de Java) es una plataforma independiente en el sentido de que está disponible en muchas plataformas (todo desde mainframes). teléfonos móviles). Sin embargo, se necesitan versiones específicas de JVM para que cada plataforma subyacente tenga en cuenta los diferentes códigos de instrucción nativos y las capacidades de la máquina (por lo que no puede ejecutar una JVM de Linux en Windows y viceversa). La JVM está empaquetada como parte de la plataforma Java / entorno de tiempo de ejecución como se indicó anteriormente.

En general, Java es probablemente lo más cercano a la verdadera independencia de plataforma que puede obtener, pero como puede ver, todavía hay bastante trabajo específico de plataforma realizado bajo el capó.

Si se adhiere a bibliotecas y códigos Java 100% puros, mi experiencia es que puede contar con que Java es una plataforma "efectivamente" independiente y generalmente cumple con la promesa de Escribir una vez que se ejecuta en cualquier lugar. ¡¡Pero todavía deberías probarlo !!

    
respondido por el mikera 18.06.2011 - 18:32
5

Tienes razón, la independencia de la plataforma significa que el mismo programa funciona en cualquier plataforma (sistema operativo) sin necesidad de ninguna modificación.

En el caso de Java, la aplicación se ejecuta en una Máquina Virtual Java que no es independiente de la plataforma. Esta tiene que ser la interfaz entre la máquina real (sistema operativo) y el código Java que has escrito.

En el caso de videos, imágenes, etc., estos son documentos y son datos para las aplicaciones, por lo que generalmente son independientes de la plataforma por naturaleza.

    
respondido por el ChrisF 18.06.2011 - 17:48
1

En realidad, la técnica para lograr la independencia de la plataforma es

  • Construyendo una plataforma intermedia
  • Implemente el intermedio en cada una de las plataformas que necesita (En idiomas como JAVA)

O puede escribir código y compilar para cada plataforma (C / C ++). En mi opinión, esta es también una especie de independencia de plataforma. Y se puede decir que los algoritmos son independientes de la plataforma de esta manera.

Tienes razón en cuanto a la verdadera independencia de la plataforma para los tipos de archivos. Pero el término independencia de la plataforma generalmente no se aplica a los archivos.

    
respondido por el Gulshan 18.06.2011 - 18:03
1

JAVA es un lenguaje de programación independiente de la plataforma orientada a objetos. El compilador javac compila el código fuente y produce el lenguaje del código Byte (lenguaje universal).

Este lenguaje no es comprensible para ningún sistema operativo, debe procesarse primero, y aquí es donde un programa ejecutable especial (JVM) entra en escena. Un intérprete de la JVM lee el código de bytes línea por línea y convierte las instrucciones del código de bytes en un lenguaje comprensible específico de la máquina (en última instancia, el código binario). Por lo tanto, el código de bytes es independiente de la plataforma, pero el código interpretado es específico de la máquina y se ejecutará en el entorno en el que está instalada la JVM. Los programas de JAVA son independientes de la plataforma significa que JAVA es independiente de la plataforma.

El eslogan de Sun MicroSystems era WORA : Escribir una vez Ejecutar en cualquier lugar.

    
respondido por el vallepu veerendra kumar 18.06.2013 - 14:15
0

Dado que la JVM requiere un host, puedo decirle que un programa Java no es independiente de la plataforma. Además, el lenguaje Java por diseño tiene requisitos en el sistema de archivos que dan como resultado nombres de clase cortos si el sistema está utilizando una partición FAT16:

class FOOBAR

es lo mismo que

class Foobar

y el nombre

class AbstractPrinterFactory

es imposible.

Como comparación, C tiene muy pocos requisitos de tiempo de ejecución y, por lo tanto, puede ofrecer una mayor portabilidad. Todavía es posible realizar backport de programas C más pequeños para dispositivos realmente de gama baja.

    
respondido por el user877329 17.05.2014 - 19:50

Lea otras preguntas en las etiquetas