2009-02-25 19 views
8

Tengo preguntas sobre el verdadero desarrollo de plataforma cruzada y si es posible utilizar una plataforma para desarrollar software.desarrollo de plataforma cruzada

Tengo unas pocas aplicaciones que escribo que funcionan en OS X, Windows y Linux. Todos usan kits de herramientas nativos con alguna fuente compartida en todas las plataformas. Tengo que arrancar en cada plataforma, pagar, compilar, etc.

En el pasado he probado toolkits GUI como QT (compré una licencia comercial para Win, mac, Linus, pero muy cara y la pago año tras año se hizo difícil). He intentado WxWidgets, el desarrollo se mueve lento.

Así que lo que estoy pensando es que hay una forma de ejecutar una única plataforma y cruz de compilación para otras plataformas para que pueda construir mis productos desde una única plataforma.

estoy a favor de OS X, ¿hay una manera de escribir aplicaciones para OS X, Windows, Linux OS X, donde sólo hay que probar en cada plataforma, respectivamente. He encontrado información sobre compiladores cruzados, compilación de código auxiliar, etc.,

¿Alguien tiene alguna idea? ¿Esto es posible? ¿Alguien mataría creando a tal bestia?

+1

Sugiero Community Wiki en este caso. –

+0

vea también: http://stackoverflow.com/questions/463431/what-are-some-good-tools-and-strategies-for-multi-platform-development – dreftymac

Respuesta

1

Java ha intentado escribir una vez, ejecutar en cualquier lugar. Funciona bien en algunas situaciones, pero hay demasiadas cosas "únicas" en un sistema operativo. GCC proporcionó la capacidad de compilación cruzada de aplicaciones, pero se encuentra con el mismo tipo de problemas. El código solo tendrá un mejor rendimiento. El enfoque de RIA parece funcionar, pero no parece una aplicación nativa.

2

Bueno, para ser honesto, la única manera garantizada para construir una aplicación para ser multiplataforma de una sola vez es el uso de Java, pero requiere un tiempo de ejecución bastante grande para ser instalado en primer lugar.

Sin embargo, si eso no es una opción, recomendaría estar pendiente de los desarrollos recientes en Qt; ahora está disponible (o debería estarlo pronto) bajo la LGPL, lo que presumiblemente significa que no necesita pagar por ello. nunca más. El uso de GCC con Qt, he encontrado, funciona perfectamente cuando se compila de forma cruzada en diferentes plataformas, siempre que solo uses las clases/códigos/objetos de Qt y asegúrate de que cualquier código que no sea Qt que crees o usas pueda compilarse multiplataforma.

3

Tratar de desarrollar aplicaciones en una única plataforma que se utilizará en muchas plataformas no es un buen enfoque. En el mejor de los casos, creará aplicaciones que se sienten ajenas a los usuarios de las plataformas para las que no se desarrolló.

Es más probable que encuentre problemas de compatibilidad sutiles en áreas que nunca ha visto. Java es probablemente la mejor manera de ir si quieres ir por esta ruta. La compilación cruzada conducirá a un código autogenerado que será una pesadilla para depurar y mantener.

Ciertamente, puede ser capaz de utilizar herramientas para portar en algunos casos, pero no creo que este es un problema que sólo puede proporcionar una solución automatizada para en general.

2

No menciona ningún lenguaje de programación específico (pero supongo que C o C++ debido a los juegos de herramientas GUI), por lo que es un poco difícil dar una buena respuesta a lo que realmente está preguntando.

Si quiere una plataforma cruzada "verdadera", primero consideraría si es posible resolver su problema usando un lenguaje que esté menos enlazado a la plataforma. Python, Java y muchos otros le permiten escribir en una plataforma y ejecutar en muchos.

Si aún desea utilizar C/C++, GCC le ofrece la opción de compilación cruzada, y si combina eso con QT (que pronto estará disponible bajo la LGPL) debería poder obtener algo que funcione.

1

Incluso el uso de un kit de herramientas GUI multiplataforma no eliminará todos sus problemas de plataforma cruzada. Hay más en una aplicación que GUI, después de todo. La compilación cruzada nunca podrá detectar todos los problemas que atrapará una compilación nativa. Si va a admitir plataformas múltiples, tendrá que hacerlo al menos prueba en cada plataforma. Pero, con suerte, puede realizar compilaciones nativas con todas las advertencias activadas, , además de probar.

8

En mi empresa, utilizamos Mozilla Framework para desarrollar productos de diccionario multiplataforma. Estas aplicaciones se basan en el navegador Gecko/Necko y la mayor parte del desarrollo se realiza a través de Javascript, HTML, CSS, XSL, XUL, ... Por supuesto, nuestro motor de búsqueda homebrew tuvo que compilarse en las tres plataformas (con algún otro código que primero se realizó en JS y luego se transfirió a moz 'C++ por razones de velocidad).

Al final, tenemos una solución de plataforma multiplataforma: nuestros desarrolladores trabajan sobre todo como desarrolladores web potentes (piense en el lado del cliente y del servidor al mismo tiempo). Debido a que Gecko es el mismo en la plataforma de tres, sabemos que se verá y se comportará de manera predecible de la misma manera (excepto cuando hay errores, pero la plataforma ya está madura en este punto de vista).

Nuestra R & D sabe cómo transportar el código JavaScript lento a un código C++ bastante rápido (usted hace el código Mozilla usando la biblioteca NSPR, una biblioteca multiplataforma). Sin embargo, las pruebas siempre se deben hacer en la plataforma tres, aunque con el tiempo y la experiencia, sabrá qué se romperá (soporte de fuentes, soporte de audio, soporte de Flash) ...

Hoy, probablemente debería tener una mira XULRunner que es realmente el Mozilla sin una interfaz de navegador real (en 2002, tuvimos que desmontar el navegador Mozilla para volver a pintarlo en nuestro primer color de producto). Por supuesto, funciona bien para aplicaciones simples, pero si desea hacer OpenGL, Audio 3D y otras cosas ingeniosas, XULRunner aparecerá muy limitado.

creo que tiene algún marco de Blizzard multiplataforma para ese tipo de cosas ... :)

Buena suerte!

Pierre.

1

En los últimos meses, encontré algunos videos geniales que exploran este tema del desarrollo multiplataforma. Espero que los encuentres útiles también.

QtCreator

http://www.youtube.com/watch?v=aYiPvM7ZRHA&feature=channel

FlexBuilder

http://www.youtube.com/watch?v=_O_xDXRsh3Y&feature=channel

Mono/MonoDevelop

http://www.youtube.com/watch?v=U6VG_Z0aRek

que he tenido personalmente éxito en el uso de Silverlight/MacOS X

RealBasic

http://www.youtube.com/watch?v=GWipoBeKSRk

1

Para Cruz plataforma de desarrollo se puede utilizar el teléfono Gap, Appcelerator (Titanium), Corona ... Todo esto proporciona un marco basado en JavaScript y finalmente puede ejecutarse en diferentes plataformas. Lo que estoy usando es Titanium para desarrollo móvil que nos permite desarrollar aplicaciones con códigos nativos .... (lo cual es una muy buena ventaja). Phone Gap está dando una aplicación web que no es nativa en general ... Este software se usa para el desarrollo de soportes multiplataforma ... con soporte en Windows, Linux y Mac OS.

0

Basado en mi experiencia personal, creo que debería adoptar Java: evitará muchos dolores de cabeza.

Desarrolla en la plataforma que desee e implementa en todas las demás plataformas sin necesidad de compilar para cada plataforma de destino, como usted mencionó.

Por ejemplo, desarrollo bajo Linux, presiono "compilar" solo una vez y el archivo resultante está listo para ejecutarse en cualquier lugar (Windows, Mac, Solaris, z/OS, lo que sea). Un doble clic lo ejecutará en cualquier plataforma (el tiempo de ejecución de Java debe estar instalado, pero la mayoría de los usuarios ya lo tienen instalado y, si no, es una cuestión de descargar, instalar, "Siguiente>", "Siguiente>", "Aceptar").

Si elige el método de implementación "Java Web Start", se vuelve aún más fácil: el usuario simplemente hace clic en el botón de inicio en una página web y la aplicación se ejecuta (si se instala la JVM adecuada según lo especificado en el descriptor JNLP) o el usuario es redireccionado a la página de descarga de Java (si no se encuentra una JVM adecuada).

El desarrollo de la GUI (con el kit de herramientas Swing) es fácil y potente, especialmente si utiliza la herramienta correcta (es decir, Netbeans IDE).

Cuestiones relacionadas