web-dev-qa-db-fra.com

Pouvez-vous développer des applications iPhone natives dans Ruby?

Salut, je regarde le développement de l'iPhone, et Objective-C n'est pas ma langue préférée. Pour autant que je puisse voir en ce moment Ruby ne peut pas être utilisé pour parler à Cocoa Touch pour le moment sur l'iPhone.

Donc ma question est, je me trompe? Puis-je utiliser Ruby sur l'iPhone pour développer des applications Cocoa Touch. Et à quoi ressemble l'avenir pour Ruby sur l'iPhone?

49
BefittingTheorem

Non, tu as raison. Actuellement, et très probablement dans un avenir prévisible, Ruby ne sera pas une option, du moins pour les applications AppStore. Il n'y a aucune raison que vous ne puissiez pas le faire sur un téléphone Jailbreaké, mais Apple est assez proche de l'objectif C pour le développement officiel.

22
Ben Gottlieb

Maintenant, vous pouvez avec RubyMotion

74
gimenete

Dans l'iPhone OS, mprotect () échouera si vous essayez de l'utiliser pour marquer des sections de mémoire inscriptibles comme exécutables. Cela brise les ponts comme RubyCocoa (et probablement MacRuby) qui utilisent libffi pour créer des gestionnaires de méthode Objective-C au moment de l'exécution. Je crois que c'est par conception car ce n'était pas toujours le cas.

En fin de compte, c'est plus une question de politique de plate-forme que de technologie, mais une solution technique existe. Au lieu de générer des gestionnaires de méthodes personnalisés au moment de l'exécution, précompilez un pool de gestionnaires reconfigurables qui sont affectés selon les besoins, ce qui rend le processus de pontage entièrement piloté par les données. Pour autant que je sache, cela ne se fait pas encore dans RubyCocoa ou MacRuby.

Une autre chose importante à considérer est que les runtime compilés Ruby et RubyCocoa peuvent être considérablement plus importants que les applications Objective-C compilées. Si ces bibliothèques étaient disponibles sur l'iPhone, ce ne serait pas un problème, mais pour l'instant, même si RubyCocoa fonctionnait, vous ne voudrez peut-être pas l'utiliser pour les applications que vous distribuez.

49
Tim Burks

Vous êtes mieux en tant que programmeur connaissant un certain nombre de langues différentes - pensez à Objective-C comme une bonne opportunité d'apprentissage.

J'ai constaté que les choses que vous apprenez dans d'autres langues font de vous un meilleur programmeur dans l'ensemble et vous donnent de nouvelles perspectives dans d'autres langues que vous connaissez déjà.

rhomobile est une option pour exécuter Ruby code sur l'iPhone, mais c'est essentiellement le développement d'applications Web. Un serveur Web s'exécute localement sur l'iPhone et votre Ruby est rendu aux technologies Web standard côté client (html/css/javascript).

http://rhomobile.com/

8
pfeilbr

En fait, le pont de cacao Ruby cacao n'est pas du tout gênant; les choses fonctionnent remarquablement bien, jusqu'à la connexion des prises dans IB, etc. Le code résultant est en bas à droite magnifique.

En ce qui concerne le développement iPhone, si vous voulez une application AppStore officielle, vous n'avez malheureusement pas de chance. Apple a dicté que l'iPhone est Obj-C/Cocoa Touch, et il y a une clause dans la licence SDK disant que l'une des choses pour lesquelles ils va rejeter une application est d'avoir un interpréteur de langage/compilateur JIT, vous ne pouvez donc pas ajouter vous-même un interprète Ruby dans votre application.

Hors sujet, mais hilarant, c'est pourquoi Flash pour iPhone fait exploser la fumée d'Adobe. Ils ne pouvaient pas mettre un lecteur swf sur l'AppStore même s'ils le voulaient, par licence d'Apple.

7
Jon Raphaelson

J'ai installé le Ruby package de Cydia sur mon iPod Touch 1G jailbreaké le 3.1.3:

image

Semble fonctionner.

Maintenant, en ce qui concerne la touche cacao, c'est une toute autre histoire, je suppose.

4
Steven Lu

Euh, Rhodes (Rhomobile) vous permet de faire des applications natives sur l'iPhone et tous les autres smartphones. Oui, nous tirons parti du rendu via le contrôle WebUIView. Mais nous autorisons toutes les capacités de l'appareil et les données locales synchronisées.

4
Adam Blum

Vous voudrez peut-être jeter un œil à shinycocos . Il s'agit d'un projet enfant de cocos2d-iphone , un framework de programmation de jeux Objective-C pour iPhone.

Je n'ai pas encore joué avec, mais d'après le git README je suppose qu'il regroupe Ruby 1.9.1 dans votre application.

4
Radamanthus

Jetez un œil à http://www.appcelerator.com/products/titanium-mobile/ "iPhone natif et Android conçues avec les technologies Web."

Ça sonne bien n'est-ce pas? ;-)

2
fro_oo

Non, vous ne pouvez pas créer d'application native iOS dans Ruby. Il n'y a que deux options pour les applications natives pour mac et iOS: -

Objectif C et Langage de programmation rapide

Tutoriels: -

Tutoriel officiel d'Apple sur Objective C

Tutoriel officiel d'Apple sur Swift Langage de programmation

Si vous connaissez Ruby et que vous souhaitez uniquement créer des applications iOS par Ruby. Ruby Motion , peut être une option multiplateforme pour vous, mais ce n'est pas gratuit .

Multiplateformes

2
Mayank Jain

Vous n'avez pas besoin d'utiliser Objective-C pour écrire des applications iPhone. Si vous utilisez QuickConnectiPhone, http://sourceforge.net/projects/quickconnect/ , vous pouvez l'écrire complètement en JavaScript, CSS et HTML et avoir toujours une application installable pas une application web.

Si vous connaissez Ruby vous travaillez probablement déjà avec JavaScript.

Pour voir comment l'installer, l'exécuter et d'autres idées, rendez-vous sur tetontech.wordpress.com

1
Lee

J'imagine que cela ne fonctionnera pas pour le moment, mais j'imagine que vous pourrez éventuellement utiliser MacRuby pour créer des applications iPhone. Apple y met beaucoup de travail

Voici un lien vers un article ADC décrivant comment construire des applications cacao normales

1
Orion Edwards

Actuellement, ce n'est pas vrai, Apple changer leurs politiques, jetez un oeil à ShinyCocos, est un Ruby liaisons pour le framework de jeu Cocos2D-iphone).

https://github.com/funkaster/shinycocos

0
norman784

Il y a un open-source Ruby-Cocoa bridge vous pourriez essayer de travailler. Mais je suppose qu'il y a un peu de décalage d'impédance entre Ruby et ObjC qui le rend un peu gênant à utiliser.

0
Menkboy

Le pont Ruby Cocoa ne fonctionnera probablement pas. La plupart des ponts pour les langages dynamiques doivent générer des thunks exécutables (manuellement ou avec libffi). Les ponts plus limités (pour les langages plus statiques) peuvent ne pas avoir ces questions.

Dans les deux cas, la mise en place d'un pont nécessitera probablement de se familiariser avec le runtime Objective C plutôt que d'apprendre à écrire des applications Cocoa Touch, ce qui va probablement à l'encontre de l'intérêt de le faire en premier lieu.

0
Louis Gerbarg