LINUX.ORG.RU

Кроссплатформенные приложения — миф или реальность?

 , , , ,


0

2

После своего предыдущего треда я начал тыкать Swing. До сих пор не могу понять, использует ли Swing GTK+ или просто читает его тему и рисует так же.
Хочется писать кроссплатформенно, но так, чтобы выглядело нативно на любой платформе. Чтобы на венде использовать ШinForms, Cacao на макакоси и GTK+ на линуксе. А то Metal — совсем не то. Можно ли как-то так сделать?

Казалось бы, ответ — Qt, но говорят, что Qt Jambi протух.


UPD: А ещё хочется использовать системные иконки и системные диалоги выбора файлов. На свинге такое нельзя никак сделать, да?

★★★★★

Последнее исправление: CYB3R (всего исправлений: 2)

Надо было пилить топик в качестве голосования, 99% голосов было бы за Qt.
Swing хорош тем что приложуха будет страшная как смерть, но писать просто, надо компилять под кучу платформ (cmake и ферма виртуалок решает эту проблему).

ihanick
()
Ответ на: комментарий от zamtmn

Да люблю я плюсы, с чего вы взяли?

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от zamtmn

Для нативного гуя надо любить MFC, GTK и Cocoa :)

Хотя для винды и линукса полный разнобой в гуи - вполне нормальная вещь.

dave ★★★★★
()

Хочется писать кроссплатформенно, но так, чтобы выглядело нативно на любой платформе

А-а, неа
Не выйдет

Karapuz ★★★★★
()
Ответ на: комментарий от BattleCoder

idea довольно шустрая. Даже удивительно. Наверное, там оптимизаций понавешали.

ее просто писали по-человечески.

arkhnchul ★★★
()
Ответ на: комментарий от CYB3R

Да не трогай ты этот эклипс, идея для энтерпрайза стоит копейки, а для себя побыдлокодить и бесплатно можно в опенсорной версии.

f1xmAn ★★★★★
()
Ответ на: комментарий от arkhnchul

ее просто писали по-человечески

ее просто писали по принципам ООП
fxd

Karapuz ★★★★★
()

Даже Safari, Acrobat, Photoshop выглядят как-то ненативно под вендой. А могли бы и постараться

Karapuz ★★★★★
()
Ответ на: комментарий от Tweaker

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

+, как не пиши на яве гуйню/cli - всё равно будет лютое гогно.

mashina ★★★★★
()

А вот еще вариант - PyQt5. Так тебе и нативно на любой платформе хорошо смотрится, и язык не нативный. Всё как ты любишь.

I-Love-Microsoft ★★★★★
()

А еще есть такой open-core GUI тулкит для явы - опенсорс + платные виджеты, быстрые и красивые, шустрят на любой платформе, но основаны на стандартных явовских методах отображения. Это использует Xilinx в своей IDE Vivado. Посмотри скрины этой среды и реши - прикольные ли виджеты там для жабы?

Название как назло не гуглится и не помнится.

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

swt, емнип, нативно должно выглядеть же

buddhist ★★★★★
()

Самое близкое — Qt. На Windows реально использует виджеты из Windows, на OS X — из Cocoa, на Гноме — из темы GTK, если есть.

Если хочется идеального соответствия платформе, придется ввести много платформенно-специфичного кода, потому что все не заканчивается на картинках кнопочек.

note173 ★★★★★
()
Ответ на: комментарий от note173

А мне казалось что Qt именно что эмулирует стиль виджетов и рисует самостоятельно. Но подхватывает стиль просто идеально - мне кажется так.

I-Love-Microsoft ★★★★★
()

Можно ли как-то так сделать?

Смотри в сторонну Look and Feel'ов от сторонних разработчиков. P.S. На макакоси Swing из коробки выглядит нативно.

annulen ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Может, и так. Просто он и на XP все состояния нативных контролов правильно рисует, и на OS X, а они совсем разные. Не уверен точно, но кажется, что даже нативные анимации кнопок есть.

note173 ★★★★★
()
Ответ на: комментарий от annulen

На макакоси Swing из коробки выглядит нативно.

Все-таки не до конца, уже на более-менее сложных интерфейсах легко видна разница.

note173 ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Это использует Xilinx в своей IDE Vivado. Посмотри скрины этой среды и реши - прикольные ли виджеты там для жабы?

я не я буду, если на скринах там не чото на базе Eclipse с SWT.

arkhnchul ★★★
()
Ответ на: комментарий от mashina

как не пиши на яве гуйню/cli - всё равно будет лютое гогно.

Руками уже пробовал?

anonymous
()
Ответ на: комментарий от I-Love-Microsoft

Там не SWT, там именно что тулкит с совершенно иным, но очень качественным набором виджетов.

огромные у меня подозрения.

вот это вот - http://www.aldec.com/resources/articles/images/VIVADO_fig3.png , http://www.xilinx.com/Image/1_IP_Catalog.PNG , http://www.aldec.com/resources/articles/images/AHDL_VIVADO_fig5.png - обычные эклипсовые воркспейсы.

с эклипсовского сайта: http://www.eclipse.org/membership/showMember.php?member_id=962

плюс в их пдфке с third-party лицензиями куча всякого за эклипс и libswt.

arkhnchul ★★★
()
Ответ на: комментарий от arkhnchul

Да, для других программ они используют именно SWT и эклипс для SDK, это так. Но их новая среда Vivado - не основана на этом, потому что мне удалось найти сайт с описанием того, на базе чего она сделана. Твои скрины лишь подтверждают отсутствие связи и лишь может быть некоторые виджеты были выдернуты из эклипса.

Но тебе шашечки или ехать?

I-Love-Microsoft ★★★★★
()

Всё можно. Посмотри как тут сделано: http://sourceforge.net/projects/atunes/ При установке можно и исходники установить, в настройках вида есть 'system' - это, то что тебе интересно.

ii8_ ★★★★
()
Ответ на: комментарий от CYB3R

А MFC зачем?

Подозреваю, что Evernote для винды был переписан с WPF на MFC (или хардкодили прямо на WinAPI?). Было много шума в интернетах по этому поводу. Да, и MFC использует Си++, но оба сейчас не в тренде. WPF же - жуткое мыло, да и, вообще, какое-то другое. WinForms не развивают.

Что касается твоего начального вопроса. Даже SWT и Qt могут по-началу выглядеть нативно, но только пока они не начинают использовать своих навороченных компонентов, а куда без таких компонентов в сложном приложении? Даже простенькие вкладки с кнопочками и перемещениями без них не сделаешь.

Или бывает, что случайно задашь не тот атрибут компоненту, и пиши пропало. Обычная кнопка из стандартной в миг превратилась в нечто, как говорят здесь, «вырвиглазное». Хуже всего то, что не на всех платформах это проявляется. Как на зло, на платформе, которую использует разработчик, все может казаться хорошо, а на других будет все не так радужно.

Короче говоря, все, что не написано на Objective-C и не использует Cocoa, все это выглядит на маке хреново с разной степенью этой самой хреновсти. Это чувствуется и не в тех шрифтах, и не в тех промежутках между компонентами, когда они расставлены как-то не так, и меню как-то криво отрисовывается (да-да, привет, Swing), да диалог открытия файлов как-то странно работает (привет, SWT), да куча мелочей. Это еще в лучшем случае, если не используются всякие компоненты самого тулкита (см. выше про вкладки). А значит, вопрос с мнимой кросс-платформенностью закрыт навсегда.

Поэтому я для себя решил так. Истинной нативности не надо. Главное, чтобы программа была удобной и полезной, и тогда ее будут использовать.

А так, мне, например, очень нравится CAPI из LispWorks. Стандартные компоненты выглядят вполне неплохо, не хуже, чем в Qt. Но это уже личное предпочтение.

dave ★★★★★
()
Ответ на: комментарий от anonymous

И зачем было брать левый язык, когда есть божественный ГТК?

Да я принялся было на ГТК....

Кроме того, ошибок наделал организационного плана. Задумка была слишком масштабная, а такое не приветствуется. Да и вообще... Хватило недомолвок.

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

Deleted
()
Ответ на: комментарий от CYB3R

Так не бывает, что бы было не нужно добавлять в гуишный фреймворк. Но винформы довольно хороши, как ни странно, хотя они и были промежуточным решением: не надо было изобретать велосипед, и все сделали по-быстрому поверх winapi.

Вот, тут многие писают кипятком от WPF, а мне они совершенно не нравятся, как внешне, так и внутренне, как не нравится и сама их идеология с сценическим графом. Но тут разработчики Evernote уже все сказали... Здесь любят обычно приводить в пользу WPF как пример студию, но мне кажется, что там далеко не чистый WPF.

dave ★★★★★
()

Если бы я писал GUI на яве, то без всяких сомнений выбрал бы JavaFX. Очень стильно.

PatrickKilpatrick
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.