Cuando comencé a usar Java en los años noventa, todo fue "¡ Escribe una vez, corre en cualquier lugar! " Desde el primer día. Eso probablemente era todo cierto entonces y yo también era parte del coro.
Ya no estoy seguro de qué pensar sobre eso, teniendo en cuenta todos los demás lenguajes que utilizan tiempos de ejecución multiplataforma (python, flash, perl, html, php ...). Pero todavía veo muchos argumentos que dicen que debes usar Java porque supuestamente es mejor para el desarrollo multiplataforma.
Entonces, ¿sigue siendo cierto hoy? ¿Sigue siendo Java el lenguaje elegido para el desarrollo multiplataforma?
- Por favor sea específico con enfoque en los aspectos multiplataforma.
- No estoy pidiendo comparaciones de características del lenguaje general.
Actualización: ¡Grandes respuestas hasta ahora! La mayoría de las respuestas parecen estar favoreciendo Java o la web. ¿Alguna aportación de la multitud de guiones?
fuente
Respuestas:
los lenguajes de estilo de script como python también facilitan el desarrollo multiplataforma. Ahora, si le gusta Python (u otros lenguajes similares) depende de usted, y probablemente no necesitemos comenzar ese debate aquí.
Java intenta forzarlo a escribir código que se ejecutará de forma portátil, mientras que python le permite escribir código portátil. El lenguaje actual de Python se ejecutará de manera portátil, pero las bibliotecas externas pueden o no. Además, python dará acceso libremente a servicios específicos de la plataforma.
¿Tiene Java una ventaja allí? Creo que en cualquier caso puede escribir el código portátil con similar facilidad. Es decir, puede escribir código y generalmente funcionará en diferentes plataformas. Pero no puede salirse con la suya simplemente escribiendo código y suponiendo que funcionará en todas partes. Trabajé en un proyecto de Python que produjo la versión para Windows, Linux y Mac y nos encontramos con muy pocos problemas de plataforma cruzada. (El único que recuerdo fue debido a un error en la biblioteca que estábamos usando pygame, que causó problemas de dibujo en Linux. Esto se solucionó al actualizar la versión de pygame que usamos)
Otro problema es el despliegue. Si desea distribuir programas independientes que ejecutan su código, deberá producir diferentes versiones para diferentes plataformas. Para Java, puede distribuir una versión y asumir que el usuario tiene Java instalado o puede instalarlo. En este caso, Java probablemente gane en la simplicidad del departamento de implementación.
Al final, creo que todo se reduce a qué idioma le gusta trabajar y qué tipo de implementación debe realizar.
fuente
Aunque Java puede no ser el o la única viable herramienta multiplataforma, tiene algunas ventajas:
y algunas debilidades:
Cuando se habla específicamente de la plataforma Java , hay un punto más:
fuente
Es tan cierto hoy como lo era en aquel entonces, es decir, no del todo. Java es escribir una vez, probar y depurar en todas partes. Claro, eso es mucho menos trabajo que un puerto completamente nuevo, pero generalmente es más trabajo de lo que la exageración inicial nos hizo creer.
Nuestro producto tiene un servidor Java que se ejecutará en Windows o Linux, pero hemos visto problemas específicos del sistema operativo y nos aseguramos de tener servidores Linux y Windows disponibles para soporte / prueba si es necesario. Las UI de Java tienden a tener más problemas que los servidores (aunque muchos son cosméticos y, por lo tanto, pueden ignorarse dependiendo de la aplicación).
Aunque no es estrictamente un lenguaje para mí, la web es la plataforma multiplataforma de elección. Un front-end HTML / JavaScript significa que su aplicación se ejecutará en casi cualquier plataforma de cliente y, en la mayoría de los casos, ese era el objetivo real: no tener que preocuparse si era una Mac o una PC, qué versión de sistema operativo, etc.
Por supuesto, generalmente seguirá dictando la plataforma del servidor, pero cuando se trata solo de que las personas se vuelven mucho más flexibles, particularmente en estos días en que la mayoría de las empresas ya admiten una combinación de servidores Windows y Linux.
fuente
Personalmente, diría que Java sigue siendo el lenguaje de elección multiplataforma, y es probable que permanezca allí por algún tiempo (junto con las aplicaciones web). Escribí un poco más sobre el tema en esta publicación sobre Java como plataforma de elección , pero en particular en el frente multiplataforma:
Siempre que tenga cuidado con sus dependencias (por ejemplo, evite las bibliotecas que usan JNI para interactuar con el código nativo), entonces Java puede escribirse y ejecutarse sin modificaciones en todas las plataformas JVM principales
Debido a que Java generalmente se distribuye como código de bytes independiente de la máquina, puede ejecutarse sin recompilación en cualquier JVM (ya que la JVM local maneja la compilación JIT en código nativo). Por ejemplo, he logrado que una aplicación GUI compleja y razonable se ejecute por primera vez en una Mac después de desarrollarla en Windows, con el mismo archivo jar . Compare eso con la mayoría de los otros lenguajes multiplataforma, que generalmente requieren bibliotecas diferentes o una recompilación para una plataforma diferente.
Muchas de las bibliotecas principales que necesita (GUI, redes, IO, etc.) son parte del tiempo de ejecución estándar y están escritas en una plataforma cruzada. Por lo tanto, no necesita buscar y probar bibliotecas multiplataforma, tiene la garantía de que casi todo lo que necesita ya está allí en el entorno de tiempo de ejecución.
fuente
Creo que tienes esas opciones:
1) usa un
2) ¿Cómo empacará y entregará su código?
Esas elecciones afectan el rendimiento, la visibilidad y la distribución del código soure.
¿Te importa regalar tu código fuente? Los idiomas compilados pueden ser para ti. Los lenguajes compilados parecen funcionar mejor en micro-puntos de referencia que los lenguajes interpretados (incluso JIT). Además, si depende de un entorno de tiempo de ejecución como Java, Python, Ruby, etc., su código podría ser más difícil de distribuir.
Descubrí que las aplicaciones de escritorio multiplataforma más populares van para "Un front-end, múltiples binarios" usando C / C ++ y una biblioteca de widgets multiplataforma, por ejemplo, Audacity, Blender, Firefox, Google Earth, OpenOffice, Skype, Songbird, Stellarium, VLC
fuente
Yo diré que no. Python y Ruby se usan mucho y también JavaScript para el lado del cliente y del servidor. Personalmente uso .NET y no tengo problemas para que se ejecute en Mac y Linux (mientras desarrollo en Windows)
-editar- escuché que LLVM se está volviendo popular pero sigue siendo extremadamente pequeño. Eso te permitirá usar C ++ multiplataforma en un solo binario. Aparentemente se ejecutará en el navegador, pero no he visto un ejemplo en el que le permita modificar el dom o llamar a javascript.
fuente
Si incorporas plataformas móviles a la mezcla, al menos también deberías incluir la recompilación. Por ejemplo, android, j2me.
fuente