Переносимое (кроссплатформенное) приложение (пути и варианты разработки)

Модератор: Модераторы разделов

Zueuk
Сообщения: 94
ОС: Fedora

Переносимое (кроссплатформенное) приложение

Сообщение Zueuk »

Задался вопросом разработки переносимых (кроссплатформенных) программ. На это, многие сразу могут сразу предложить использовать уже существующие библиотеки (QT и т.д.).
А планируется, что приложения будут переноситься так же и на мобильные устройства с Андроидом и оффтопиковым WM (имеется такое устройство, так что это будет первой целевой платформой; как только появится устройство с Андроидом, то WM отпадёт, скроее всего). Как быть тогда в этом случае?

Вариант I.
Писать ГУИ отдельно для каждой ОС, а ядро делать единое для всех.
Возникает сразу два вопроса.
1. На сколько совместим будет код ядра для каждой ОС?
2. Сложность разработки ГУИ, при усложнении программы, во сколько раз увеличится?

Вариант II.
Использовать, уже упомянутые, кроссплатформенные библиотеки.
Какие варианты могут быть в этом случае.
QT. Сам не пробовал, но, сколько читал отзывов, все хвалят легкость и простоту при написании кода. Есть почти под всеми ОС.
GTK. Немного попробовал (изучал уже готовые примеры и уроки). Освоить можно. Вопрос только, есть ли под все ОС.
wxWidgets. Интересная библиотека. Под несколько платформ (даже WinCE присутствует).
Если упустил что-то интересное и мне неизвестное, дополните.

Самое первое пробное приложение будет простым, поэтому функциональность получится везде одинаковой. Значит может подойти любой вариант и I, и II. А вот при усложнении программы, все может очень сильно измениться.

Интересно узнать мнение и опыт уже бывалых, чтобы не тратить драгоценное время впустую.

PS Язык программирования будет C++ (ООП - все дела :) ). Java не внушает доверия.
Спасибо сказали:
Аватара пользователя
AestheteAnimus
Сообщения: 135
ОС: FreeBSD 8.0-RELEASE amd64

Re: Переносимое (кроссплатформенное) приложение

Сообщение AestheteAnimus »

Zueuk писал(а):
25.03.2010 13:54
Вариант I.
Писать ГУИ отдельно для каждой ОС, а ядро делать единое для всех.
Возникает сразу два вопроса.
1. На сколько совместим будет код ядра для каждой ОС?
2. Сложность разработки ГУИ, при усложнении программы, во сколько раз увеличится?


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

P.S. Меня могут закидать камнями, но в вопросе переносимых приложений я все чаще поглядываю в сторону Java.
Спасибо сказали:
Zueuk
Сообщения: 94
ОС: Fedora

Re: Переносимое (кроссплатформенное) приложение

Сообщение Zueuk »

AestheteAnimus писал(а):
25.03.2010 14:27
Если просто так взять и писать - совместимо вообще ничего не будет. Все равно Вам понадобиться некоторые слой абстракции от платформы, а это значит, что придется за собой все равно что-то тянуть: а будет ли это POSIX или Qt, или Вы напишите свои собственные либы - это уже детали конкретной реализации проекта.

Слой абстракции неявно подразумевался. Плохо объяснил.
Сделаю уточнение. Т.е. получается

ОС <> слой абстракции <> ядро

Получается, уровень совместимости зависит от качества слоя абстракции. Это все громко звучит. На деле всё будет проще (если грубо - набор if-def'ов).

P.S. Меня могут закидать камнями, но в вопросе переносимых приложений я все чаще поглядываю в сторону Java.

И ни Вы один. Гугле такого же мнения :) С точки зрения потребителя, с Java-программами проблем не будет. Везде можно поставить и будет работать. С точки зрения разработчика - тоже самое. А мне Java, все равно, не внушает доверия ;)
Спасибо сказали:
Аватара пользователя
mikki43306
Сообщения: 172
ОС: Gentoo

Re: Переносимое (кроссплатформенное) приложение

Сообщение mikki43306 »

Сравнение Java и Qt
Старенькая(2003г), но очень интересная статья
Часы–пингвин - хороший аксессуар в комнате малыша.
Спасибо сказали:
Zueuk
Сообщения: 94
ОС: Fedora

Re: Переносимое (кроссплатформенное) приложение

Сообщение Zueuk »

mikki43306
Спасибо, почитаю.
Спасибо сказали:
Olegator
Сообщения: 2493
ОС: SuseLinux 11.2 KDE 4.3

Re: Переносимое (кроссплатформенное) приложение

Сообщение Olegator »

Zueuk писал(а):
25.03.2010 13:54
А планируется, что приложения будут переноситься так же и на мобильные устройства с Андроидом и оффтопиковым WM (имеется такое устройство, так что это будет первой целевой платформой; как только появится устройство с Андроидом, то WM отпадёт, скроее всего). Как быть тогда в этом случае?

если GUI, то только Qt, если будут использоваться платформозависимые фичи то слой абстракции и GUI опять таки на Qt. Qt под андройд уже портируют
Спасибо сказали:
Zueuk
Сообщения: 94
ОС: Fedora

Re: Переносимое (кроссплатформенное) приложение

Сообщение Zueuk »

Платформозависимых фишек не будет. Для начала, самое простое.
Спасибо сказали:
Аватара пользователя
deadhead
Сообщения: 1913
Статус: zzz..z

Re: Переносимое (кроссплатформенное) приложение

Сообщение deadhead »

[x] close
Спасибо сказали:
Zueuk
Сообщения: 94
ОС: Fedora

Re: Переносимое (кроссплатформенное) приложение

Сообщение Zueuk »

deadhead писал(а):
25.03.2010 19:23
python + tkinter?

Судя по описанию, довольно хорошо. А Python как-то пришлось попробовать - не понравился. Или я не понял его нормально.
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)

Re: Переносимое (кроссплатформенное) приложение

Сообщение Voral »

На сколько вы хорошо владеете сями и джавой? Возможно лучше то, что вы лучше знаете :)

С QT я пробовал собирать под линуксом и под виндой одни и те же проекты (правда просто тестовые) все неплохо собиралось.


Я сталкивался с несколькими софтинами написанными на джаве. Возможно мне "не повезло" и они были написаны жутко криворукими "писателями". Но после того как у меня на ноутбуке одна из них открывалась 7 часов, а при попытках что либо сделать тоже некисло замораживала систему... (при этом по опыту уверен, что аналогичные функции с аналогичным объемом данных вполне спокойненько выпольняются роектами написанными на делфе, на сях, да даже апач+пхп...... я совсем на джаве (для себя) поставил жирный крест
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
Olegator
Сообщения: 2493
ОС: SuseLinux 11.2 KDE 4.3

Re: Переносимое (кроссплатформенное) приложение

Сообщение Olegator »

Voral писал(а):
26.03.2010 09:41
С QT я пробовал собирать под линуксом и под виндой одни и те же проекты (правда просто тестовые) все неплохо собиралось.

капитан очевидность ))
Спасибо сказали:
Zueuk
Сообщения: 94
ОС: Fedora

Re: Переносимое (кроссплатформенное) приложение

Сообщение Zueuk »

Voral писал(а):
26.03.2010 09:41
На сколько вы хорошо владеете сями и джавой? Возможно лучше то, что вы лучше знаете :)

C++ пробовал. Java нет. Поэтому выбрал первый ЯП (язык программирования; для краткости :) ).
А накопленный опыт, думаю, подскажет, что лучше.
Спасибо сказали: