2010-08-22 13 views
5

Para aplicaciones web, uso Ruby on Rails. Y ahora es el momento de ver si puedo codificar aplicaciones de escritorio con Ruby.MacRuby + IronRuby o JRuby para aplicaciones de escritorio?

Así que me pregunto cuál debería elegir.

La forma en que lo veo es MacRuby + IronRuby vs JRuby.

Lo primero me permite tener aplicaciones de escritorio para Mac y Windows, mientras que la última permite tener ambas, pero solo aprender una herramienta.

  • ¿Hay argumentos fuertes para usar el primero que el segundo?

  • ¿Las aplicaciones de escritorio JRuby serán tan nativas (o casi lo suficientemente nativas) como MacRuby + IronRuby Desktop Applications?

  • ¿Cuáles son los pros y los contras de cada solución?

Im muy nuevo también Desarrollo de escritorio. ¡Comparte tus pensamientos y experiencia!

Respuesta

3

MacRuby usa la pila Apple Objective C nativa.
Pros: Su biblioteca de clases es básicamente un contenedor para las clases de la GUI de Objective C. Obtienes aplicaciones nativas rápidas.
Contras: solo se ejecuta en Mac. Tampoco son portátiles para iPad o iPhone (ninguna de las soluciones de Ruby lo son).

IronRuby usa el marco nativo de Windows .NET.
Pros: utilice WinForms nativos para crear aplicaciones nativas ricas. Tiene acceso al ecosistema .NET completo de bibliotecas.
Contras: Solo se ejecuta en Windows.

JRuby utiliza la capa de abstracción de Java (JVM).
Pros: Varias bibliotecas de GUI disponibles. Los más comunes son SWT y Swing. SWT usa widgets nativos y es más rápido y más nativo. Swing es puramente Java (widgets emulados) y es más portátil. Hay más bibliotecas que resumen SWT y Swing para que sean más amistosas con Ruby. Mira Profligacy para Swing, por ejemplo.
Contras: Una capa encima de una capa encima de una capa. Swing y SWT son muy maduros, pero las capas de Ruby sobre ellos son menos.

También hay otra opción
Rubí con la biblioteca Qt.
Qt es multiplataforma, usa widgets nativos y está escrito en C++. Es bastante rápido, pero la biblioteca es compleja y grande.

Mi regla de oro es que cuanto más compleja es su GUI, más cerca debe estar de la plataforma nativa. También debe evaluar la curva de aprendizaje para cada una de estas bibliotecas gráficas y el esfuerzo necesario para realizar el puerto entre las plataformas.

+2

No es cierto que IronRuby se ejecute solo en Windows. Se ejecuta en todas partes donde está disponible una implementación CLI compatible con ISO, que está prácticamente en todas partes. Diablos, ¡incluso hay una implementación de CLI para iPhone! De hecho, si no recuerdo mal, había un paquete Debian para IronRuby * antes * había un instalador de Windows para él. Además, YARV se ejecuta en el iPhone. Ah, y se olvidó de una diferencia bastante importante: YARV, MRI, Rubinius, IronRuby y JRuby son lanzados, listos para producción y compatibles con los estándares, MacRuby no es ninguna de esas cosas AFAICT. –

+3

@ Jörg W Mittag: Intenté alejarme de las soluciones esotéricas en mi respuesta porque introducen capas y restricciones adicionales. Por ejemplo, IronRuby fuera de Windows necesita algo como Mono para interpretar el código CLI. En el iPhone, el MonoTouch equivalente realmente se compila en código nativo, no en CLI, y no puede usar la GUI de .NET con él. En cuanto a YARV en iPhone, no pude encontrar una referencia a esto. Apple ha sido bastante estricto sobre no permitir capas intermedias como Silverlight, Flash, JVM en el iPhone/iPad. – Alkaline

Cuestiones relacionadas