Введение
Этот раздел посвящён созданию графических приложений на java, также здесь даны инструкции, как выполнить типовой индивидуальный проект.
Инструкции по установке idea лежат здесь, как создать проект и запустить простейшую программу - здесь.
В этом разделе даны основы написания графических приложений на Java
с помощью
Skija
.
Графическая Java
Java изначально проектировалась как платформо-независимый язык программирования. Т.е. неважно, под какую операционную систему вы писали код, он всё равно скомпилируется, если у вас на компьютере поддерживается версия Java, для которой она была написана.
Первой библиотекой, которая была включена в ядро джавы, была библиотека Awt.
Название расшифровывается как Abstract Window Toolkit
, т.е. набор абстрактных
инструментов Windows. Разработчики попытались переложить логику создания
окон Windows на абстрактную, кросс-платформенную, т.е. платформо-независимую, логику.
Awt
справлялась с этим лишь отчасти. Всё равно приходилось учитывать, под какую
операционную систему мы пишем код.
Прогресс не стоит на месте, первая библиотека Awt
была опубликована ещё в 1995 году,
а в 1998 с учётом всех недоработок была выпущена новая библиотека Swing.
Важно понимать, что хотя Swing
стала полностью платформо-независимой, она не является
самостоятельным решением. По своей сути - это просто надстройка над awt. Да, она
упрощает работу с графическими интерфейсами, но не кардинальной разницы нет.
В середине нулевых в 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.
Но это скорее исключение из правила. Им и самим надоело работать с такой архаикой, и они начали разработку собственной библиотеки графических приложений. При этом они отталкивались не от концепций веба середины нулевых, как это было с JavaFX или тем более концепции создания графических приложений из середины девяностых.
За основу они взяли современные подходы разработки Android приложений и веб-интерфейсов.
Их решение называется Skija
. Это - библиотека с открытым исходным кодом. Исходники
лежат здесь.