que - ¿Java es multiplataforma?
que es la maquina virtual de java (9)
¿Es Java una plataforma cruzada?
Java es multiplataforma en el sentido de que un programa Java compilado se ejecuta en todas las plataformas para las que existe una JVM. (Esto es válido para todos los principales sistemas operativos, incluidos Windows, Mac OS y Linux).
¿Quiero decir que puedo desarrollar aplicaciones Java en Windows y usarlas en mac y Linux?
Sí, esto es posible.
Este (y el aspecto de seguridad) es una de las principales ventajas de ejecutar los programas en una máquina virtual.
Si es así, ¿cómo?
- Escriba su aplicación en Java (en archivos
.java
) - Compile su aplicación usando Eclipse o javac (en archivos
.class
) - (Opcional) Agrupe sus archivos .class en un ejecutable (archivo
.jar
)
El mismo archivo .jar
puede distribuirse y ejecutarse en sistemas Windows, sistemas Mac, etc.
Encuentro una aplicación escrita en Java, tiene dos archivos de configuración, uno para Windows y otro para Mac. Esto me confunde.
Esto se debe a que algunas aplicaciones se basan en características específicas de la plataforma. Luego se agrupan con diferentes bibliotecas específicas de la plataforma.
A menos que esté desarrollando una aplicación que se base en características específicas de la plataforma (como, por ejemplo, llamadas de sistema de bajo nivel), debería poder hacerlo bien con Java ordinario.
Importante comentario de @Peter Lawrey :
Puede ser mientras la aplicación es independiente de la plataforma, pero el programa de configuración no lo es. Por ejemplo, IntelliJ tiene tres instaladores específicos de plataforma que no están escritos en Java, pero tienen un zip que puede simplemente descomprimir en cualquier plataforma y funcionará.
Quiero desarrollar una aplicación multiplataforma.
¿Java es multiplataforma? Quiero decir, ¿puedo desarrollar una aplicación Java en Windows y usarla en Mac OS X y Linux?
Si es así, ¿cómo?
Encuentro una aplicación escrita en Java, tiene dos archivos de configuración, uno para Windows y otro para Mac. Esto me confunde.
Cualquier ilustración o sugerencia será altamente apreciada.
Depende de lo que quieras decir con "multiplataforma". El código Java se puede compilar en archivos binarios de clase binario o de código de bytes en cualquier sistema operativo compatible con JDK y ejecutar en cualquier plataforma compatible con JRE. Sin embargo, la mayoría de los lenguajes compilados se pueden compilar en cualquier plataforma siempre que los diseñadores se hayan ocupado de ello. Java es más fácilmente portátil que, digamos, C ++, pero eso no significa que el código C ++ no pueda compilarse en ninguna plataforma.
En otras palabras, no elija su idioma solo en esta característica. Elegir el mejor idioma para su aplicación sería una mejor manera de hacerlo. Quizás un lenguaje de scripting sería lo mejor para ti. Tal vez publique otra pregunta preguntando qué idioma usar para resolver su problema específico.
El gran problema es cuando estamos hablando de aplicaciones móviles. Para los sistemas operativos de escritorio, Java puede ejecutarse perfectamente, pero para dispositivos móviles, los desarrolladores pueden, prácticamente, crear solo para Android. Existen herramientas como Totalcross que ayuda a los desarrolladores de Java a crear aplicaciones para iOS y Android. El objetivo es mantener el supuesto de WORA para todas las plataformas, incluso las móviles.
Escribí un pequeño juego en Java con sonido. He utilizado la biblioteca estándar (AudioInputStream y clases de Clip). El programa funciona muy bien con Windows XP, PERO no tengo los sonidos con Windows Seven o Linux Ubuntu.
Java 6 se instaló para todos esos sistemas operativos, y he compilado el programa con el compilador estándar JAVAC.
Así que Java no es tan "multiplataforma".
Hay una advertencia importante con respecto a la portabilidad de Java. La "lógica de negocios" (cosas no relacionadas con la interfaz de usuario) es bastante portátil, pero hay al menos media docena de paradigmas de interfaz de usuario diferentes (e incompatibles) para Java, por lo que, por ejemplo, el código Java está diseñado para ejecutarse en un Android (incluso ignorando el de Android). JVM incompatible) no se ejecutará en un teléfono Nokia, y el código para cualquiera de los dos no se ejecutará en una PC de escritorio.
Pero no hay otro lenguaje que lo haga mejor, que yo sepa.
JAVA no es realmente multiplataforma porque es solo un diseño, algunas implementaciones de JAVA pueden ser multiplataforma pero realmente depende del implementador de JAVA.
SUN / Oracle realiza la implementación estándar de JAVA para Windows, MAC y Linux y, si crea programas con su JDK, debe ejecutar los programas con su JRE; si intenta ejecutarlos con otro JRE, puede haber problemas de compatibilidad.
Esto se puede ver más en el móvil, algunos fabricantes de teléfonos no realizarán una implementación completa de JAVA porque las limitaciones de hardware o porque quieren controlar el software del dispositivo, llevan el logotipo de JAVA, pero debe usar su propio JDK y esos programas podrían no se ejecuta fuera de su implementación JVM.
Otro problema con JAVA es que algunas funcionalidades pueden quedar en desuso y lo que se ejecutó en alguna versión específica del JRE no se pudo ejecutar en versiones más nuevas o se pudo ejecutar de una manera diferente.
Las aplicaciones Java se empaquetan como archivos .jar. Se pueden ejecutar en cualquier sistema operativo que implemente el entorno de ejecución de Java correcto para la aplicación, siempre que el usuario haya instalado los JRE (los JRE se proporcionan a los usuarios de forma gratuita).
El procedimiento preciso para ejecutar la aplicación es diferente para cada sistema operativo.
El Kit de desarrollo de Java proporciona bibliotecas que permiten invocar funciones del sistema (por ejemplo, operaciones de archivos, interfaces de usuario) que deberían funcionar en cualquier sistema operativo. Sin embargo, el comportamiento preciso puede variar (de manera similar a cómo un sitio web puede verse diferente en diferentes navegadores). Además, las aplicaciones Java pueden tener un ''aspecto'' que no coincide exactamente con el aspecto de las aplicaciones diseñadas específicamente para ese sistema operativo.
Puede ejecutar aplicaciones Java en todos los dispositivos que tengan una JVM. Si no es así, estás fuera de suerte.
El comentario de Oded es importante. C y C ++ tienen compiladores en muchos dispositivos.
El código de bytes de Java no tendrá que volver a compilarse cuando cambie de plataforma.
C y C ++ requerirán que el desarrollador vuelva a compilar la aplicación antes de distribuirla al sistema de destino, pero una vez hecho esto, los clientes podrán ejecutarse sin problemas.
El problema de las personalizaciones y configuraciones específicas de la plataforma debe resolverse independientemente del idioma que elija. Cuanto más dependa su aplicación de las características específicas de la plataforma, menos portátil será.
ACTUALIZAR:
Repasemos las palabras originales en la pregunta:
Quiero desarrollar una aplicación multiplataforma.
Aquí está el objetivo - una cita directa. No hay detalles sobre la aplicación web, móvil o de escritorio.
¿Java es multiplataforma? Quiero decir, ¿puedo desarrollar una aplicación Java en Windows y usarla en Mac OS X y Linux?
Definir "plataforma cruzada". Suena como el sesgo aquí es "portabilidad de código byte". C / C ++ no puede hacer eso, pero la "portabilidad del código fuente" es ciertamente posible siempre y cuando se adhiera a ANSI C / C ++ y se abstenga de usar las extensiones de los proveedores.
La reclamación de Java a la fama desde el principio siempre ha sido la portabilidad del código de bytes. Eso es lo que te consigue la JVM. Eso no significa que toda su aplicación será portátil, ya que es posible que no haya administrado bien otras dependencias.
Si sustituyo "C / C ++" por "Java en ese bloque, entonces multiplataforma significa algo diferente. No puedo recoger un archivo .exe o .so compilado para una plataforma y esperar a ejecutarlo en otra, pero si creo uno. Exe o .so para cada plataforma y para que estén disponibles, es ciertamente posible hacer que el mismo código fuente sea ejecutable en múltiples plataformas.
Si es así, ¿cómo?
Si ha empaquetado su aplicación Java como un JAR, puede ponerlo en la plataforma que desee.
Si tiene varios archivos C / C ++ .exes para las plataformas que le interesan, puede ejecutarlo cuando lo necesite.
Sí, Java escrito y compilado en un sistema operativo puede ejecutarse en otro sistema operativo. Hay JVMs disponibles para muchos sistemas operativos modernos.