todos - ¿Es Java el mejor lenguaje para desarrollar aplicaciones GUI multiplataforma?
tipos de lenguaje de programacion (11)
Para "lo mejor", pretendo que el código no necesite, o necesite muy pocos, ajustes específicos de la plataforma.
Así que, según tengo entendido, actualmente NO hay un verdadero conjunto de herramientas de GUI de idioma y GUI de alto nivel multiplataforma.
Java es multiplataforma, las GUI tanto en SWT como en Swing pueden verse bien, cuando realmente intentas ajustarlas con precisión de píxel y proporciona modificaciones a la apariencia de las plataformas admitidas. Actualmente hay algunos buenos diseñadores de GUI, pero nada tan bueno como OpenStep hace 15 años.
QT ahora tiene LGPL, siempre y cuando solo establezcas un enlace dinámico. Bueno, QT tiene su propio conjunto de problemas y es un superconjunto de C ++. Tienes que compilar contra el compilador hackeado por QT, no el compilado por C ++ genérico.
no probé wxWidgets, pero por lo que parece, puede funcionar, ¡pero NO es un juego de herramientas de alto nivel!
Parece que hay una opción para escribir en C # y opensource .NET y ejecutarlo a través de Mono en otras plataformas que no sean Windows ... No lo intenté, pero me parece que eso es solo portar Microsoft en otras plataformas.
Hay GNUstep, pero por ahora me parece, como que solo fue desarrollado por algunos fanáticos geek de código abierto. Sería realmente interesante ver la pila OpenStep fuera del Mac OS X, pero por ahora esto me parece no viable.
Incluso Java, aunque es autónomo, actualmente no ofrece excelentes capacidades de diseñador de GUI. Utilicé la herramienta de diseño de la GUI una vez cuando empecé a aprender a programar con SWT, y ahora me encuentro codificándola a mano, lo cual no está nada mal, pero realmente no debería ser necesario. Pero eso fue hace unos años, tendré que volver a intentarlo.
Por supuesto, puede crear su núcleo y código de servicio de aplicaciones multiplataforma en un idioma (Java o C / C ++ si desea velocidad), crear algo así como un servidor o una herramienta de UNIX y simplemente conectarse desde la GUI que cree en cada plataforma deseada usando sus propias herramientas. El resultado es que la GUI es nativa de la plataforma, aprovechando las características de la plataforma, y debe ser bastante simple de crear para cada plataforma deseada. (Cocoa en Mac y .Net en Windows proporcionan funciones completas para la plataforma en la que son nativas).
Tendremos que analizar la solidez y madurez de dicha solución ideal. Debería tener un buen respaldo comercial y comunitario y estar bastante evolucionado en este momento, de modo que las implementaciones futuras de tales herramientas nos proporcionarán más que el mero DENOMINADOR COMÚN MÁS BAJO para todas las plataformas compatibles, pero para generar las herramientas multiplataforma para incluir y adopte conceptos bien diseñados y abundantes funciones nativas de las plataformas relevantes y distribúyalas multiplataforma.
Solo que puede ser un desarrollo multiplataforma verdaderamente viable y adoptable en grandes cantidades.
Sugerencias?
Creo que depende de qué tipo de plataformas planee orientar. Java tendrá la mayoría de las plataformas con una VM. Sin embargo, si solo quiere usar Windows y Linux, puede usar C # (usando mono on linux).
De acuerdo con tu definición, no. Incluso con las bibliotecas gráficas más nuevas, puede esperar hacer muchas pruebas en diferentes plataformas.
Flash probablemente sea el mejor. Amplia difusión y mejor aspecto igual en diferentes plataformas.
En estos días, hay muchos idiomas que le permiten crear aplicaciones de GUI multiplataforma de manera eficiente. Java, Python, Tcl / tk, C # ...
Creo que debe definir los requisitos de su aplicación un poco más, por ejemplo:
- ¿La interfaz de usuario estará basada en la Web o en el escritorio?
- ¿La aplicación va a ser grande o pequeña?
- ¿Incluirá algún tipo de característica de "extensión" (por ejemplo, complementos)?
- ¿Funcionará a través de una red y es probable que se distribuya / equilibre la carga?
La lista puede continuar para siempre, resolver los puntos definitorios de su aplicación y comenzar a investigar el idioma en función del todo.
Java es bueno, pero he estado muy bien con Python y Qt través de PyQt4 últimamente. Me parece que hago las cosas más rápido que en Swing o SWT también.
Hasta el momento, no se han necesitado ajustes específicos de la plataforma, y los widgets Qt4 se ven bien en diferentes plataformas. El constructor de la GUI de Qt es muy agradable y el uso de Python ha permitido una fácil integración con algunos otros frameworks multiplataforma (notablemente VTK , scipy-cluster SWIG y algunos objetos SWIG SWIG para interactuar con archivos de salida de una herramienta de rendimiento).
Tenga en cuenta que Qt no es gratuito a menos que lo use en proyectos de código abierto.
Mientras alguien defina correctamente la "independencia de la plataforma" , Java es el mejor.
Algunas personas argumentan que C # es el mejor, pero esas personas parecen malinterpretar el término "independencia de la plataforma";)
Nota: me refiero al hecho de que C # se transporta a Linux / Unixes solo mientras Microsoft y Novel mantengan su tratado. La comunidad en sí misma nunca podría mantener una plataforma tan grande como .NET
Para los binarios nativos, wxWidgets es una solución conveniente.
Te diría que es incluso mejor que Java para el lado de la experiencia del usuario. Aunque puede hacer que la capa de presentación se vea más o menos igual para todas las plataformas en Java, todas se parecen a Java. Por otro lado, wxWidgets hace que el usuario se sienta como una compilación específica de la plataforma (y lo es, de hecho), pero puede usar el mismo código para compilar para varias plataformas (al menos las principales).
Personalmente, desprecio todo el concepto de emular la GUI nativa que es donde están enraizadas las GUI de Java. En lugar de estar en casa donde quiera que vaya, lo convierte en un turista en todas partes, a menudo necesita un intérprete. El Eclipse GWT es un mejor juego de herramientas que hace mucho mejor uso de los recursos locales, pero aún sostiene que a las personas les encanta escribir código Java, y odian usar aplicaciones Java, piénselo: ¿qué aplicaciones Java le gustan en su escritorio?
Tk es tan feo y limitado en cualquier sistema operativo en el que elijas ejecutarlo, y lo mismo aplica para Qt, en mi opinión.
Mono necesitaría una buena oportunidad, ya que es una forma de responder la pregunta "por qué Linux apesta", si recuerdas esa vieja publicación de Miguel de Icaza. Mono viene con un conjunto maduro de widgets y Apis y no intenta limitar lo que puede hacer para darle portabilidad.
Silverlight es portátil y tiene un excelente lenguaje de definición de interfaz, pero carece de acceso al sistema, debe dividir la aplicación entre un servidor y la interfaz de usuario incluso en la misma máquina para superarlo.
Adobe AIR es un perro y el acceso al sistema local no es fácil.
Si puedo elegir, tiendo a evitar las GUI por completo y trato de usar un servidor web, incluso un servidor web local, y Json, JQuery y todo eso. Descubrí que puedo tener muchas más opciones y soy más productivo que con widgets nativos. Esto combina las fortalezas del uso de un lado del servidor del lenguaje real y la maravillosa genialidad desordenada de JavaScript en la GUI.
Recomiendo encarecidamente Java para el desarrollo de GUI multiplataforma. En particular, recomiendo el generador de GUI que viene con Netbeans IDE . Es muy simple y muy poderoso. Puede señalar y hacer clic y arrastrar y soltar para crear una GUI y personalizar fácilmente las acciones que toman los diversos botones y otros componentes.
Prefiero Python como un lenguaje, pero ninguna de las herramientas gratuitas para el desarrollo de GUI se acerca a esto, y lo mismo parece ser cierto para los otros lenguajes que he usado. (Debo señalar que QT tiene maravillosos desarrolladores de GUI para varios idiomas, como C y Python, pero solo es gratis cuando se usa en proyectos de código abierto).
EDITAR: QT ha sido recientemente relicenciado como LGPL, por lo que puede usarlo en aplicaciones comerciales. Los enlaces de Python para esto (PyQT) no se han vuelto a autorizar, pero se ha creado otro proyecto llamado PySide para proporcionar enlaces Python QT.
Sí: use Eclipse RCP. No solo puede escribir aplicaciones multiplataforma, sino también aplicaciones multilingües. SWT proporciona la apariencia nativa para múltiples plataformas y sistemas de ventanas.
También consideraría a Mono como un contendiente serio para la independencia de la plataforma y una buena herramienta IDE. El rendimiento de Java apesta en el escritorio. Solo revisa http://www.codeproject.com/KB/dotnet/RuntimePerformance.aspx