В Java есть два типа компонентов пользовательского интерфейса: тяжелый и легкий.
Тяжелый компонент - это оболочка для чего-то, что существует в операционной системе. Windows как операционная система имеет методы для создания окон, диалоговых окон и т. Д.
Легкий компонент создается полностью внутри приложения с использованием API-интерфейсов 2D-рисования и тому подобного. Операционная система ничего не знает об этом.
Двумя "официальными" API Java GUI являются Swing и AWT. AWT обычно используется апплетами (в любом случае ранними). Он состоит из тяжелых компонентов. Swing построен на основе AWT, но является гораздо более обширным API для разработки, как правило, настольных приложений. Большинство компонентов Swing легкие.
Таким образом, настольное Java-приложение может состоять из одного или нескольких тяжеловесных компонентов, возможно, с добавлением некоторых облегченных компонентов. Или это могут быть все легкие компоненты, если API-интерфейсы 2D-рисования достаточны для «подделки» Windows без тяжеловесного компонента.
Кадр, который вы видите вокруг приложения Java, может быть нарисован с помощью библиотеки, такой как Java2D (либо напрямую, либо через компоненты, использующие этот или аналогичный API), либо он может быть создан Windows с настройкой из приложения, вероятно, под влиянием тема операционной системы и настройки дисплея.
Большинство приложений Java в наши дни легковесны.