Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> достоинства и недостатки GUI тулкитов 
:(
    Опции темы
zhz
Дата 15.2.2012, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 31.10.2006
Где: Petropavlovsk-Kam chatsky

Репутация: нет
Всего: 2



Просьба знающих, написать основные достоинства и недостатки из имеющихся swt awt jface и swing. Можно конечно все это попробовать и тем самым узнать, но не хочется наступать на грабли, которые и так многими истоптаны. На данный момент сложилось впечатление:
awt довольно простой и имеет скудный набор компонентов. При этом , так сказать, есть везде. 
swing - основан на awt, больше всего чем в awt, но и сложнее.
swt вроде как пытались сделать собрав все хорошее из awt и swing, и убрав недостатки.
Но это все теория, неподтвержденная. А как дело выглядит на практике? В данной теме хотелось бы увидеть ключевые моменты, того или иного тулкита, которые впоследствии, помогли бы остальным определится с выбором.

PM MAIL ICQ   Вверх
Amp
Дата 15.2.2012, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: нет
Всего: 17



Ключевое отличие Swing от SWT это то, что последний использует нативные элементы управления для заданных ОС. Swing отрисовывает виджеты сам, но при этом (если выставить соответствующий LaF) пытается делать это с применением системной темы. Стоит заметить, что выходит у него это так себе, поэтому приложения на Swing видны невооруженным глазом. JFace - MVC наслойка над SWT. Про AWT ничего сказать не могу. Можно еще вспомнить QtJambi, который находит в непонятном состоянии, и JavaFX. Но последний я бы не относил именно к GUI-тулкитам, там все шире. 
PM MAIL   Вверх
jk1
Дата 15.2.2012, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 21
Всего: 75



Цитата

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

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

Цитата

awt довольно простой и имеет скудный набор компонентов.


И никто исключительно на нем уже давным-давно не пишет. Разве что вам повезет попасть на поддержку очень старого продукта. То есть если выбирать из пары AWT - Swing, то преимущество псоледнего сомнений не вызывает.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Amp
Дата 15.2.2012, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: нет
Всего: 17



Цитата(jk1 @  15.2.2012,  14:21 Найти цитируемый пост)
Зато у него есть неплохие собственные скины, да еще с возможностью переопределить любую мелочь.

Под собственными подразумеваются те, что из коробки (nimbus, metal и т.п.) ?
PM MAIL   Вверх
jk1
Дата 15.2.2012, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 21
Всего: 75



Цитата

Под собственными подразумеваются те, что из коробки (nimbus, metal и т.п.) ? 


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


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
zhz
Дата 16.2.2012, 04:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 31.10.2006
Где: Petropavlovsk-Kam chatsky

Репутация: нет
Всего: 2



Нашел сравнение тулкитов.  Перевел часть, пока не надоело. На качество не претендую, но как то так
AWT это оригинальный Java GUI тулкит. Его основное приемущество, в том , что он поставляется с каждой версией Java. Он очень стабилен. Это означает, что его не надо устанавливать отдельно, и он будет доступен везде, где сть JRE. AWT очень прост в использовании, но имеет ограниченный набор компонентов, layout менеджеров, и событий(events). При создании AWT, Sun делала упор на создание тулкита по технологии lowest-common denominator(LCD) (LCD это такой подход, при котором приложение должно запускаться на большинстве компьютеров, пусть даже в ущерб функциональности). В итоге, только компоненты, доступные для всех сред исполнения Java будут задействованы. Как результат, - и к сожалению,  некоторые широко используемые компоненты, такие как таблицы, деревья, прогрессбары и др. недоступны. Для приложений, требующих широкий набор компонентов, вам придется создавать их самому, что весьма трудоемко. Базовые компоненты представлены в пакеты java.awt.package. Замечательная особенность AWT, это то, что он поддерживает автоматическое удаление(disposal) компонентов. Это значит, что ВАм довольно редко придется делать это вручную. исключение: высокоуровневые компоненты, такие как диалоги, фрэймы. Компоненты AWT - потокобезопасны. 
Sun утверждает, что к Java применительо выражение "написал один раз, запускаешь везде и всегда"(WORE). Это значит , что Java код может быть написан и протестирован на одной машине(с Виндоус например), и следует ожидать что он запустится на любой другой, без предварительно тестирования. В большинстве случаев, это так, вот только AWT здесь является слабым звеном. ВВиду того, что AWT зависит от соответствующих ГУИ котнролов хоста(т.е например кнопка в AWT зависит от релизации кнопки в windows или linux), ГУИ будет выглядеть(и что более важно вести себя) различно, на различных хостах. Тем не менее, с помощью AWT можно создавать интерактивные приложения с дву- и трех мерной графикой.

 

Java Swing, так же известный как часть Java Foundation Classes, был попыткой избавится от недостатков AWT. В Swing, Sun реализовала хорошо спроектированный, гибкий, мощный ГУИ тулкит. К сожалению, это значит , что Swing требует достаточно времени для изучения, и местами излишне усложнен для определенных задач. Swing построен на AWT. Свинг (устал я языки переключать) использует модель событий , реализованную в АВТ, так же как и вспомогательные классы, такие как Colors, Images, Graphics. Компоненты, layout менеджеры, и события значительно расширяют имеющиеся в AWT, и идут в сравнение с SWt. Чтобы снизить различие в поведении на различных системах, Свинг минимизирует зависимость от компонентов той или иной системы. Многие компоненты эмулированы на чистой Java. Это значит что Свинг действительно кроссплатформен, и будет работать на большинстве систем. Таким образом свинг не будет выглядеть как нативные приложения в той или иной системе. В каждой системе он будет выглядеть по разному. Свинг может не позволить использовать приемущества хардварных ГУИ акселераторов и специфичные ГУИ операции. Тем самым Свинг работает медленнее, чем нативные гуи приложения. Сан уделяет этому большое внимание, и с каждой версией, все эти недостатки становятся все менее значимыми. Кодовая база Свинга довольно большая, это значит что он требует более  произвоительные машины для своей работы, чем скажем, АВТ и СВТ. 
Ключевые моменты Свинга:
1) Разделение модели от представления и контроллера.
Для все компонентов с моделями(кнопки, списки, таблицы, rich text  и тд.) модель отделена от компонентов. Это позволяет модели быть адаптированной для нужд приложения.
2)Программируемый LAF
реакция на события и внешний вид компонетов контролируется отдельными и динамически заменяемыми реализациями(LaF' ами).
3) Рендеры и редакторы.
Многие компонеты, отображающие "шаблонный" контент, такие как списки, таблицы и деревья, могут обрабатывать элементы различных типов.

Вообщем оригинал как и продолжение здесь
http://www.ibm.com/developerworks/grid/library/os-swingswt/

Если кому интересно, и сложно читать на английском, то могу перевести оставшуюся часть.


PM MAIL ICQ   Вверх
Skynin
Дата 16.2.2012, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: нет
Всего: 10



Цитата

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

Различий порядочное количество. Поэтому бегло:

AWT практически не применяется. Разве что иногда в апплетах.
Является базой для:

Swing работает везде, но сонно. Зато написан в академическом ООП стиле. Но не всегда красиво выглядит, даже с LаFaми. Зато осваивается быстрее, и учебных материалов, примеров для него много. Входит в JRE а потому приложению не нужны дополнительные библиотеки. Что очень положительно для приложений рассчитанных для запуска через Java Web Start.

на SWT+JFace - интерфейсы работают быстро. Используют чуть больше памяти, требуют библиотек к приложению, причем не только с учетом ОСи, а и разрядности JVM. (для Java Web Start настроить можно, но тянуть клиенту библиотеку - придется)
Ощутимо более развиты, чем Swing: утрировано SWT+JFace = Swing+SwingX+JGoodies. 
Cамый навороченный RCP для Java приложений: Eclipse RCP, основан на SWT+JFace. (NetBeans RCP, на Swing'е, все же слабее, в нем меньше готовых для бизнес приложений пакетов. И хуже приспособлен для расширения, но это уже не связано с GUI библиотекой)
Но так как используются ресурсы ОСи, нужно быть аккуратным с их освобождением. Начинающему очень легко получить "SWTError: No more handles"
Документации на самом то деле тоже предостаточно, но сплошь на английском, и примеры не для студентов.
В отличие от Swing - развивается, совершенствуется и сейчас.

P.S.
Да, пара ссылок:
Пакеты SWT и JFace, Часть 1: Небольшой обзор
Пакеты SWT и JFace, Часть 2: Небольшой обзор

Это сообщение отредактировал(а) Skynin - 16.2.2012, 10:36
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
zhz
Дата 24.2.2012, 03:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 31.10.2006
Где: Petropavlovsk-Kam chatsky

Репутация: нет
Всего: 2



Skynin, Спасибо, информативно.
Нашел отличный источник примеров, будет очень полезен начинающим использовать SWT:  http://www.eclipse.org/swt/snippets/
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.1269 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.