Где учить
Инструмент | Где учить | Комментарий |
Java | Философия Java. 4-е издание. (Брюс Эккель) Thinking in Java 4th Edition by Bruce Eckel (Author) | Основы |
Java | Computer Science Center (CS центр) Stepik Java. Базовый курс | Углубленный интерактивный курс |
Java | LeetCode | Подготовка к собеседованиям — интерактивные задачи |
Git | Официальная документация | Система контроля версий для исходного кода |
Spring | Крейг Уоллс – Spring в действии, 6-е издание (2022) | Список компонентов Spring |
SQL | Официальная документация | PostgreSQL (PL/PG SQL) |
SDK MAN | Официальная документация | Инструмент для установки Java, Gradle, Maven и прочих программ. А так же переключении между их версиями. |
Gradle | YouTube | Сборщик Java проектов. Считается лучше чем Maven, но требует знание языка Groovy или Kotlin DSL. |
Docker | ||
Bash |
Java
Версий Java много, но не стоит уделять внимания версиям без долгосрочной поддержки.
Остановимся на версиях с долгосрочной поддержкой LTS:
Long-Term-Support (LTS) releases. Java SE 8, 11, 17 and 21 are LTS releases.
В данном руководстве мы будем использовать последнюю версию на текущий момент это 21.
В Enterprise проектах в большинстве случаев используется 11 версия, в новых 17, в legacy коде 8.
Рекомендую использовать JDK от Oracle или OpenJDK. От Oracle обычно работает стабильнее и быстрее.
Мы будем использовать Java 17.0.9.
GIT и хостинг репозиториев
Систем контроля версий (version control system, VCS или revision control system) очень много, но де факто она одна и это GIT.
Для хранения проекта рекомендую использовать GitLab, так как он имеет один из самых популярных CI/CD и позволит нам в дальнейшем раскатить проект на сервер. Если же CI/CD GitLab покажется мало, то рекомендую использовать TeamCity и писать таски на Kotlin DSL.
Мы будем использовать GitLab
Другие популярные хостинги для исходного кода: GitHub, BitBucket
Инструменты сборки
Gradle на Groovy
Gradle — это build tool (Java программа) для автоматизации сборки проектов, построенная на принципах Apach Ant и Apach Maven, но предоставляющая более удобный DSL (Domain Specific Language) на языках Groovy (Kotlin) вместо XML формата. Первый релиз в 2007 году. Gradle это OpenSource проект, т.е. проект с открытым исходным кодом, исходный код Gradle можно найти в репозитории на GitHub.
Gradle удобнее, так как не имеет неудобного формата XML для настройки конфигурации, в отличии от Maven. Но минусом является то, что нужно изучить язык Groovy или Kotlin DSL.
Мы будем использовать Gradle 8.5 на Groovy.
Spring Framework
Spring — это фреймворк с открытым исходным кодом для языка программирования Java. Он был создан для упрощения разработки и поддержки масштабируемых, слабосвязанных и повторно используемых приложений.
Компоненты Spring
Полный список компонентов: https://spring.io/projects
№ | Компонент | Описание |
1 | Spring Framework | Application Context, DI, JavaBean |
2 | Spring Boot | Автоматическое связывание экземпляров классов |
3 | Spring Data | Connection to Database |
4 | Spring Security | Безопасность |
5 | Spring Web | Микросервисы RESTFull |
Мы будем использовать Spring Boot 3.x он работает с версиями Java 17 и выше.
База данных
Во времена импортозамещения самая востребованная СУБД стала PostgreSQL
Мы будем использовать PostgreSQL версии 16
Application Context — это главный интерфейс в Spring-приложении, который предоставляет информацию о конфигурации приложения.
Dependency injection (Внедрение зависимости, DI, принцип инверсии контроля, Inversion of Control, IoC) — это процесс предоставления программному компоненту внешней зависимости.
Простыми словами, Spring создает экземпляры классов, внедряет в них зависимости (DI) — экземпляры других классов, помещает их в Application Context и управляет их жизненным циклом. JavaBean (их еще называют Plain Old Java Object (POJO) — старый добрый объект Java — это концепция, а не конкретный тип объекта. По своей сути, это простой Java класс, который соответствует определенным соглашениям по именованию и дизайну. Например, экземпляры классов в Application Context.

Реализация DI в Spring Framework
Определения конфигурации зависимостей внутри приложений разными путями:
— внешне в XML-файлах;
— посредством конфигурационных Java-классов Spring;
— с помощью Java-аннотаций в коде