Предложения для встраиваемого языка сценариев для приложений iPhone и Java? - PullRequest
5 голосов
/ 08 января 2009

Я разрабатываю приложение для iPhone с настольным компаньоном Java, которое синхронизируется по сети. Я хотел бы встроить язык сценариев в оба приложения, чтобы конечные пользователи могли писать сценарии, которые добавляют новое поведение и взаимодействуют с объектной моделью, и чтобы я мог быстрее разрабатывать некоторые функции.

Есть какие-нибудь предложения по этому поводу, или кто-то делал это раньше и получил опыт поделиться? Я думаю о чем-то вроде tcl, который я использовал в прошлом, но не о самом tcl, так как я не большой поклонник языка.

Основными критериями являются:

  • легкий вес при возможности (использование памяти)
  • простой интерфейс и расширение с Java и Objective-C
  • (приятно иметь) читабельный / доступный для людей с ограниченным опытом программирования

Моя первоначальная догадка заключается в том, что я должен использовать один из Python, Ruby или Lua. Я бы предпочел рубин, так как у меня уже есть некоторый опыт работы с ним, и я мало что знаю о других. Однако мое главное неизвестно, какой из них легче всего интегрировать с iPhone и Java.

edit 2: согласно Jason Coco в комментариях условия SDK запрещают встроенные языки сценариев. Проверка на это действительно, кажется, но я прочитал это, чтобы исключить только динамическую установку и расширение. Мне все равно будут интересны ответы здесь, поскольку соглашение, по-видимому, не исключает наличия предварительно упакованных сценариев внутри самого пакета приложения - Apple все равно сможет проверить этот код.

Соглашение также позволяет использовать «переводчиков» яблок ... что это? Javascript и что еще? Любой способ использовать их здесь?

Ответы [ 3 ]

2 голосов
/ 08 января 2009

JavaScript

Насколько я понимаю, лицензия iPhone SDK ничто не мешает вам использовать язык сценариев в вашем приложении - только то, что вы не можете устанавливать собственные интерпретаторы или среды выполнения. Вы можете использовать только те языки сценариев, для которых Apple предоставляет переводчик в SDK.

Учитывая, что вы хотите запускать одинаковые сценарии в приложении для iPhone и в приложении Java, очевидным выбором является JavaScript. Вы можете использовать API Apple в своем приложении для iPhone, и что-то вроде Rhino (http://www.mozilla.org/rhino/) в своем приложении Java.

Вы должны знать, что между двумя интерпретаторами могут быть небольшие различия в более неясных областях синтаксиса или объектной модели.

P.S. Я предполагаю, что пользователи будут писать свои собственные сценарии для запуска на своем собственном устройстве / рабочем столе. Они будут частью данных приложения и должны подойти под лицензией Apple

1 голос
/ 06 марта 2009

Я тоже исследовал это, и кажется , что возможно предварительно скомпилировать скрипт Lua (преобразовав его в C с использованием Lua, а затем скомпилировав файл C). Поскольку весь ваш код может быть частью пакета приложения (включая встроенный интерпретатор Lua), он должен быть приемлемым в качестве приложения для iPhone.

Смотрите здесь для обсуждения и пример сценария: http://lua -users.org / списки / Lua-л / 2008-11 / msg00453.html

* Обратите внимание, что я еще не пробовал это (пока)

1 голос
/ 08 января 2009

Единственное, что я видел, что позволяет запускать на iPhone нецелевое приложение c / c / c ++ - это Unity3d (http://unity3d.com/unity/features/iphone-publishing) - НО, он использует C # через Mono и выполняет полную статическую обработку. компиляция (http://tirania.org/blog/archive/2008/Nov-05.html) до нативного кода для того, чтобы сделать это. Итак, к тому времени, когда приложение находится на телефоне, оно больше не является C #, поэтому оно разрешено Apple (и несколько приложений уже добавили его в приложение). Магазин - так что это кажется приемлемым).

Я не думаю, что вы могли бы реализовать идею, о которой говорите, даже если бы вы могли сделать эквивалент для Java / Ruby / Lua / Python / other (так что ваше приложение для настольных компьютеров предварительно компилируется и загружается просто родной код к устройству). Насколько я знаю, вы не можете выполнить код за пределами пакета приложений ... и если вы измените пакет приложений, то вы аннулируете кодовое обозначение, которое делает Apple, что в первую очередь позволяет запускать приложение на вашем телефоне. Поэтому, даже если бы вы могли получить исполняемый код на телефон, я не уверен, что вы сможете запустить его, если он изначально не входил в комплект приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...