Swing - инструментарий для создания графического интерфейса пользователя (GUI), на языке программирования Java. Это часть библиотеки базовых классов Java (JFC, Java Foundation Classes).
Swing разрабатывали для обеспечения функционального набора программных компонентов, для создания графического интерфейса пользователя, чем у более раннего инструментария AWT. Компоненты Swing поддерживают специфические look-and-feel модули, динамически подключаемые. Благодаря им, возможна эмуляция графического интерфейса платформы (т.е. к компоненту можно динамически подключить другие, специфические для данной операционной системы вид и поведение). Основным недостатком таких компонентов является относительно медленная работа, хотя в последнее время это не удалось подтвердить из-за роста мощности персональных компьютеров. Положительная сторона - универсальность интерфейса созданных приложений на всех платформах.
История
В начале существования Java классов, Swing не было вообще. Из-за слабых мест в AWT (начальной GUI системе Java) был создан Swing. AWT определяет базовый набор элементов управления, окон и диалогов, которые поддерживают пригодный к использованию, но ограниченный в возможностях графический интерфейс. Одной из причин ограниченности AWT является то, что AWT превращает свои визуальные компоненты в соответствующие им эквиваленты, которые не зависят от платформы, которые называются равноправными компонентами. Это означает, что внешний вид компонентов определяется платформой, а не закладывается в Java. Поскольку компоненты AWT используют «родные» ресурсы кода, они называются тяжеловесными (англ. highweigh).
Использование «родных» равноправных компонентов порождает некоторые проблемы. Во-первых, в связи с разницей, существующей между операционными системами, компонент может выглядеть или даже вести себя по-разному на разных платформах. Такая изменчивость противоречила философии Java: «написано однажды, работает везде. Во-вторых, внешний вид каждого компонента был фиксированным (так все зависело от платформы), и это невозможно изменить (по крайней мере, это трудно было сделать). В-третьих, использование тяжеловесных компонентов чревато появление новых ограничений. Например, весомый компонент всегда имеет прямоугольную форму и является непрозрачным.
Вскоре после появления первоначальной версии Java, стало очевидным, что ограничения, присущие AWT, были настолько неудобными, что нужно было найти лучший подход. В результате появились классы Swing, как часть библиотеки базовых классов Java (JFC). В 1997 году они были включены в Java 1.1 в виде отдельной библиотеки. А начиная с версии Java 1.2, классы Swing (а также все остальные, которые входили в JFC) стали полностью интегрированными в Java.
Архитектура
- Независимость от платформы: Swing - платформо-независимая библиотека, что означает, что программу с использованием Swing можно запустить на всех платформах, поддерживающих JVM.
- Возможность для расширения: Swing - очень распределенная архитектура, которая позволяет «подключать» реализации пользователя указанной инфраструктуры интерфейсов: пользователи могут создать свою собственную реализацию этих компонентов, чтобы заменить компоненты без оговорок (по умолчанию). Вообще, пользователи Swing могут расширить структуру, продолжая (с помощью extends) существующие классы и / или создавая альтернативные реализации основных компонентов.