2008-10-20 15 views
49

Hola, estoy investigando el desarrollo de iPhone, y Objective-C no es mi idioma preferido. Por lo que puedo ver en este momento, Ruby no puede usarse para hablar con Cocoa Touch en este momento en el iPhone.¿Puedes desarrollar aplicaciones nativas para iPhone en Ruby?

Así que mi pregunta es, ¿me equivoco? ¿Puedo usar Ruby en el iPhone para desarrollar aplicaciones Cocoa Touch? ¿Y cómo se verá el futuro de Ruby en el iPhone?

+3

Apple solo re laxó las restricciones sobre herramientas de desarrollo para aplicaciones en la App Store: http://www.apple.com/pr/library/2010/09/09statement.html –

+0

Hola, 3+ años después y hay un nuevo movimiento que intenta conseguir que Apple proporcione MacRuby para iOS :) Lea más al respecto aquí - http://welovemacruby.com/ y asegúrese de presentar el informe de error :) – gef

+0

Es bueno ver, supongo que Apple está considerando MacRuby internamente –

Respuesta

22

No, estás en lo cierto. Actualmente, y lo más probable en el futuro previsible, Ruby no será una opción, al menos para las aplicaciones de AppStore. No hay ninguna razón por la que no puedas hacer esto en un teléfono Jailbroken, pero Apple está muy familiarizado con Objective C para el desarrollo oficial.

+8

¿Por qué hacer Ruby? un ciudadano de primera clase en Mac pero no iPhone? –

+3

@never_had_a_name rendimiento –

+9

A partir de principios de mayo de 2012, puede hacerlo. Ver http://www.rubymotion.com – robzolkos

0

Hay un código abierto Ruby-Cocoa bridge que podría tratar de poner en funcionamiento. Pero creo que hay un poco de desajuste de impedancia entre Ruby y ObjC que hace que sea un poco incómodo de usar.

+1

esta respuesta no tiene nada que ver con las barreras legales y técnicas para ejecutar Ruby en el iPhone –

+0

esto no es para iPhone, RubyCocoa no es CocoaTouch –

7

En realidad, el puente de cacao de rubí no es incómodo en absoluto; las cosas funcionan notablemente sin problemas, hasta conexiones de conexión en IB, etc. El código resultante es perfecto.

En cuanto al desarrollo de iPhone, si quiere una aplicación oficial de la AppStore, lamentablemente no tiene suerte. Apple dictó que el iPhone es Obj-C/Cocoa Touch, y hay una cláusula en la licencia del SDK que dice que una de las cosas por las que será rechazar una aplicación es tener un intérprete de lenguaje/compilador JIT, por lo que no podría agregar un intérprete de rubí en tu aplicación tú mismo.

Fuera de tema, pero hilarantemente, esta es la razón por la que Flash para el iPhone es Adobe soplando humo. No podían tener un reproductor SWF en la AppStore, incluso si lo deseaban, según la licencia de Apple.

+4

Flash para iPhone todavía puede suceder si la licencia de Apple eso. El acuerdo permite licencias explícitas, solo proporciona una barrera para cualquier intérprete antiguo que se instale. –

+0

No creo que rechacen la aplicación. La aplicación simplemente no se ejecutará. El sistema operativo no ejecutará las instrucciones fuera del montón de memoria. – jrwren

11

Usted es mejor como programador conocer un número de diferentes idiomas - pensar en Objective-C como una buena oportunidad de aprendizaje.

He descubierto que las cosas que aprende en otros idiomas a menudo lo convierten en un mejor programador en general y le brindan nuevos conocimientos de otros idiomas que ya conoce.

+3

Estoy totalmente de acuerdo en aprender nuevos idiomas, ya que es algo que disfruto mucho. Para ser sincero, no tengo ganas de volver a los lenguajes de estilo C, ya que considero que C es demasiado críptico para la programación a nivel de aplicación. Sin embargo, Objective-C es más útil que C++, así que puedo agradecerle –

+5

. El idioma no es la única razón por la que prefiero un idioma sobre otro. Continúo haciendo una importante inversión en bibliotecas y herramientas. No tener estas bibliotecas disponibles afecta significativamente el tiempo de desarrollo. –

+4

Aunque estoy totalmente de acuerdo, este es un consejo, no una respuesta. – edgerunner

1

No tiene que usar Objective-C para escribir aplicaciones de iPhone. Si usa QuickConnectiPhone, http://sourceforge.net/projects/quickconnect/, puede escribirlo completamente en JavaScript, CSS y HTML y aún así tener una aplicación instalable y no una aplicación web.

Si conoces ruby ​​probablemente ya estés trabajando con JavaScript.

Para ver cómo instalarlo, ejecutarlo, y otras ideas van a tetontech.wordpress.com

0

El puente Rubí cacao probablemente no va a funcionar. La mayoría de los puentes para lenguajes dinámicos necesitan generar thunks ejecutables (ya sea manualmente o con libffi). Puentes más limitados (para más idiomas estáticos) pueden no tener tales problemas.

En cualquier caso, abrir un puente probablemente requiera familiarizarse más con el tiempo de ejecución de Objective C que aprender una sola vez cómo escribir aplicaciones Cocoa Touch, lo que probablemente no sea suficiente para hacerlo.

48

En el sistema operativo del iPhone, mprotect() fallará si intenta usarlo para marcar las secciones grabables de la memoria como ejecutables. Esto rompe puentes como RubyCocoa (y probablemente MacRuby) que usan libffi para crear manejadores de métodos Objective-C en tiempo de ejecución. Creo que esto es por diseño porque no siempre fue el caso.

En última instancia, esto es más una cuestión de política de plataforma que tecnología, pero existe una solución técnica para esto. En lugar de generar manejadores de métodos personalizados en el tiempo de ejecución, precompile un conjunto de elementos reconfigurables que se asignan según sea necesario, lo que hace que el proceso de creación de puentes sea totalmente basado en datos. Hasta donde yo sé, esto aún no se está haciendo en RubyCocoa o MacRuby.

Otra cosa importante a tener en cuenta es que los tiempos de ejecución compilados de Ruby y RubyCocoa pueden ser significativamente mayores que las aplicaciones compiladas de Objective-C. Si estas bibliotecas estuvieran disponibles en el iPhone, esto no sería un problema, pero por ahora, incluso si RubyCocoa funciona, es posible que no desee utilizarlo para las aplicaciones que distribuye.

8

rhomobile es una opción para ejecutar el código ruby ​​en el iPhone, pero es esencialmente el desarrollo de aplicaciones web. Un servidor web se ejecuta localmente en el iPhone y su código ruby ​​se procesa en las tecnologías web estándar del lado del cliente (html/css/javascript).

http://rhomobile.com/

4

Uh, Rodas (Rhomobile) hace le permiten hacer aplicaciones nativas en el iPhone y todos los otros teléfonos inteligentes. Sí, aprovechamos el renderizado a través del control WebUIView. Pero permitimos todas las capacidades del dispositivo y los datos locales sincronizados.

4

Es posible que desee echar un vistazo a shinycocos. Es un proyecto secundario de cocos2d-iphone, un marco de programación de juegos Objective-C para iPhone.

No he jugado aún con él, pero desde el git README deduzco que incluye Ruby 1.9.1 en la aplicación.

+0

También miré shinycocos hace un tiempo, no pude instalarlo, así que cambié a obj-c para aprenderlo ... pero están desarrollando juegos reales con él ... y en ruby ​​!!! así que definitivamente vale la pena intentarlo! – makevoid

-1

Una posible solución sería crear una envoltura de aplicación, por ejemplo, la biblioteca de arroz (google it) que incluye un ruby-vm. Creo que sería capaz de crear contenedores de C++ que podría exponer a ruby, creando así un entorno para el desarrollo de iphone con ruby. Esto probablemente requiera mucho trabajo ^^

4

He instalado el paquete de rubí desde Cydia en mi iPod Touch 1G jailbreak en 3.1.3:

image

parece funcionar.

Ahora, en cuanto al toque de cacao, es una historia totalmente diferente, supongo.

+0

Veo más votos abajo para esta publicación ahora, obviamente esta publicación va a necesitar ser actualizada ya que son casi 3 años. Estoy seguro de que todavía hay una forma de ejecutar Ruby de la misma manera y me sorprendería que el paquete 'ruby' de Cydia no esté todavía allí. –

2

Ningún usted no puede crear iOS aplicación nativa en Ruby. Hay sólo dos opciones para las aplicaciones nativas para Mac y iOS: -

C Objetivo y Swift Lenguaje de Programación

tutoriales: -

Apple's official tutorial on Objective C

Apple's official tutorial on Swift Programing Language

Si estás familiarizado con Ruby y solo quieres crear aplicaciones para iOS de Ruby. Ruby Motion, puede ser una opción multiplataforma para usted, pero no es gratis.

plataformas cruzadas

Cuestiones relacionadas