Разное

Java графический интерфейс: Введение в разработку графического интерфейса

Создание графических интерфейсов в Java-программах

вопрос в процессе изучения

Продолжение нашей статьи, посвящённой обзору ресуров по Java. Ниже приведён обзор различных технологий, позволяющих создавать графические интерфейсы для Java-программ. Описание скопировано из Википедии. Стоит обратить внимание  на AWT, Swing и JavaFX. Из них AWT самая древняя, JavaFX наиболее современная. Но более современные технологии на заменяют полностью более старые, все они имеют свои плюсы и минусы.

 

Abstract Window Toolkit (AWT) (wiki_eng, wiki_ru) — исходная платформо-независимая оконная библиотека графического интерфейса (Widget toolkit). Некоторые разработчики предпочитают эту модель, поскольку она обеспечивает высокую степень соответствия основному оконному инструментарию и беспрепятственную интеграцию с родными приложениями. Другими словами, GUI программа, написанная с использованием AWT, выглядит как родное приложение Microsoft Windows, будучи запущенной на Windows, и в то же время как родное приложение Apple Macintosh, будучи запущенным на Mac, и т.

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

AWT появилась вместе с Java в 1995 году. Компоненты AWT часто определяют термином heavyweight. В J2SE 1.2 виджеты AWT были в значительной степени заменены аналогичными из Swing.

AWT Tutorial (tutorialspoint.com)

Статьи на beginnersbook.com «Java AWT tutorial for beginners» и 2 смежные — объяснение толковое, но только основы.

 

 

Swing (wiki_eng, wiki_ru) —  библиотека для создания графического интерфейса. Разработана компанией Sun Microsystems. Содержит ряд графических компонентов (англ. Swing widgets), таких как кнопки, поля ввода, таблицы и т. д. Архитектура Swing разработана таким образом, что вы можете изменять «look and feel» (L&F) вашего приложения. «Look» определяет внешний вид компонентов, а «Feel» — их поведение.

Swing была представлена миру в 1997 году, как технология, призванная решить проблемы AWT. Компоненты Swing часто определяют термином lightweight.

Сравнение Swing с AWT:
Swing предоставляет более гибкие интерфейсные компоненты, чем более ранняя библиотека AWT. В отличие от AWT, компоненты Swing разработаны для одинаковой кросс-платформенной работы, в то время как компоненты AWT повторяют интерфейс исполняемой платформы без изменений. AWT же использует только стандартные элементы ОС для отображения, то есть для каждого элемента создается отдельный объект ОС (окно), в связи с чем AWT не позволяет создавать элементы произвольной формы (возможно использовать только прямоугольные компоненты), элементы управления на основе AWT всегда отображаются поверх Swing-элементов (так как все Swing компоненты отображаются на поверхности контейнера

). Компоненты Swing поддерживают специфические динамически подключаемые виды и поведения (англ. plugable look-and-feel), благодаря которому возможна адаптация к графическому интерфейсу платформы (то есть к компоненту можно динамически подключить другой, специфический для операционной системы, в том числе и созданный программистом вид и поведение). Таким образом, приложения, использующие Swing, могут выглядеть как родные приложения для данной операционной системы. Основным минусом таких «легковесных» (англ. Lightweight) компонентов является относительно медленная работа. Положительная сторона — универсальность интерфейса созданных приложений на всех платформах.

Swing Tutoriall (tutorialspoint.com)

Java Swing tutorial, Java 2D tutorial и Java 2D games tutorial (zetcode.com)

Статьи на beginnersbook.com «Java Swing Tutorial for beginners» и 2 смежные — объяснение толковое, но только основы.

Страница в Java-курсе от guru99.com, посвящённая создания графического интерфейса.

Примеры создания элементов графического интерфейса с помощью технологий AWT и Swing на сайте tutorialspoint.com.

Глава, посвящённая созданию графического интерфейса с помощью технологий AWT и Swing на mathbits.com.

Электронная книга «Java Programming» на en.wikibooks.org имеет разделы, связанных с созданием графических интерфейсов.

Электронная книга «Introduction to Programming Using Java» на math.hws.edu имеет главы «Introduction to GUI Programming» и «Advanced GUI Programming»

 

Коммерческие:

Java Swing (GUI) Programming: From Beginner to Expert (caveofprogramming.com) — instructor John Purcell, IDE Eclipse, 29$

From description: «Learn how to create desktop and Internet GUI Java programs and take your Java programming to the next level. «
По форме обучения курс напоминает курсы на Udemy. Имеет приличную продолжительность.

=== Udemy ===
Сайт содержит ряд курсов. Все они коммерческие.
фильтр1, фильтр2, фильтр3
Из них можно отметит следующие:

— Java SE Desktop Application with Swing, JPA and Maven — created by Holczer Balazs (from Hungary), 2017, rating 4.8, Eclispse, basic price 200$
From description: «This course is meant for everyone who knows basic Java and wants to get a good grasp of professional software engineering and design. «
[8.5 hours video, 7 articles, 9 supplemental resources]

— Java Swing (GUI) Programming: From Beginner to Expert — created by John Purcell, 2015, rating 4.5, Eclispse, basic price 35$

From description: «Target audience. Java beginners who are OK with learning new stuff rapidly. Fluent Java programmers who want to learn desktop programming in Java.«
[14 hours video, 2 articles]

— Learn To Create Calculator In Java Swing — Step By Step — Intermediate, created by Mohammad Faizan, 2016, rating 4.2, Netbeans, basic price 100$
[1.5 hours video, 4 articles]

— Java basic and Swing : 2 Course Bundle — created by Eighton School (team of instructors who are actually engineers), 2018, rating -, Netbeans, basic price 100$
[14 + 6.5 hours video, 3 articles]
В первом из этих курсов имеются обширные лекции, посвящённые AWT, Java 2D и различным темам программирования для веб.
( Эти курсы также выложены отдельно под названиями
«
Java SE Edition: Learn Java from the scratch» (rating 1.

5 — 1 voice) и
«
Java Swing for beginners: Graphical User Interface (GUI)» (rating 3.5 — 2 voices). )
P.S. По какой-то причине авторы удалили свой профиль с Udemy со всеми курсами. Курсы доступны только тем, кто приобрёл их ранее.

 

 

Standard Widget Toolkit (SWT) (wiki_eng, wiki_ru) —  библиотека с открытым исходным кодом для разработки графических интерфейсов. Разработана фондом Eclipse. SWT не является самостоятельной графической библиотекой, а представляет собой кросс-платформенную оболочку для графических библиотек конкретных платформ, например, под Linux SWT использует библиотеку GTK+. SWT написана на стандартной Java и получает доступ к OS-специфичным библиотекам через Java Native Interface, который рассматривается в качестве сильного средства, несмотря на то, что это не является чистой Java. SWT — альтернатива AWT и Swing (Sun Microsystems) для разработчиков, желающих получить привычный внешний вид программы в данной операционной системе.

Использование SWT делает Java-приложение более эффективным, но снижает независимость от операционной системы и оборудования, требует ручного освобождения ресурсов и в некоторой степени нарушает Sun-концепцию платформы Java. Первый релиз SWT состоялся в 2003 году.

 

JavaFX (wiki_eng, wiki_ru) — платформа на основе Java. Предназначена для создания
— настольных приложений, запускаемых непосредственно из-под операционных систем;
— насыщенных интернет-приложений (англ. rich Internet applications — RIAs), работающих в браузерах;
— приложений на мобильных устройствах.
JavaFX создана с целью заменить библиотеку Swing. Платформа JavaFX конкурирует с Microsoft Silverlight, Adobe Flash и аналогичными системами.

JavaFX cоздана корпорацией Sun Microsystems. Впервые продемонстрирована в мае 2007 года. Версия 1.0 вышла в декабре 2008. Приложения JavaFX создаются с помощью декларативного языка программирования JavaFX Script. Для разработки приложений на языке JavaFX Script необходимо установить JavaFX SDK, который входит в поставку с Java SE 7.

Из кода, написанного на языке JavaFX Script, можно обращаться к любым библиотекам Java. Поэтому совместное использование языков Java и JavaFX Script позволяет решать разнообразные задачи, например, логика бизнес-приложения может быть написана на Java, а графический интерфейс пользователя — на JavaFX Script.

JavaFX также может использоваться при созданий приложений на языках Groovy, Scala и JRuby.

JavaFX Tutorial (tutorialspoint.com)

JavaFX tutorial (zetcode.com)

 

=== Udemy ===
Сайт содержит ряд курсов. Бесплатный из них только один:
— Crash Course Into JavaFX: The Best Way to make GUI Apps  — created by Anirudh Balasubramanian, 2017, rating 4.2, Eclipse

[5 hours video, 1 articles]

 

Из коммерческих можно отметить следующие:

— UI-UX Design , Animation and Material Design in JavaFX — created by Mohamed Adel (from Egypt), 2018, rating 4.5, IntelliJ IDEA, basic price 200$
Не очень хорошее качество звука, присутствует фоновый шум.
[7 hours video, 13 articles]

— Build Outstanding Java Apps with JavaFX much faster — created by  Jonas Schindler, 2015, rating 4.6, Eclipse, basic price 25$
Самое крупное из создаваемых приложений — калькулятор.
[4 hours video]

— Java Web and JavaFX : 2 Course Bundle — created by Eighton School (team of instructors who are actually engineers), 2018, rating 5.0 (2 voices), Netbeans, basic price 100$
[4 + 3 hours video, 4 articles]
( Эти курсы также выложены отдельно под названиями
«
Java Web Technologies: JSP, JSF, Ajax, Spring. . .

» (rating 3.5 — 1 voice) и
«
JavaFX for beginners:Learn JavaFX from the scratch» )
P.S. По какой-то причине авторы удалили свой профиль с Udemy со всеми курсами. Курсы доступны только тем, кто приобрёл их ранее.

— Complete Java Masterclass -Beginner, instructor Tim Buchalka and Goran Lochert, rating 4.6, IDE IntelliJ, 2018, basic price 195$
[74 hours video, 5 articles, 10 coding exercises]
Самый полный курс по Java на Udemy. Среди прочего содержит 10 часов лекций по JavaFX.

— Complete Oracle JavaFX with Database & Advance Java projects — instructor Ejike IfeanyiChukwu, rating 4.4, IDE Eclipse, 2018, basic price 50$
[13 hours video, 1 supplemental resource]

 

 

 


Примечания:

Java 2D (wiki_eng, wiki_ru) — это API для рисования двумерной графики.

Abstract Window Toolkit, Swing и Java 2D входят в состав набора библиотек Java Foundation Classes (JFC) (wiki_eng, wiki_ru). Этот термин появился в 1997 году.

 

Некоторые курсы по прочим Java-технологиям

 

Графический пользовательский интерфейс на Java

Автор(ы): Давыдов Антон Валериевич
Рубрика: Технические науки
Журнал: «Евразийский Научный Журнал №6 2016»  (июнь)
Количество просмотров статьи: 5138
Показать PDF версию Графический пользовательский интерфейс на Java

Давыдов Антон Валериевич
Студент ТГУ, Россия, г. Тольятти
Научный руководитель: Ерофеева Е.А. 

Пользовательский интерфейс на Java прошел весьма тернистый путь становления и развития. Его долгое время обвиняли в жадности к ресурсам системы, медленной работе и ограниченной функциональности. Появление .NET с более быстрыми графическими компонентами еще больше пошатнуло позиции Java. Но подобная конкуренция лишь подстёгивала разработчиков Java к развитию и улучшению графических библиотек. И в этой статье мы посмотрим, что из этого получилось.

 Abstract Window Toolkit

Abstract Window Toolkit (сокращённо AWT) впервые была выпущена в 1995 году компанией Sun Microsystems. Это была первая попытка создать графический интерфейс для Java. AWT выступал в качестве прослойки, вызывающей методы из библиотек, написанных на С. А эти методы, в свою очередь, использовали графические компоненты операционной системы [2]. С одной стороны, программа, построенная таким образом, внешне была похожа на все остальные программы в используемой операционной системе, но с другой, одна и та же программа может выглядеть совершенно по-разному на разных операционных системах, что осложняло разработку. К тому же, ради мультиплатформенности пришлось унифицировать интерфейсы вызовов компонентов, что привело к несколько урезанной функциональности. Набор компонентов также довольно скромный. Например, отсутствуют таблицы, а в кнопки нельзя поместить иконки. AWT старается автоматически освобождать использованные ресурсы. Это влияет на производительность и усложняет архитектуру. AWT прост для освоения, но написание чего-то сложного вызывает затруднения. Сейчас AWT используется в основном для аплетов. Oracle в данный момент поощряет переход разработчиков на Swing, как более безопасный.


Рис.1 – Образец программы, написанной с использованием AWT в среде Windows

Swing

После AWT, в 1998 году, Sun выпустила Swing. Он полностью написан на Java и для отрисовки использует 2D. В Swing гораздо больше разнообразных компонентов, чем в AWT. Сами компоненты стало гораздо проще создавать, наследуя их от существующих [1]. Также была введена возможность использования различных стилей и скинов. Однако, скорость работы ранних версий Swing была довольно низкой, а ошибки в написании программы могли и вовсе привести к зависанию операционной системы.

Однако, благодаря лёгкому освоению и наличию большого количества документации, Swing стал самым популярным графическим интерфейсом в Java. На его основе появилось множество расширения, например SwingX и JGoodies, которые ещё больше упрощают создание визуально сложных приложений. Все современные среды программирования на Java включают в себя графические редакторы Swing. Даже не смотря на то, что сейчас существуют более современные фреймворки, Swing остаётся самым популярным.


Рис.2 – Образец программы, написанной с использованием Swing

Standard Widget Toolkit

SWT был выпущен компанией IBM во времена, когда Swing был ещё медленным, и в основном для продвижения среды программирования Eclipse. Как и AWT, SWT использует компоненты ОС, но для различных платформ используются различные интерфейсы взаимодействия [4]. Таким образом для каждой операционной системы необходимо поставлять отдельную JAR-библиотеку. Это позволяет более полно использовать функции, соответствующие различным операционным системам. А недостающие компоненты были реализованы с помощью 2D. Тем не менее, SWT получилась более сложной для освоения, чем Swing. Кроме того, программист должен сам реализовывать освобождение ресурсов приложением.

Рис.3 – Образец программы, написанной с использованием Swing

JavaFX

JavaFX была выпущена в 2008 году компанией Oracle. Она позиционируется как платформа для создания насыщенного интернет-приложения. Для отрисовки используется графический конвейер, что значительно ускоряет работу приложения. Имеется большой набор встроенных компонентов. Также имеются отдельные компоненты для построения графиков. Реализована поддержка мультимедийного контента, анимации и даже множественное касание. Внешний вид компонентов настраивается при помощи CSS-стилей [3]. Кроме того, в набор утилит JavaFX входит возможность сделать родной инсталлятор для самых популярных платформ: exe или msi для Windows, deb или rpm для Linux, dmg для Mac. На сайте Oracle имеется подробная документация и большое число готовых примеров.

Таким образом, описав основным особенности и недостатки вышеперечисленных графических пользовательских интерфейсов, мы можем решить, для каких задач они лучше подходят. Abstract Window Toolkit больше подойдёт для создания аплетов. Новичку можно порекомендовать Swing в виду того, что для него можно найти огромное количество документации в интернете, в том числе и на русском языке. Для создания насыщенных интернет-приложений отлично подойдёт JavaFX.

Список использованных источников

  1. Рыженко А. В. Объектно-ориентированное программирование: Учебно-методический комплекс по дисциплине для специальности 010501 – «Прикладная математика и информатика». – 2007.

  2. Хабибуллин И. Ш. Java 7 (4-е изд.). – БХВ-Петербург, 2012.

  3. Clarke J., Connors J., Bruno E. J. JavaFX: Developing Rich Internet Applications. – Pearson Education, 2009.

  4. Northover S., Wilson M. Swt: the standard widget toolkit, volume 1. – Addison Wesley Professional, 2004. 

Создание графического пользовательского интерфейса с помощью Swing (учебники по Java™)

Также известен как Учебное пособие по Swing

В этом руководстве рассказывается, как создавать графические пользовательские интерфейсы (GUI) для приложений и апплетов с использованием компонентов Swing. Если вы хотите включить JavaFX в свое приложение Swing, см. Интеграция JavaFX в приложения Swing.

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

Изучение Swing с помощью IDE NetBeans — это самый быстрый и простой способ начать работу с Swing. В этом уроке рассматривается конструктор графического интерфейса среды IDE NetBeans, мощная функция, позволяющая визуально создавать графические интерфейсы пользователя.

Использование компонентов Swing рассказывает, как использовать каждый из компонентов Swing кнопки, таблицы, текстовые компоненты и все остальное. В нем также рассказывается, как использовать границы и значки.

Параллелизм в Swing обсуждает параллелизм применительно к программированию на Swing. Включена информация о потоке отправки событий и классе SwingWorker.

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

Компоновка компонентов внутри контейнера расскажет, как выбрать менеджер компоновки, как использовать каждый из классов менеджера компоновки, предоставляемых платформой Java, как использовать абсолютное позиционирование вместо менеджера компоновки и как создать свой собственный менеджер компоновки.

Изменение внешнего вида сообщает вам, как указать внешний вид компонентов Swing.

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

Написание прослушивателей событий говорит вам, как обрабатывать события в ваших программах.

Выполнение пользовательской окраски дает вам информацию о том, как раскрашивать ваши собственные компоненты Swing. В нем обсуждаются вопросы рисования, характерные для компонентов Swing, дается обзор концепций рисования и приводятся примеры пользовательских компонентов, которые рисуют сами себя.

Хотя это основной путь для изучения графических интерфейсов, это не единственный путь с информацией, связанной с пользовательским интерфейсом.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *