LINUX.ORG.RU

[python->java]Что выбрать в качестве ГУЯ?


1

0

Значится так. Есть уже лет шесть работающая морда к СУБД - программа для всякой там бухгалтерии и т.д. и т.п. Написана на связке Tcl/Tk/Python. Выглядит она примерно так. Кроме того, что она редактирует данные в базенке, она еще осужествляет разную печать посредством генерации xls-документов. Все это крутится на винде и на линухе, причем, у некоторых, в терминалках.
По ряду причин я хочу ее перевести под java. Описание интерфейса и логика у меня жестко разделены, потому надо будет переписать только движок, и 90% кода подхватится jython-ом.
Теперь перейдем к сабжу. На сегодня имеется 2 работающих подхода: традиционный гуи и web-морда. Между ними и выбирается, причем, накладывается ряд требований:

  • Поведение программы не должно отличаться от уже существующего. Например, все кейбиндинги, должны подхватится. В случае с веб-мордой я не уверен, что они не законфликтуют с кейбиндингами браузера.
  • Критичны диалоги с выпадающими табличками или деревьями, такие как список валют на сриншоте. Записей в такой табличке может быть много, до сотет тысяч, потому для такой таблички реализовано кеширование, и фильтр с сортировкой. Можно ли подобное реализовать на веб-морде? Просто ли это?
  • Как быть с печатью? На данный момент пользователь просматривает и печатает из OO или MSOffice. Использование такого формата существенно облегчает жизнь и мне, и пользователю. В случае с ГУИ юзер сразу видит готовый документ и ему надо только нажать кнопку «Печать». В случае с веб-мордой надо еще и отвечать на вопрос браузера о сохранении или открытии документа. Это не упрощение, а усложнение для юзера и он воспримет такое в штыки. Выставить действием по умолчанию тоже не получится, т.к. у разных пользователей разные привычки на сей счет.
  • Важно быстродействие. На данный момент прога бодро работает на доживающих свой век третьих пеньках. И даже на паре машин, привязанных 98-й виндой к станочкам, как-то крутится. Я не уверен, что решение на базе веб-морды будет бодро крутится на тех же третьих пеньках. Например, Zimbra на таких машинах ведет себя очень грустно.
  • Развертывание ГУЯ уже отработано и много лет с этим не возникает проблем. В случае с веб-мордой могут быть накладки. Например, та же Zimbra не работает с популярной весьма Оперой и для ее функционирования нужна достаточно мощная железка.

На данный момент я решил выбрать в качестве ГУИ и реализовать его на SWING. Тем не менее я хочу рассмотреть альтернативы. Особенно web-морды.

★★★★

Судя по скриншотам никаких особых виджетов помимо стандартных там нет, а значит, что стоит использовать не SWING, а SWT. SWT - это нативные виджеты, т.е. их отрисовкой занимается система - а значит это происходит быстрее, чем в SWING. Да и вообще, «нативность» виджетов всегда приятна. Кроме того архитектура MVC (для таблиц, деревьев) в SWT+JFace мне нравится гораздо больше чем в SWING - просто чтобы кастомизировать иконку в дереве в свинге тебе свой рендерер элементов дерева придется писать =/

theos ★★★
()

из всего выше написанного понятно только одно: нихера переделывать не надо :)

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

Надо.


  • тиклевская часть связки имеет ряд структурных проблем. Из-за этих причин тот же SK1 переписывают сейчас на QT.
  • есть проблемы с некоторыми питоновскими библиотеками и с самим питоном
cab ★★★★
() автор топика
Ответ на: комментарий от theos

Вот только SWT завязано на JNI, а там нефиговый overhead и есть набор недостатков. Да и с JIT'ом SWING не медленее SWT.

P.S.: а оно того стоит, чтобы переписывать работающее приложение на новое, которое ещё допиливать придётся?

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

Не все стандартные. Например, у меня есть всякие календари, виджеты с масками и т.д. Поведет ли себя SWT одинаково на разных платформих?

SWT - это нативные виджеты, т.е. их отрисовкой занимается система - а значит это происходит быстрее, чем в SWING.

Пока мне все впечатление от SWT портит эклипс. На моей убунте он вел себя не нативно (кажется не работали биндинги на Escape и Enter) и выглядел гораздо хуже нетбинса.

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

а оно того стоит, чтобы переписывать работающее приложение на новое, которое ещё допиливать придётся?


1) питоновский код будет тяжелее поддерживать, смотри предыдущий ответ.

2) java, как платформа, имеет больше вкусных плюшек.

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

> SWT завязано на JNI, а там нефиговый overhead и есть набор недостатков.

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

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

>выглядел гораздо хуже нетбинса.

о_О Не видел ничего хуже в смысле внешнего вида интерфейса под линем чем нетбинс %)

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

Согласен, вот как раз эклипс и в винде и в лине выглядит как родной, в отличие от нетбинса и идеи.

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

> Вот только SWT завязано на JNI, а там нефиговый overhead и есть набор недостатков

Если смотреть на количество операций, то оверхед кажется чудовищным, но в реальном мире все чуть лучше.

note173 ★★★★★
()

> На данный момент прога бодро работает на доживающих свой век третьих пеньках. И даже на паре машин, привязанных 98-й виндой к станочкам, как-то крутится. Я не уверен, что решение на базе веб-морды будет бодро крутится на тех же третьих пеньках

а джава будет ли шевелиться на такой рухляди? если на них 128Мб памяти то еще неизвестно може лучше на пифоне оставить?

Попробуй для начала хотя sqriurrel или dbvis на этих машинах запускать

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

Естественно, никто не спешит их переводить одномоментно :).

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

>Нетбинс :)

Эмуляция свингом темы ГТК - просто омерзение. Настолько плохо, что я готов на стандартный свнинговый Metal переключится, лишь бы не видеть это чудовище.

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