Кроссплатформенность на практике
Модератор: Модераторы разделов
-
xtron
- Сообщения: 31
Кроссплатформенность на практике
Здравствуйте уважаемые знатоки.
Есть у меня один проект довольно успешный который работает да и проработал еще бы лет 10 если бы не одно "НО". Ввиду "недавних" событий относительно лицензионности мелкомякгих продуктов некоторые заказчики изъявили видеть мое творение под Linux. Но все дело в том что проект довольно развирающийся и я не могу бросить Win-версию и начать писать Linux-версию так как довольно часто приходиться выпускать обновления и тп. Физически я не смогу параллельно вести две версии системы, если это будет на разных языках программирования.
По разработано с использованием Borland Delphi Studio и Firebird 2.0. В отношении Firebird перенос базы под nix-платформу труда не составил, а вот на счет клиентской части встал вопрос.
Хотелось бы писать на чем то одном, то есть для версий под разные платформы иметь одни и те же исходники (возможна даже раздельная компиляция под win и nix). Также хотелось бы иметь приличный пользовательский интерфейс на основе Qt (3, а лучше 4).
Имеется ли Qt(3,4) для Windows?
Как я думаю оптимальный вариант - C++ и QT4 возможно ли это чтобы компилировалось и под lin и под Win одни и те же исходники.
Web-технологию не рассматриваю так как интерфейс довольно специфический и на вебе практически не реализуемый + скорость.
Если у кого либо имеется опыт разработки кросплатформенных приложений (хотя бы на уровне компиляции под каждую систему одних исходников) поделитесь пожалуйста.
Есть у меня один проект довольно успешный который работает да и проработал еще бы лет 10 если бы не одно "НО". Ввиду "недавних" событий относительно лицензионности мелкомякгих продуктов некоторые заказчики изъявили видеть мое творение под Linux. Но все дело в том что проект довольно развирающийся и я не могу бросить Win-версию и начать писать Linux-версию так как довольно часто приходиться выпускать обновления и тп. Физически я не смогу параллельно вести две версии системы, если это будет на разных языках программирования.
По разработано с использованием Borland Delphi Studio и Firebird 2.0. В отношении Firebird перенос базы под nix-платформу труда не составил, а вот на счет клиентской части встал вопрос.
Хотелось бы писать на чем то одном, то есть для версий под разные платформы иметь одни и те же исходники (возможна даже раздельная компиляция под win и nix). Также хотелось бы иметь приличный пользовательский интерфейс на основе Qt (3, а лучше 4).
Имеется ли Qt(3,4) для Windows?
Как я думаю оптимальный вариант - C++ и QT4 возможно ли это чтобы компилировалось и под lin и под Win одни и те же исходники.
Web-технологию не рассматриваю так как интерфейс довольно специфический и на вебе практически не реализуемый + скорость.
Если у кого либо имеется опыт разработки кросплатформенных приложений (хотя бы на уровне компиляции под каждую систему одних исходников) поделитесь пожалуйста.
Mandrake 10 -> Mandriva 2007 -> Debian Sarge ->Kubuntu 6.10 Edgy -> Kubuntu 7.04 Feisty -> Debian Lenny (testing)
-
divenvrsk
- Сообщения: 379
- ОС: Ubuntu, openSuSE
Re: Кроссплатформенность на практике
опыт есть и опыт говорит, что писать надо следуя парадигме ООП.
т.е. разделять представление и функционал. насчет Delphi - в linux есть lazarus и в принципе очень даже не плохой fpc, но у меня как то не очень вяжется скорость и delphi, вполне возможно что в вашем случае проще будет переписать на java и вопрос о кроссплатформенности просто отпадет, тем более что по времени это будет сопоставимо с адаптацией программы под linux, с учетом той же специфики графических приложений.
qt библиотека кроссплатформенная, но опять же на практике получается так, что приходится отдельно адаптировать windows и linux версию и соответственно поддерживать две версии исходных кодов, каких бы уровней абстракции в функционале вы не достигли.
хотя если функционал упирается лишь в интерфейс и особо не завязан на API системы и иже с ними - то C++ & Qt вполне хорошее решение.
насчет биндингов для qt на delphi ничего сказать не могу, ибо не компетентен в этом вопросе.
т.е. разделять представление и функционал. насчет Delphi - в linux есть lazarus и в принципе очень даже не плохой fpc, но у меня как то не очень вяжется скорость и delphi, вполне возможно что в вашем случае проще будет переписать на java и вопрос о кроссплатформенности просто отпадет, тем более что по времени это будет сопоставимо с адаптацией программы под linux, с учетом той же специфики графических приложений.
qt библиотека кроссплатформенная, но опять же на практике получается так, что приходится отдельно адаптировать windows и linux версию и соответственно поддерживать две версии исходных кодов, каких бы уровней абстракции в функционале вы не достигли.
хотя если функционал упирается лишь в интерфейс и особо не завязан на API системы и иже с ними - то C++ & Qt вполне хорошее решение.
насчет биндингов для qt на delphi ничего сказать не могу, ибо не компетентен в этом вопросе.
-
xtron
- Сообщения: 31
Re: Кроссплатформенность на практике
divenvrsk писал(а): ↑10.12.2007 10:30опыт есть и опыт говорит, что писать надо следуя парадигме ООП.
т.е. разделять представление и функционал. насчет Delphi - в linux есть lazarus и в принципе очень даже не плохой fpc, но у меня как то не очень вяжется скорость и delphi, вполне возможно что в вашем случае проще будет переписать на java и вопрос о кроссплатформенности просто отпадет, тем более что по времени это будет сопоставимо с адаптацией программы под linux, с учетом той же специфики графических приложений.
qt библиотека кроссплатформенная, но опять же на практике получается так, что приходится отдельно адаптировать windows и linux версию и соответственно поддерживать две версии исходных кодов, каких бы уровней абстракции в функционале вы не достигли.
хотя если функционал упирается лишь в интерфейс и особо не завязан на API системы и иже с ними - то C++ & Qt вполне хорошее решение.
насчет биндингов для qt на delphi ничего сказать не могу, ибо не компетентен в этом вопросе.
Переписывать полюбой придется практически с нуля за исключением классов чисто бизнес-логики.
Я вот тоже больше склоняюсь к C++ и QT4. С сями я почти на "ты" а вот яву придется учить. Да и модули завязаные на специфические функции вынести в отдельнные dll / so. Их всего 1% от исходного кода (а исходников в чистом pas только на 70 MB
Mandrake 10 -> Mandriva 2007 -> Debian Sarge ->Kubuntu 6.10 Edgy -> Kubuntu 7.04 Feisty -> Debian Lenny (testing)
-
Uncle_Theodore
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Кроссплатформенность на практике
QT небесплатна для коммерческих продуктов.
-
divenvrsk
- Сообщения: 379
- ОС: Ubuntu, openSuSE
Re: Кроссплатформенность на практике
я бы на вашем месте все переписал на java, гарантированная кроссплатформенность + легкость формирования интерфейся. да и мне кажется быстрее будет приглядется к java чем переписывать на с++ \ qt.
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Кроссплатформенность на практике
Кстати, очень даже ощутимо небесплатная... Припоминаю, что нам лицензия стоила что-то в районе $4000.
-
v04bvs
- Сообщения: 636
- ОС: Debian GNU/Linux
Re: Кроссплатформенность на практике
Самый разумный вариант - использовать Lazarus. Адаптировать исходники под него можно за разумные сроки.
Переписывать на другом языке.. Потенциально выигрыш конечно есть, переписывание всегда улучшает код. Но это очень рискованно.
Если решитесь переписывать, и позволяют требования к производительности - Java. Если не позволяют - C/C++ и Gtk.
Переписывать на другом языке.. Потенциально выигрыш конечно есть, переписывание всегда улучшает код. Но это очень рискованно.
Если решитесь переписывать, и позволяют требования к производительности - Java. Если не позволяют - C/C++ и Gtk.
-
xtron
- Сообщения: 31
Re: Кроссплатформенность на практике
Спасибо всем за различные мнения. Да, то что Qt для коммерческих проектов денег просит я уже выяснил.
И вообще нормально ли работает gtk-runtime в Windows - среде?
PS: Пропробую седня скомпилить HelloWord на gtk+-2.0 + gtkmm-2.4 + C++ под linux и под Windows (вроде нашел все библиотеки для обоих осей + компилер бесплатный для виндов)
И вообще нормально ли работает gtk-runtime в Windows - среде?
PS: Пропробую седня скомпилить HelloWord на gtk+-2.0 + gtkmm-2.4 + C++ под linux и под Windows (вроде нашел все библиотеки для обоих осей + компилер бесплатный для виндов)
Mandrake 10 -> Mandriva 2007 -> Debian Sarge ->Kubuntu 6.10 Edgy -> Kubuntu 7.04 Feisty -> Debian Lenny (testing)
-
d_n_k
- Сообщения: 636
- ОС: Gentoo GNU/Linux
Re: Кроссплатформенность на практике
gtk нормально работает,
если хочешь убедится посмотри на
http://www.pidgin.im/
http://evolution-win32.sourceforge.net/
если хочешь убедится посмотри на
http://www.pidgin.im/
http://evolution-win32.sourceforge.net/
все сказанное есть имхо...
-
nrg
- Сообщения: 219
- Статус: Энерджайзер :)
- ОС: OpenSuSe 10.3
Re: Кроссплатформенность на практике
Если не изменяет память, то базовая лицензия на 1 платформу стоит в районе $ 1500, причём есть значительные скидки для предприятий Small Business с доходом менее $ 200 000 per year. Так что, если прога правда продаётся и пользуется спросом, то лицензия на две платформы уложится в 50-60 тыс рублей, что вполне нормально для такого продукта.
OpenSuSe 10.3 на Dell Inspiron 1501 и Семпрон-3000/1024ДДР2-800/120+60+300/NVidia 8500GT.
Участник Sun Open Source User Group, Самара.
Участник Sun Open Source User Group, Самара.
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
yaleks
- Сообщения: 2121
- Статус: вне статуса
- ОС: Gentoo ~
Re: Кроссплатформенность на практике
Зачем переписывать? Lazarus посмотрите, он вполне совместим с Delphi.
-
indie
- Сообщения: 87
Re: Кроссплатформенность на практике
Мб лучше обойтись вайном?
Например на сайте uTorrent в разделе закачки (http://www.utorrent.com/download.php) разработчики пишут For Wine, Windows 95 (Winsock2), 98/ME, NT/2000, XP, 2003, and Vista.
Например на сайте uTorrent в разделе закачки (http://www.utorrent.com/download.php) разработчики пишут For Wine, Windows 95 (Winsock2), 98/ME, NT/2000, XP, 2003, and Vista.
-
Denjs
- Сообщения: 1685
- ОС: SuSe 10.2
Re: Кроссплатформенность на практике
а собственно может пойти "по пути наименьшего сопротивления"? отладить что бы под wine запускался корректно?
(сейчас в меня начнут швырять помидоры, но хоть на "уровне идеи мозгового штурма" рассмотрите )
тем более wine умеет делать "типа-линукс-программу" - пакет готовый к исполнению в линуксе ? (где-то в описаниях было, сам так не делал) )
(сейчас в меня начнут швырять помидоры, но хоть на "уровне идеи мозгового штурма" рассмотрите )
тем более wine умеет делать "типа-линукс-программу" - пакет готовый к исполнению в линуксе ? (где-то в описаниях было, сам так не делал) )
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
indie
- Сообщения: 87
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Кроссплатформенность на практике
Увы:
http://www.winehq.org/site/winelibProject cannot be ported using Winelib, as it is written in Pascal/Delphi. It should be possible to port it to Linux using Kylix relatively easily.
-
Denjs
- Сообщения: 1685
- ОС: SuSe 10.2
Re: Кроссплатформенность на практике
стоп-стоп-стоп... я говорил про то что из бинарника.exe и wine делается "типа нормальная линукс программа".
какой нафиг паскаль-не-паскаль?...
блин видимо придется самому ссылки искать.
-
/dev/random
- Администратор
- Сообщения: 5456
- ОС: Gentoo
Re: Кроссплатформенность на практике
Это в смысле как сделано с якобы-линуксовским клиентом EVE Online?
А можно просто написать bash-скрипт, который будет содержать внутри себя экзешник, распаковывать его в /tmp и запускать "внешним" вайном, который прописать как зависимость.
Правда, от необходимости переделывать вручную код программы так, чтобы она не глючила под вайном не избавит (а она, как я понял из предыдущих постов, глючит)... Но от этого избавит только переписывание программы с нуля
-
vantaker
- Сообщения: 166
Re: Кроссплатформенность на практике
Есть мнение, что http://wxwidgets.org - хорошая бесплатная (и для коммерческого использования) альтернатива Qt. Есть порты под кучу платформ (даже под смартфоны), под кучу языков (можно быстро прототипировать на wxPython). Развивается стремительно, сообщество большое, реюзабельного кода - куча. Одного из главных разработчиков зовут Вадим 
Собственно вот неплохой сравнительный обзор тулкитов: http://www.wxwidgets.org/wiki/index.php/Wx..._Other_Toolkits
Собственно вот неплохой сравнительный обзор тулкитов: http://www.wxwidgets.org/wiki/index.php/Wx..._Other_Toolkits
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Кроссплатформенность на практике
Ага, есть конкретная реализация программы с использованием этой библиотеки - aMule, собирается под win,nix, и mac. Доступны исходники. Как недостаток, замечу что многим не нравятся wx-окошки.vantaker писал(а): ↑16.12.2007 16:15Есть мнение, что http://wxwidgets.org - хорошая бесплатная (и для коммерческого использования) альтернатива Qt
-
vantaker
- Сообщения: 166
Re: Кроссплатформенность на практике
Как недостаток, замечу что многим не нравятся wx-окошки.
Это те, кому GTK+ не нравится - под Linux wxWidgets работает через эту библиотеку. Вобще wxWidgets на каждой платформе использует нативные для платформы виджеты, а не прорисовывает (читай-эмулирует) их сама в отличие от других тулкитов (той же Qt) - соответственно тормозов в гуе меньше. Но главное, что wxWidgets - не только удобный ГУИ, она - нормальный такой фреймворк с вводом/выводом, сокетами, http, html, базами, графикой, интернационализацией (млин, i18n и правда короче
И известных приложений на wxWidgets - тоже море: http://www.wxcommunity.com/modules.php?op=...nload&cid=5
Kicad, Voxel3D, aMule, Juice, Bacula, Audacity, DVDStyler, Amaya, VLC, Wired - все wxWidgets
-
eduard_pustobaev
- Сообщения: 2629
- Статус: Ленивец
- ОС: Arch/Debian.
Re: Кроссплатформенность на практике
Да, wxwidgets - как раз таки явный крнкурент Qt. И вполне достойный, хотя мне не нравится...
В дисгармонии со вселенной.
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Кроссплатформенность на практике
Это конечно правильно, но почему-то в той-же WindowsXP виджеты почемуто получаются от win3.x
-
Liksys
- Сообщения: 2910
Re: Кроссплатформенность на практике
Если нет сложного обсчета физики или математики (ну уж совсем сложного), то можно было бы взять Python + Qt4. Если программа клозе-сорсная и впадлу покупать лицензии, то вместо Qt4 можно взять GTK или wxWidgets. И то и то позволяет нахаляву закрывать софт, насколько я знаю.
-
vantaker
- Сообщения: 166
Re: Кроссплатформенность на практике
Это конечно правильно, но почему-то в той-же WindowsXP виджеты почемуто получаются от win3.x
Быть этого не может в принципе, и именно потому, что виджеты нативные (из родных виндовых библиотек, установленных в системе) - те же, что используются всеми другими приложениями
Если нет тем оформления (theme) на виджетах, разбирайтесь почему у вас не подключенился манифест (.manifest) или сами создайте его и киньте в папку с экзешником программы. Можете взять от любой другой установленной проги (или найти в сети) и переименовать: если ваш exe имеет вид app.exe, файл манифеста должен быть app.exe.manifest
И собирайте с wxMSW, а не с wxUniversal.
Прочитайте "Cross-Platform GUI Programming with wxWidgets". В сети есть в pdf (причем это не варез), ~ 7 МБ.
В русском Linux Format с 11.2007 идет цикл статей по wxWidgets. В Системном администраторе тоже вроде бы что-то было
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Кроссплатформенность на практике
Спасибо за ссылки и за информацию. Всё это очень полезно, однако я не свои программы имел ввиду, а чужие. Возможно они были старые и не знали о том, где запускались.
-
ozone baby
- Сообщения: 221
- ОС: Ubuntu i386/Ubuntu amd64
Re: Кроссплатформенность на практике
А почему Mono никто даже не рассматривает? С анонсом полной поддержки winForms mono становится фреймворком подходящим для написания большинства приложений
-
cy6erGn0m
- Сообщения: 119
- ОС: MandrivaLinux/Solaris 10
Re: Кроссплатформенность на практике
По той же причине почему тут решили не использовать яву, что было бы гораздо разумнее чем моно.
Что касается wxwidgets - это действительно неплохая штука, но то что она работает через gtk+ это правда большой недостаток.
Что касается прикручивания winelib это правда неплохой вариант..
Что касается wxwidgets - это действительно неплохая штука, но то что она работает через gtk+ это правда большой недостаток.
Что касается прикручивания winelib это правда неплохой вариант..
I want to Believe!
They must find it difficult...
Those who have taken authority as the truth,
Rather than trusth as the authority.
/G.Messey/
They must find it difficult...
Those who have taken authority as the truth,
Rather than trusth as the authority.
/G.Messey/
-
ozone baby
- Сообщения: 221
- ОС: Ubuntu i386/Ubuntu amd64
Re: Кроссплатформенность на практике
почему-то от wxWidgets многие плюются. Лично мне C# больше нравится. Да и mono это все-таки open source изначально, в отличие от java.