Skip to main content

Введение

Этот раздел посвящён созданию графических приложений на java, также здесь даны инструкции, как выполнить типовой индивидуальный проект.

Инструкции по установке idea лежат здесь, как создать проект и запустить простейшую программу - здесь.

В этом разделе даны основы написания графических приложений на Java с помощью Skija.

Графическая Java

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

Первой библиотекой, которая была включена в ядро джавы, была библиотека Awt. Название расшифровывается как Abstract Window Toolkit, т.е. набор абстрактных инструментов Windows. Разработчики попытались переложить логику создания окон Windows на абстрактную, кросс-платформенную, т.е. платформо-независимую, логику.

Awt справлялась с этим лишь отчасти. Всё равно приходилось учитывать, под какую операционную систему мы пишем код.

Прогресс не стоит на месте, первая библиотека Awt была опубликована ещё в 1995 году, а в 1998 с учётом всех недоработок была выпущена новая библиотека Swing.

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

swing

В середине нулевых в Java основным направлением развития были сервлеты. Сервлеты - это мини-программы, код которых загружается с сервера, но выполняется на клиенте. Тогда казалось, что будущее джавы - это только веб. Поэтому и создание графических интерфейсов решили переложить на логику веба. Т.е. интерфейс программы мы задаём не при помощи программного кода java, а указываем в специальных файлах формата XLM. Потом эта логика перешла в концепцию MVC(Model-View-Controller/Модель-Представление-Контроллер).

Это делается для упрощения разработки приложений. Да, если у вас приложение простое, и над ним работает один человек, нет никаких проблем в том, чтобы написать всё вообще в одном java-файле. Но если вы работаете в команде или ваш проект достаточно объёмный, то решение поставленной задачи можно разделить на подзадачи: один человек разрабатывает интерфейс, т.е. представление, второй - внутреннюю логику, то, как данные должны храниться, а третий соединяет это вместе, те создаёт контроллер.

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

Хотя этот инструмент гораздо прогрессивнее Swing, почему-то спустя почти 15 лет с первого релиза, разработчики никак не могут настроить JavaFX так, чтобы он работал "из коробки". Каждый раз настройки этой библиотеки выливается в мороку и постоянные проблемы.

Кстати, именно в логике MVC построена архитектура операционных систем смартфонов.

Skija

Главная проблема всех этих библиотек в том, что они проектировали очень давно. С 2008 года сменилось уже несколько парадигм разработки кода. Что уж говорить о графических интерфейсах. Поэтому создать графическое приложение с современным интерфейсом - задача настолько трудоёмкая, что проще переложить логику работы приложения на веб.

Единственная компания, которая смогла создать действительно красивые приложения, используя Swing, это - JetBrains. Если вы учащийся 239, вы работаете как раз в их программах. Intellij IDEA, Pycharm, Webstrom, Clion - это всё их продукты, и написаны они на Swing.

idea

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

За основу они взяли современные подходы разработки Android приложений и веб-интерфейсов.

idea

Их решение называется Skija. Это - библиотека с открытым исходным кодом. Исходники лежат здесь.

idea