IP Software Книги Статьи/заметки Полезное Обсуждение ENG РУС


Блоги: Декларативное описание UI Инструменты: Библиотеки: Платформы:
В данном разделе будут доступны некоторые доказавшие свою полезность и эффективность инструменты, не вошедшие в книги или вошедшие в усеченном варианте, и описание других сторонних библиотек, которые могут быть полезны при создании быстрых и эффектных интерфейсов на Java/Swing, а также советы по ним. Также здесь можно найти ссылки на самые интересные статьи, комментарии и конечно блоги, где люди, имеющие отношение к пользовательским интерфейсам, обсуждают последние тренды.

Блог Alex From Sun

http://www.java.net/blogs/alexfromsun/ Записки Александра Поточкина, земляка из Санкт-Петербурга, работающего в местном отделении Sun как раз над Swing. Когда-то очень оживленные записки, в том числе приведшие к созданию замечательного инструмента JXLayer, который описан во втором издании книги, сейчас, на фоне увядшего внимания к Swing и отвлечения Sun на JavaFX, несколько менее частые, однако от этого не менее ценные. Иногда можно узнать информацию прямо из недр команды Swing и многому научиться.

Блог Jonathan Giles

http://jonathangiles.net/blog/ Дневник Джонатана Гилза, работающего в новозеландском отделении Sun над клиентскими технологиями. Дневник хорош тем, что Джонатан регулярно собирает и систематизирует ссылки на все блоги, статьи, новости, относящиеся к Swing и JavaFX, и выкладет их еженедельно. Хороший способ оставаться в курсе событий не прикладывая много усилий.

Блог Pushing Pixels

http://www.pushing-pixels.org/ Блог создателя впечатляющего своей тонкой анимацией и качеством реализации внешнего вида Substance Кирилла Грушникова, каждодневно собирающего все новую информацию со всего мира, находящего всевозможные ресурсы по Java/Swing и анимации, и приводящего время от времени исследования Swing. Крайне интересно и на данный момент очень живо и часто обновляется.

К сожалению, в последнее время Кирилл, работающий больше над платформой Android, несколько забросил свои увлекательные опыты и эксперименты со Swing, и пишет о нем не так часто. Но в любом случае его блог увлекателен и даже в архивах вы сможете найти немало интереснейшей информации о Swing.

Swing HTML Template

Swing HTML Template - совсем свежая попытка нашего коллеги Владимира Пенькова создать универсальный инструмент для быстрого декларативного описания интерфейса Swing с помощью всем прекрасно знакомого HTML. Пока что вряд ли вы сможете попросить своего дизайнера HTML накидать вам страничку и в результате получить полностью функциональный интерфейс на Swing, однако работа кипит, возможно даже я поучавствую в этом проекте, так как тема это благодатная и особенно необходимая в случае плавающих требований и множества компонентов. Уже сейчас можно использовать для расположения компонентов MigLayout, присоединить компоненты из HTML к модели с данными с помощью все того же Beans Binding, и обработать простые события, не написав ни одного слушателя, писать которые весьма надоедает. В результате получится чистое разделение интерфейса, модели, и в ваших силах отделить и поведение, а это путь к успеху и качеству. Найти исходные коды, документацию, Wiki, ссылки на то как добавить инструмент в ваш Maven-проект, можно по адресу http://code.google.com/p/swinghtmltemplate/.

XML Menu Loader и SwiXML

XMLMenuLoader - Описанный в книге простой и крайне эффективный инструмент для быстрого создания систем меню Swing. Создание меню в коде создает пространный, не несущий никакой функциональной нагрузки результат, и возможность загрузить меню любой сложности из проверенного временем XML как нельзя кстати. Более сложный и нагруженный деталями вариант для создания практически всех компонентов Swing - проект SwiXML (http://www.swixml.org/). С моей точки зрения XML вполне хорош для меню, однако увлекаться им особо не стоит, проверка типов и ошибок компиляции при написании интерфейса на Java уже хороша сама по себе, но у вас может быть другое мнение, и проект SwiXML придется вам по душе. К сожалению, судя по всему, немного "заброшен" и редко обновляется, однако вполне функционален.

FEST - модульное тестирование Swing-приложений

Модульное тестирование (unit-tests) - мощнейшее оружие разработчика программного обеспечения. Оно позволяет встать на сторону "пользователя" написанного кода, в случае с библиотекой это будущие программисты-клиенты, а в случае просто делового кода "пользователем" является компьютер, которому предстоит весь представленный код исполнить. Взгляд с другой стороны дает возможность оценить сделанное и проверить каждый, мельчайший аспект написанной функциональности. Любой, мало мальски сложный алгоритм, достоин своего теста, который твердо держит его в корректных рамках и ломается если изменения кода ломают эти рамки.

Модульное тестирование пользовательского интерфейса всегда было большой проблемой, так как чтобы "оживить" интерфейс, необходимо подать на него движения мыши, клавиатуру и вводные данные. Ручное тестирование дорого и пропускает многие внутренние алгоритмы. Существуют разные способы эмуляции действий пользователя, многое мы обсуждали в книгах о Swing. Библиотека FEST дает нам уникальную возможность держать свой Java Swing интерфейс в корректном состоянии с помощью специализированных модульных тестов. Обязательно попробуйте и ваши QA-специалисты будут молить дать им хотя бы одну ошибку.

Скачать библиотеку FEST можно на http://fest.easytesting.org/

Swing Explorer

Swing Explorer - еще один прекрасный инструмент для Swing, написанный питерским программистом. Позволяет скрупулезно исследовать всю "начинку" Swing-приложения, узнать, какие менеджеры расположения управляют контейнерами, проследить за потоками, процессом рисования на экране и понять в целом, кто и как отвечает за каждый пиксел на экране. Особенно хорош если вам в наследство досталось неуклюжее Swing-приложение, из кода которого сложно что-то понять - в этом случае вы сразу увидите структуру интерфейса.

Скачать Swing Explorer можно на https://swingexplorer.dev.java.net/

JGoodies Looks

Один из бесплатных подключаемых внешних видов для Swing. Использование его в некоторых моих проектах доказало отсутствие неожиданных проблем и ошибок, постоянство и качество обновлений, достойный внешний вид и быстроту работы и реакций на действия пользователей.
Скачать библиотеку, найти примеры, некоторые полезные дополнения (не все из них бесплатны) и посмотреть демонстрацию внешнего вида с помощью Java Web Start можно на странице:
http://www.jgoodies.com
Рекомендую попробовать в своих работах, если вы пока еще не определились с основами внешнего вида своего Swing-приложения. Опытные разработчики Swing пробовали многие сторонние внешние виды, однако JGoodies Looks считается одним из самых надежных, доказавших свое качество и стабильность вариантов на все случаи жизни.

Beans Binding

В приложениях с большим количеством разношерстных данных, особенно если данные эти не подразумевают особенно сложного редактирования и связей между собой, создание моделей для таблиц и списков превращается в рутину и бессмысленный вызов методов get() и set(). Библиотека Beans Binding, разработанная еще во времена Sun, частично решает эту проблему, позволяя просто и достаточно эффективно привязать ваши данные к компонентам Swing, особенно неплохо работая для таблиц с большим количеством столбцов.
Скачать последнюю версию Beans Binding, к сожалению, не слишком свежую, но рабочую, можно по адресу http://beansbinding.dev.java.net/.

FilterHeader от Coderazzi

При работе с большими наборами табличных данных практически всегда необходимо тем или иным образом фильтровать их чтобы отделить зерна от плевел и увидеть нужные строки и стоблцы. Таблицы JTable прекрасно умеет фильтровать данные, показывать только определенные строки, и гибко настраивать свои фильтры, все это описано в моей книге. Однако никаких стандартных компонентов для настройки фильтрации в ней нет.
Для многих прекрасным примером реализации гибкой таблицы является Microsoft Excel, который способен для каждого столбца показать гибкий фильтр с выпадающим списком, где вы можете выбрать фильтрацию строк только с определенным значением. Библиотека FilterHeader добавляет к таблицам JTable аналогичную функциональность всего одной строкой. Если вы работаете с большим количеством табличных данных, то пользователи приложения наверняка захотят фильтровать их, и перед написанием своих компонентов опробуйте сначала FilterHeader. Она к тому же доступна через центральный репозиторий Maven.
Найти библиотеку FilterHeader можно на http://coderazzi.net/tablefilter/. Там же вы найдете примеры, сможете скачать ее, или узнать как добавить ее в свой Maven-проект.

Внешний вид Substance

Прекрасный внешний вид для Swing, немного "нестадартный" в цветах и размерах компонентов, и очень сильно ориентированный на анимационные эффекты, простые, но хорошо заметные. Одним из самых главных его свойств является строгое слежение за выполнением краеугольного закона Swing - "Компоненты Swing работают только с потоком рассылки событий". Если программа обращается к компоненту Swing из другого потока, библиотека Substance "выбросит" исключение, что делает ее прекрасным инструментом для тестирования ваших приложений, а не только замечательным внешним видом.

Найти последние версии внешнего вида Substance можно на https://substance.dev.java.net/

Платформа и IDE: Net Beans

NetBeans, более широко известная как среда разработки не только Java-приложений, но и многих других языков и сред, написана с использованием Swing, представляет собой прекрасный пример правильного и эффективного использования библиотеки, быстра и надежна. Однако это еще и платформа разработки, в основе которой лежит набор базовых модулей, таких как оконная система и набор стандартных диалогов, которую вы можете использовать для своих нужд.
Основа основ – оконная система NetBeans, представляющая собой многооконный интерфейс (MDI), который, тем не менее, в разы интереснее и представляет намного больше полезнейших функций в сравнении со стандартным компонентом Swing JDesktopPane. Если вы обдумываете возможность создания приложения с многооконным интерфейсом и большим количеством функциональности, обязательно рассмотрите платформу NetBeans.
Как только вы научитесь управлять оконной системой NetBeans, создание пользовательского интерфейса ничем не будет отличаться от обычного Swing-приложения, только размещаться компоненты будут во внутренних окнах NetBeans и работать под управлением оконной системы и в ее жизненном цикле.
Важнейшая особенность NetBeans – четкое разделение системы на модули, которые можно включать или не включать в итоговое приложение или даже включать динамически, что позволяет гибко настраивать набор функций в вашей системе. Модули могут прозрачно обмениваться данными, в том числе и данными из пользовательского интерфейса, не запрашивая никаких конкретных компонентов и окон. Все это позволяет применять NetBeans для построения масштабных, легко расширяемых приложений и новых платформ.
Однако, есть одно маленькое «но» - не очень хорошее качество документации и некоторая сложность и запутанность методов и классов NetBeans, и особенно запутывает наличие декларативных файлов XML, которые упралвяют ролями окон, настройками меню и многим другим, что сродни изучению нового языка. Если вы серьезно нацелились на NetBeans, лучше сразу приобрести и прочитать качественную книгу об этой платформе, иначе «кривая обучения» может затянуться.
Основной сайт NetBeans находится по адресу http://netbeans.org/.

Все права защищены, Компания IP Software, 2014 год
Вопросы, касающиеся данного веб-сайта, можно обсудить, написав письмо по адресу webmaster@ipsoftware.ru