Как писать приложения для разных платформ?Linux, Mac, Windows и мобильные платформы - PullRequest
5 голосов
/ 16 марта 2011

Мы хотим написать клиента для онлайн-сервиса, который должен быть доступен на как можно большем количестве платформ.Этот вопрос о том, какой язык программирования и рамки мы должны использовать для создания этого клиента.Требуются следующие платформы: Linux, Mac, Windows, iOS (iPhone, iPod, iPad) и Android.Чем больше, тем лучше.

Для мобильных платформ есть Titanium Mobile .Я еще не пробовал это, веб-сайт говорит, что вы можете разрабатывать для iOS и Android, используя такие веб-навыки, как Javascript.Я пока не знаю, можно ли развернуть для обеих платформ, используя тот же код.Это было бы здорово!

Существует также Titanium Desktop, но мне не нравится идея, что весь исходный код доступен для конечного приложения.Titanium делает это и для мобильных устройств, но изменить приложение, загруженное через App Store, не так-то просто.

Итак, как еще можно создать приложение, которое работает как минимум на трех основных настольных платформах?Я думал, что c # с mono будет подходящим вариантом, но я просто понял, что вам нужно использовать mono с MonoMac, чтобы опубликовать его в Mac App Store и использовать такие вещи, как Growl.А поскольку MonoMac, естественно, доступен только для Mac, снова невозможно развернуть приложение mono на всех платформах, не переписав его, по крайней мере, для Mac.И было бы неплохо, если бы приложение выглядело «родным» на всех платформах.Gtk # просто не очень хорошо выглядит на Mac.Это нормально для Windows и отлично подходит для Linux.

Я знаю, что мы можем использовать Objective-C для iOS и Mac, Java для Android, C # .net для Windows и C # .mono для Linux, но главное -что мы не хотим писать одно и то же приложение на разных языках.Это сделало бы разработку и сопровождение действительно трудными.

И мы предпочитаем языки с синтаксисом в стиле C, которые намного легче выучить для нас, веб-разработчиков PHP.Кстати: нам не нравится Air, и я не уверен насчет Java, так как никогда не использовал его, но он также не выглядит "родным" и выглядит довольно медленно.

Редактировать:

Просто примечание: не было бы проблемой создать собственную форму для каждой платформы, если хотя бы оставшийся код такой же.Можно ли использовать MonoMac, Gtk # и Win Forums в одном приложении C #?И я бы предпочел C #, а не C ++, так как у меня нет навыков в C ++, поэтому сначала мне нужно проверить, насколько сложно писать с помощью Qt.

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

Ответы [ 7 ]

8 голосов
/ 16 марта 2011

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

Вам не повезет, если вы создадите одно собственное приложение, которое работает на Android и iOS,в одиночку все остальные платформы вы упомянули.Причина того, что они являются разными платформами, а не одинаковыми, заключается в том, что они, ну, в общем, разные .Они имеют разные возможности, работают на разных аппаратных средствах, построены на разных языках, используют разные модели приложений с разными пользовательскими интерфейсами и имеют аудиторию с разными ожиданиями.

6 голосов
/ 16 марта 2011

Просто используйте C # для всего вышеперечисленного.

Моно-проект будет охватывать Mac и Linux, с monodroid вашими требованиями для Android покрыты, а monotouch позаботится об iPod / iPad / iPhone.

В отношении пользовательского интерфейса - mono полностью поддерживает пространство имен System.Windows.Forms, поэтому вам не нужно использовать GTK #, если вы этого не хотите.

Не думаю, что мне нужно упоминать о поддержке Windows;)

5 голосов
/ 16 марта 2011

Лучшее решение, с которым я столкнулся за эти годы, это Qt SDK .Отличная поддержка для всех основных платформ, Symbian, OS X, Linux, Windows, Windows CE (для мобильных устройств), частичная поддержка Android и iOS и т. Д.

Его основой является C ++, но привязки практически для каждого языка (например, C #)) доступен.Также предоставляется помощь и поддержка.

Основные библиотеки Qt очень быстры и обширны, и весь рабочий стол KDE (Linux) сделан с ним.Известные программы, такие как VLC и VirtualBox, сделаны в Qt.

3 голосов
/ 21 января 2012

Другим относительно новым способом кросс-платформенной разработки является использование Eto.Forms с открытым исходным кодом, которое позволяет вам иметь одну кодовую базу пользовательского интерфейса для целевого набора инструментов каждой платформы.Это уровень абстракции пользовательского интерфейса, который может предназначаться для GTK #, MonoMac / OSX, WinForms и WPF.

В работе также есть порт iOS.

2 голосов
/ 16 марта 2011

Java звучит как лучшая подгонка.Он кроссплатформенный, простой в понимании, имеет огромную базу пользователей, и на его основе лежит Android.

1 голос
/ 16 марта 2011

В зависимости от того, нужен ли вам режим автономного взаимодействия, похоже, что вам следует разработать веб-приложение.Вы можете разработать мобильную версию и настольную версию и таким образом поддерживать все вышеперечисленные платформы.Посмотрите на приложение youtube для Iphone, оно сохраняет те же функции, что и приложение iphone, но является чисто HTML.Более того, браузеры с поддержкой html5 также могут работать в автономном режиме.

0 голосов
/ 01 апреля 2011

Как ни крути, посмотрите Flash / Flex - он кроссплатформенный, код один раз, везде запускается, теперь компилируется до нативного кода, например на Android и iOS, а проигрыватель 10.1 поставляется по всему миру,Мне нужно было решить именно эту проблему, и когда Flash Builder Burrito начал обслуживать мобильные устройства, после некоторой работы с ним я переключился с C # / Flash-гибридного на Flash только для клиентов.(Наш бэкэнд это C # / Node / C ++ и т. Д.).

В зависимости от ваших временных рамок и потребностей это кое-что изучает.

Несколько случайных ссылок для просмотра:

Запись в блоге о производительности и видео для одного устройства на нескольких устройствах

Разработка приложений flash и flex

...