Повторное использование кода в iPhone, Android и веб-приложениях

#iphone #android #ruby-on-rails-3

#iPhone #Android #ruby-on-rails-3

Вопрос:

Я собираюсь разработать приложение для iPhone, Android, а также для Интернета. Я думаю, что должен быть какой-то «стандартный» способ для этого, чтобы повторно использовать как можно больше кода.

Какой лучший способ для этого? Веб-сервисы? (только если приложение использует Интернет) Может быть, API? Другой способ?

Просто для справки, веб-приложение, вероятно, будет разработано на Ruby On Rails 3.

Спасибо!

Ответ №1:

Существует несколько кроссплатформенных инструментов разработки, которые позволяют вам писать один раз и компилировать для нескольких платформ. Я знаю, что видел вопросы по обоим инструментам здесь, на SO, поэтому у других могут быть полезные советы по этим конкретным продуктам.

PhoneGap http://www.phonegap.com

Ускоритель приложений http://www.appcelerator.com

За исключением этого, если вы планируете заниматься собственной разработкой на каждой платформе, API веб-служб — хороший вариант. Я создал приложение, которое в значительной степени зависит от данных, и я создал RESTful services через JSON, которые выполняют тяжелую работу для iPhone, Android и веб-версий.

Еще предстоит немало работы по внедрению функции на каждой платформе, но как только я создаю код на одной платформе, тяжелая творческая работа выполнена, и остается только перенести ее на следующую платформу (то же самое относится, в основном, и к графике). Поскольку я разрабатываю код для каждой платформы индивидуально, я стараюсь использовать преимущества как кода, так и пользовательского интерфейса для этой платформы, чтобы предоставить пользователю собственный интерфейс (скажем, создание меню для кнопки menu на Android, что не поддерживается на iPhone). Для меня это преимущество разработки для каждой платформы в отдельности, однако это также значительно увеличивает время выхода на рынок для каждой версии.

Поскольку вы смотрите на Objective-C, Java и Ruby, 3 совершенно разных языка, нет простого способа разработать разделяемую библиотеку без использования промежуточного уровня, подобного тем, что указаны выше.

Ответ №2:

Ну, все три — это разные языки, поэтому все, что вы пишете для одного, не будет работать для другого. API на сервере может предоставить вам одни и те же данные для всех, но крайне маловероятно, что вы получите какой-либо повторно используемый код. Я делаю то же самое и понимаю это, поэтому я просто разделяю общие вещи, такие как пользовательский интерфейс и дизайн кода, между ними.