Кто пишет ГУЙ на джаве?

redzor

Интересно, как сейчас обстоят дела с этим, востребовано ли оно и пр.

ava3443

Если ГУЙ в виде веб-интерфейса, то наверняка востребовано, про остальное (Swing, SWT) сказать затрудняюсь.

redzor

имеется ввиду swing

laki

думаю нет. ГУЙ клиента лучше писать на более доступных и быстрых (в плане разработки средствах).
хотя вроде в netup ваяют на свинге

enochka1145

Попробуй на www.job.ru ввести ключевые слова "Java", "GUI" и что-нибудь в этом духе, например "Swing", "SWT", "Eclipse".

redzor

Хотелось бы услышать от тех, кто сам этим занимается.

enochka1145


Допустим, я сам этим занимаюсь, и это у меня офигенно востребованно. Меня хвалят, премируют и продвигают.
Только я одного не пойму: а при чём здесь ты-то?

redzor

Занимаюсь java swing в течение года, работаю с такими программами как NetBeans, IDEA, Eclipse. В общем - то не при чем. Просто интересуюсь.

ava3443

Брось бяку, забей на Swing, пиши под SWT.
Это я тебе как юзер того и другого говорю

durka82

А чем плох Swing?

pitrik2

А чем плох Swing?
я так понимаю тем, что на нем долго и гиморно писать
ну и скорость работы наверное оставляет желать лучшего
а еще там бывают всякие гадкие баги, которые тянутся со второй версии джавы и только в 6 обещают все поправить

psm-home

Вот кстати, продолжая флейм, а на чем GUI писать быстро и безгеморно?

enochka1145

SWT/JFace/Eclipse RCP. Здесь SWT - это библиотека контролов, JFace - всякие удобства на базе SWT, а Eclipse RCP - вааще расслабься и получай удовольствие (ну, после некоторого знакомства).

psm-home

Нет, спасибо конечно за разъяснения. Я вообще-то в курсе про SWT/JFace/Eclipse RCP. Ожидал чего-то услышать не из мира Java.

Helga87

Ожидал чего-то услышать не из мира Java.
тоже очень хочу узнать. Вроде, некоторые радуются на Tk, но не факт. То, что видел я, радости приносит немного, только в простых случаях.

shlyumper

На Tk некоторые вещи писать оооочень тоскливо (писал на perl-Tk). Пока остановился на perl-Gtk2

Helga87

о. С учетом, что мне возможно скоро придется иметь дело с Gtk#, расскажи свои впечатления. Чем Gtk2 крут, какие вещи/задачи в нем делаются приятно, какие минусы известны?

shlyumper

Gtk2 - достаточно удобно писать, нет строгой ориентации на использование "объектно-ориентированного" стиля программирования. Минусы: убого выглядит под виндой, стандартные диалоги (типа "открыть файл") под линуксом убогие.
Еще имел дело с:
WxWidgets - все хорошо, кроме навязывания "объектно-ориентированного" стиля программирования. Это и оттолкнуло в конечном счете.
Qt - судя по всему perl-Qt мертв, на C++ под него писать достаточно комфортно, хотя опять же "объектно-ориентированный" стиль.
Самое приятное, с чем пока сталкивался - System.Windows.Forms

Helga87

System.Windows.Forms вещь не самая плохая, но в ряде сложных случаев проблемы имеются и не из тех, в которых надо подумать и стукнуть, а в из тех, где матюкнуться и постучать.

6yrop

Самое приятное, с чем пока сталкивался - System.Windows.Forms
что есть и хуже?

shlyumper

Вот же вы остроумные все какие, что просто пиздец.

bastii

Нет, спасибо конечно за разъяснения. Я вообще-то в курсе про SWT/JFace/Eclipse RCP. Ожидал чего-то услышать не из мира Java.
Странно, что никто не упомянул Windows Presentation Foundation под .NET. Пока еще рано говорить, технология фактически имеет версию 1.0 - 0.1 , но WPF выглядит очень много обещающе. Правда, пока писал только маленький ГУИ и всех фишек не знаю. Поддержка со стороны тулов минимальная. Многих базовых контролов нет, но это компенсируется тем, что очень легко строить композицию контролов и наполнять их содержимым (во многом благодаря тому, что в своем дизайне WPF растет из идеологии, что контрол реализует только поведение и не завязывается на определенное представление).
Думаю, что к концу года с выходом VS Orcas подтянутся и основные производители контролов, тогда для новых проектов WPF станет сильно более привлекательной винформ.
Пока общее впечатление следующее. Наконец появилась ГУИ библиотека, программируя под которую не напрягает каждый раз, когда надо реализовать в ГУИ новую нетривиальную фичу (особенно если она нестандартная и нет необходимости искать компромисс между разумными трудозатратами на реализацию фичи и изначально задуманной ее функциональностью.
Если сравнивать со Swing, то это день и ночь (причем Swing можно рассматривать как одного из представителей всего класса существующих ГУИ библиотек, основанных на примерно одних и тех же общих принципах). WPF очень сильно отличается своим дизайном и в итоге, мне кажется, предоставляет гораздо более чистый API. Так, например, в WPF встроена мощная поддержка data binding, что позволяет декларативно определять довольно сложный ГУИ. В Swing, насколько мне известно, пока только планируют реализовать data binding в 7-ой версии. Только в WPF это не просто полезная фича, примочка к тому что есть, чтобы сделать программирование под Swing проще, а фактически основа на которой построен WPF, что коренным образом влияет на общий дизайн WPF.

6yrop

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

Helga87

кстати, какие компоненты юзаете? стандартные или какие-то покупные? если второе — то какие? что не устраивает?

6yrop

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

странно, что основной элемент технологии под название Windows Presentation Foundation ориентирован на поведение, а не на представление
Наконец появилась ГУИ библиотека, программируя под которую не напрягает каждый раз, когда надо реализовать в ГУИ новую нетривиальную фичу (особенно если она нестандартная и нет необходимости искать компромисс между разумными трудозатратами на реализацию фичи и изначально задуманной ее функциональностью.

странное утверждение в контексте того, что
писал только маленький ГУИ и всех фишек не знаю

в WPF встроена мощная поддержка data binding, что позволяет декларативно определять довольно сложный ГУИ. ...
Только в WPF это не просто полезная фича, ..., а фактически основа на которой построен WPF, что коренным образом влияет на общий дизайн WPF.

я могу ошибаться, но как раз это очень плохо! У MS (да и у остальных) пока нет красивого решения для работы с данными, казалось бы в этой ситуации надо полностью отделить презентацию от данных, так нет, они в очередной раз мутят датабайндинг. Реализации датабайдинга менялась от версии к версии (и в WinForms-ах и в ASP но оставались убогими.

6yrop

кстати, какие компоненты юзаете? стандартные или какие-то покупные? если второе — то какие? что не устраивает?
стандартные. Еще до меня у конторы был печальный опыт использования Infragistics, теперь стараемся не использовать сторонние компоненты.
Не устраивает, например, дизайнер и механизм лайаута.

6yrop

у нас довольно примитивный ГУИ

opryjr

XUL пробовал - понравилось %) совсем не ГУИ на жаве, но интегрировать с ней удобно

bastii

я могу ошибаться, но как раз это очень плохо! У MS (да и у остальных) пока нет красивого решения для работы с данными, казалось бы в этой ситуации надо полностью отделить презентацию от данных, так нет, они в очередной раз мутят датабайндинг. Реализации датабайдинга менялась от версии к версии (и в WinForms-ах и в ASP но оставались убогими.
Да, менялся и в лучшую сторону. По Winform тоже мало прогал, то data binding в 2.0 специально смотрел, уже не так плохо.
В WPF реализации датабайнтинга уделено основное внимание, т.к. ему отводится ключевая роль в API. В WPF специально разработана своя система свойств со встроенной поддержкой датабаинтинга. Вообще в отношении WPF очень сложно выпячивать сильную сторону отдельных составляющих. Надо смотреть на WPF в целом и на цели, которые MS преследовали в своем дизайне, и будет видно как там одно другое тянет. Просто разработчики проделали огромную работу. Чего уж говорить, больше 5 лет разработки.

bastii

странно, что основной элемент технологии под название Windows Presentation Foundation ориентирован на поведение, а не на представление
Наоборот, если в Winforms ты можешь только переопределять строку в кнопке, то в WPF ты можешь определить произвольное содержание.
Например, поместить в Content кнопки панель с лейблой и слайдером. Слайдер будет менять, например, режим операции, которую вызывает нажатие этой кнопки. При этом лейбла будет отображать текущий режим. Значения лейблы, слайдера и, например, свойства бизнес объекта, реализующего операцию, будут связаны датабайндингом. Если свойство объекта имеет тип перечисление, то датабайндинг будет определяться с конверторами типов.
Более того, ты можешь напрямую установить button1.Content = obj1, это можно сделать тем же датабайндингом. Панель со всеми контролами помещается в шаблон контрола (DataTemplate который присваивается button1.ContentTemplate. Если ты сделаешь для своей кнопки подкласс класса Button, например, ButtonOp, то сможешь задавать для этого класса стиль, который будет определять значение ContentTemplate для всех экземпляров в составе "контейнера" (например, все приложение или определенное окно).
Более того, СontentTemplate может зависеть от другого свойства бизнес объекта, например, от Status (опять датабайндинг). Когда запускается операция, статус меняется, меняется и содержимое кнопки, которая теперь отображает, например, прогресс в исполнении операции.
Еще один интересный момент: в WPF значения свойств наследуются. Так, если панель в кнопке, то она наследует значение свойства Background, которое наследую все элементы в внутри панели и так далее по логическому дереву элементов.
Чем дальше, тем заметней преимущество WPF перед классическими ГУИ библиотеками. Так, например, ГУИ составляющая Open Dialog в Висте, делается довольно легко как композиция базовых контролов. Список файлов можно реализовать как Listbox, для которого будут определены несколько шаблонов (шаблон списка и шаблоны элементов списка, последних может быть несколько для разных типов элементов своих шаблоны элемента которые соответствуют разным "режимам просмотра". Датабайндинги связывают значения выпадающего слайдера для выбора "режима просмотра" со значением текущих шаблонов списка и размером элементов списка в режиме "Thumbnail View". Все довольно просто, большая часть работы может быть сделана одной мышкой в тулзе типа Expression Blend. А вот для Winforms или Swing я с трудом представляю, сколько всего нужно сделать, чтобы такое получить, и сколько там будет говнокода.
А относительно библиотеки контролов, так это обещают в конце года с выходом VS Orcas, благо контролы в WPF ваяются быстро. Там из содержательной работы только добавить design time функциональность контролам, а то не все вижуал программисты смогут перелезть с Winforms.

Dasar

как databinding в WPF работает с меняющимся данными?
т.е. что надо сделать, чтобы, например, связать DateTime.Now и Label?
или (DateTime.Now.Ticks / 1e6) и Label?

bastii

для бизнес объектов есть вариант с INotifyPropertyChanged

bastii

Так твой пример с DateTime.Now сильно не корректный: 1) это структура, а Now статическое свойство, 2) в data binding используется push модель, где изменение одного свойства отражается изменением другого.
В принципе не вижу проблемы. Для таких вещей можно сделать прокси, который будет сообщать об изменении значения.

Dasar

т.е. вся поддержка изменений делается через события?

Helga87

Не устраивает, например, дизайнер и механизм лайаута.
золотые слова
Оставить комментарий
Имя или ник:
Комментарий: