|
Модераторы: LSD, AntonSaburov |
|
zhz |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 76 Регистрация: 31.10.2006 Где: Petropavlovsk-Kam chatsky Репутация: нет Всего: 2 |
Просьба знающих, написать основные достоинства и недостатки из имеющихся swt awt jface и swing. Можно конечно все это попробовать и тем самым узнать, но не хочется наступать на грабли, которые и так многими истоптаны. На данный момент сложилось впечатление:
awt довольно простой и имеет скудный набор компонентов. При этом , так сказать, есть везде. swing - основан на awt, больше всего чем в awt, но и сложнее. swt вроде как пытались сделать собрав все хорошее из awt и swing, и убрав недостатки. Но это все теория, неподтвержденная. А как дело выглядит на практике? В данной теме хотелось бы увидеть ключевые моменты, того или иного тулкита, которые впоследствии, помогли бы остальным определится с выбором. |
|||
|
||||
Amp |
|
|||
Опытный Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: нет Всего: 17 |
Ключевое отличие Swing от SWT это то, что последний использует нативные элементы управления для заданных ОС. Swing отрисовывает виджеты сам, но при этом (если выставить соответствующий LaF) пытается делать это с применением системной темы. Стоит заметить, что выходит у него это так себе, поэтому приложения на Swing видны невооруженным глазом. JFace - MVC наслойка над SWT. Про AWT ничего сказать не могу. Можно еще вспомнить QtJambi, который находит в непонятном состоянии, и JavaFX. Но последний я бы не относил именно к GUI-тулкитам, там все шире.
|
|||
|
||||
jk1 |
|
||||
Эксперт Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 21 Всего: 75 |
Зато у него есть неплохие собственные скины, да еще с возможностью переопределить любую мелочь.
И никто исключительно на нем уже давным-давно не пишет. Разве что вам повезет попасть на поддержку очень старого продукта. То есть если выбирать из пары AWT - Swing, то преимущество псоледнего сомнений не вызывает. -------------------- Opinions are like assholes — everybody has one |
||||
|
|||||
Amp |
|
|||
Опытный Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: нет Всего: 17 |
||||
|
||||
jk1 |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 21 Всего: 75 |
Из коробочных удобоварим в настройке только Nimbus, я в основном сторонние имел ввиду. -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
zhz |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 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/ Если кому интересно, и сложно читать на английском, то могу перевести оставшуюся часть. |
|||
|
||||
Skynin |
|
|||
Опытный Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
zhz |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 76 Регистрация: 31.10.2006 Где: Petropavlovsk-Kam chatsky Репутация: нет Всего: 2 |
Skynin, Спасибо, информативно.
Нашел отличный источник примеров, будет очень полезен начинающим использовать SWT: http://www.eclipse.org/swt/snippets/ |
|||
|
||||
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |