2008-09-26 27 views
13

Saludos,¿Cómo escribir un programa multiplataforma?

Quiero escribir un pequeño programa de utilidad multiplataforma con GUI en él. ¿Qué idioma/biblioteca de GUI debo mantener? ¿Es posible algo?

Este va a ser un programa pequeño, por lo que no quiero que la gente descargue JVM o .NET Framework. ¿Es posible desarrollarlo de forma nativa?

actualización 1.

Por "nativa" quiero decir que el resultado final será de código nativo sin capas intermedias como Java Virtual Machine o .NET Common Language Runtime

Actualización 2.

Un Es preferible la solución GRATUITA;)

Respuesta

5

¿Desea desarrollar un programa multiplataforma de forma nativa? Uh ... No creo que eso funcione, principalmente porque esa frase es una paradoja. Si escribe código nativo, por su propia naturaleza solo se ejecutará en la plataforma para la que lo programó. ;-) De eso se tratan los Frameworks.

Entonces, lo que debe hacer es utilizar un marco muy delgado si su programa va a ser tan pequeño. la idea de itsmatt de Qt es una posibilidad.

3

¿Qué hay de Python usando Qt o Wx y luego usando PythonToExe para hacer un 'distribuir'

pensamiento tendrá que dar al desarrollo para garantizar que no se utiliza ninguna funcionalidad nativa (es decir, registro, etc.) También cosas como saltos de línea en archivos de texto tendrán diferentes caracteres de escape por lo que tendrán que ser manejados

15

Si sabes C o C++ el marco GUI primera plataforma cruzada que puedo pensar son:

  • QT (C++, propietaria pero gratis con la concesión de licencias LGPL)
  • wxWidgets (C++, el más completo y estable, sino también enorme)
  • FLTK (C++)
  • FOX (C++)
  • IUP (C, más simple y más limpio que los de arriba)

Si conoce Pascal, puede probar freepascal + Lazarus. Aunque nunca lo he usado.

+0

Excelente respuesta Remo.D –

+0

Qt es solo gratuito para proyectos GPL. Los proyectos con otras licencias no comerciales, incluidos los populares de código abierto como BSD o MIT/X11, deben pagarse. FWIW, Qt es mi elección gracias a su integridad y API bien diseñada. – skymt

+5

Qt ahora tiene licencias LGPL (gratuitas), por lo que el comentario anterior de skymt ya no es correcto. – KeyserSoze

4

WxWindows? Oh, ahora se llama WxWidgets: http://www.wxwidgets.org/

+0

No hay problema. En realidad, ahora se ve realmente pulido, puede que tenga que reproducirse en algún momento :) – JeeBee

4

wxWidgets tiene enlaces a todo tipo de idiomas, python por ejemplo, si su aplicación es lo suficientemente pequeña.

6

El problema es: si no desea tener una GUI pero no desea pedirle al usuario que descargue una API, un Framework o una máquina virtual eterna para ejecutarla, ya sea TCL/TK, Java o QT etc. luego te pierdes bastante rápido.

El motivo es: Debería reconstruir toda la funcionalidad (GUI) que esas API, marcos y máquinas virtuales le proporcionan para ser independiente de la plataforma. Y eso es mucho trabajo por hacer ...

Por otro lado: la máquina virtual Java está instalada en casi cualquier sistema operativo desde cero, ¿por qué no probar esta?

+5

Puede vincular estáticamente Tk, wxWidgets, Qt, SDL, etc. –

1

Si "TIENE" que ser de escritorio use Qt. Nada mejor que ahora.

Sin embargo, personalmente me rendí en el escritorio y cualquier proyecto basado en la interfaz de usuario que hago normalmente se basa en el navegador/servidor. Puede escribir fácilmente un pequeño servidor personalizado que escuche algún puerto para que el programa pueda ejecutarse localmente sin necesidad de que sus usuarios instalen Apache o tengan acceso a la red. Tengo un pequeño framework Lua, Python y C++ que creé para ese propósito (quiero agregar Javascript para el backend con V8 :)

3

¿Qué sistema operativo tienes en mente cuando dices multiplataforma?

Como Epaga señala correctamente, las plataformas nativas y multiplataforma son mutuamente excluyentes. Puede escribir múltiples versiones que se ejecutan de forma nativa en múltiples plataformas, o necesita usar algún marco multiplataforma.

En el caso del enfoque de plataforma multiplataforma, siempre habrá instalaciones adicionales requeridas. Por ejemplo, muchos aquí sugieren usar Python y uno de sus frameworks. Esto requeriría instruir a las personas para que instalen python, y potencialmente el framework, primero.

Si apunta a Windows y OS X (y está preparado para experimentar con código de liberación alfa para Linux si se requiere soporte para ese sistema operativo), le recomiendo que consulte el uso de Adobe AIR para cross -plataforma de aplicaciones GUI.

1

Si vas a mirar Qt y WxWidgets, ¡no olvides echarle un vistazo al GTK+!

2

¿Flash? Está instalado prácticamente en todas partes.

3

Estoy de acuerdo con Georgi, Java es el camino a seguir. Con un poco de trabajo, puede hacer que su aplicación de escritorio también funcione como un applet de Java (para que los usuarios no necesiten descargar nada activamente). Consulte http://www.geogebra.org como un ejemplo de una aplicación que funciona sin problemas como una aplicación Java multiplataforma Y tiene un puerto simple para una aplicación web. otros

dos ventajas en el uso de Java son:

  1. Tienen amplias bibliotecas para la construcción de la interfaz de usuario, incluyendo los constructores de componentes de interfaz de usuario.
  2. El marco de tiempo de ejecución de Java generalmente se actualiza automáticamente para el usuario.

Una desventaja:

  1. La versión de Java instalada en su ordenador los usuarios finales pueden no ser totalmente compatible con su aplicación, lo que requiere para codificar al denominador probable más bajo.
3

Probar RealBasic. Sintaxis similar a Visual Basic, se dirige a Win32, OS X y Linux. No conozco ningún detalle sobre la orientación de Linux, pero para cualquier desarrollo multiplataforma que he hecho entre Win32 y OS X, ha sido un sueño.

http://www.realbasic.com

Editar: Genera ejecutables nativos. Hay un pequeño costo: $ 100.

4

Lazarus es genial. GTK2 en Linux, win32/64 en Windows, WINCE en euh, Wince. Incluso usa Carbon en Mac (trabajando en COCOA). También es fácil de vender a su jefe (el código es compatible con Delphi)

1

Estoy de acuerdo con David Wees y Georgi,

Java es cruzada platformness por excelencia. Literalmente escribes una vez y corres a todas partes. Sin necesidad de compilar el código para cada sistema operativo o bitness objetivo, no se preocupe por vincular nada, etc.

Lo único es, como usted señaló, que debe instalarse un JRE, pero es rápido y sencillo de hacer incluso para usuarios finales novatos (se trata de hacer clic en "Siguiente>" varias veces en el instalador).

Y con la implementación de Java Web Start es 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 se redirige a la página de descarga de Java (si no se encuentra una JVM adecuada).

Cuestiones relacionadas