Перейти к содержанию

Вступаем во взрослый мир

Так держать

Если ты добрался до этого пункта, мы мысленно пожимаем тебе руку. Осилить такое количество материала и не сдаться — достойно уважения. Но наше путешествие продолжается. Имей в виду, что если Core ты должен знать назубок, то знание всего ниже перечисленного может варьироваться от базового до нормального. Полностью прокачаться можно, увы, только на реальной работе.

Web-подготовка

Как ни странно, для того чтобы стать хорошим web-разработчиком, необходимо хорошо разбираться в этой самой паутине. И хотя базу обычно дают в университете, убедись, что ты помнишь/знаешь, что такое JSON, чем RESTful API отличается от SOAP, какие бывают HTTP-методы и прочие базовые штуки. Дальше по тексту подразумеваем, что ты не впадешь в ступор от слова "endpoint".

Системы сборки

Современные приложения редко состоят из парочки классов которые запускаются из среды разработки. Работа с зависимостями твоего проекта, его сборка/упаковка, всё это ответственность систем сборки. Они берут на себя нудную и иногда тяжелую работу, чтобы твой проект на развалился под грузом JAR hell. На данный момент, для Java есть две наиболее популярных системы сборки:

  1. Gradle. Модно, молодежно, инкрементальная компиляция, описание билд-файла на Groovy или Kotlin DSL. Быстрый старт здесь.
  2. Maven. Почти нестареющая классика. Описание билда файла на XML, есть множество плагинов на любой вкус, расширяющих стандартную функциональность. Быстрый старт здесь.

Попробуй оба варианта, останься на том который тебе больше нравится. Явного фаворита среди них нет, Gradle часто ругают за сложность настройки, Maven за медлительность и многословность. На рынке они распределены почти 50/50, так что смотри сам. Мы советуем Maven, так как новичку зачастую проще работать именно с ним. С этого момента все твои проекты должны собираться только с использованием выбранной тобой системой сборки. Они используются в любом реальном проекте, и ты должен уметь такие проекты открывать, дорабатывать и собирать.

Тестирование

Ты можешь быть уверенным в качестве своего кода, но ещё больше уверенности тебе даст покрытие своего кода тестами. Тестирование это отдельная крупная тема для разговора. Их бывает много разных видов, разной степени полезности с использованием разных инструментов. Мы советуем начать с модульного (unit) тестирования. Наиболее популярным фреймворком для unit тестирования является JUnit. Начать своё погружение в этот увлекательный мир ты можешь

Логирование

Чем крупнее твоё приложение, тем больше возникает необходимость понимать, что за процессы в нем происходят. Отладка возникающих ошибок, сбор статистики и многое другое практически невозможно без наличия логов. С системами логирования в Java всё очень плохо. Их много, у них разный подход к конфигурации, а ещё они могут связываться друг с другом в забавных франкенштейнов. Из наиболее популярного, обрати внимание на:

  • Logback;
  • Log4j2;
  • JBoss logging.

Проще всего будет настроить SLF4J Simple по этому мануалу. Сам SLF4J это фасад для движков логирования, вроде тех, что мы перечислили выше, но в нем есть возможность подключить небольшой встроенный движок, который отлично закроет твои начальные потребности. И помни, с этого момента в твоём коде не должно быть ни одного System.out.println, только взрослое логирование.

SQL

Современный web-мир невозможен без данных, а где данные, там и базы данных. Тебе нужно понимать синтаксис SQL и уметь писать на нем запросы. В этом тебе поможет:

  1. Туториал от W3Schools;
  2. Книга Алана Бьюли «Изучаем SQL»;
  3. Прорешивание задачек на SQL-EX;
  4. Если у тебя есть доступ к HyperSkill, пройди раздел «Databases and SQL» вот тут;
  5. Интерактивный тренажер по SQL на Stepik, ориентированный на практические задачи с минимальной подачей теории.

Становится джедаем запросов не надо, но у тебя должно сложиться понимание как ты можешь вертеть данные на своей будущей БД.

Базы данных

После того как ты овладел SQL, самое время подключить к своему приложению настоящую базу данных. Систем управления базой данных великое множество, на начальном этапе обрати внимание на:

  1. PostgreSQL/MySQL — классические реляционные СУБД;
  2. H2 — легковесная in-memory СУБД, хорошо подойдет для твоих небольших проектов;
  3. MongoDB — популярная NoSQL СУБД

Читать многотомные руководства на начальном пути обучения по ним не потребуется. Для начала тебе будет достаточно знать как установить СУБД и как заглянуть внутрь табличек.

JDBC

Итак, у тебя появилась база данных, теперь ты хочешь трогать её данные прямо из своего уютного кода. Тут на помощь придёт добрый дедушка JDBC. JDBC — это такое относительно низкоуровневое API (довольно старое, но супернадежное), которое предоставляет тебе возможность работать с твоей базой данной прямо из кода. Открываешь соединения, пишешь ручками запросы, отправляешь запрос на исполнение, получаешь выборку с результатами. Получается много кода, куча лапши try-catch, зато весьма производительно и гибко. В современном мире люди обычно пользуются инструментами более высокого уровня типа Spring Data, но не стоит забывать наши корни. Поэтому ознакомься на досуге с бесплатным руководством Oracle: JDBC Basics

ORM

Если ты ещё не задумывался о философских вопросах, то сейчас самое время. Вот живут у тебя таблицы в базе данных, связанные между собой в забавные клубки, и в ус не дуют. И с другой стороны баррикад, ты разработчик с горящими глазами и ворохом Java классов в твоем проекте. И хочешь ты, чтобы написал ты SQL-запрос и получил в ответ набор List<MyObject>, а не JDBC-выборку, обрабатывая которую руками, приходится создавать объекты и кастовать типы направо и налево как заправский колдун.

Такие страдания испытал не ты первый, поэтому умные люди собрались и придумали концепцию ORM. Основной смысл ORM в том, чтобы взять на себя тяжелую работу по преобразованию твоих Java-типов в типы базы данных и обратно. Ты как разработчик аннотируешь свои классы оставляя подсказки для фреймворка какие типы ты хочешь получить, а потом просто пользуешься обычными методами. Написал save(ListWithMyObjects), а он сам как по волшебству, превратился в SQL-запрос и обновил данные.

Звучит слишком хорошо, чтобы быть правдой, не так ли? Так и есть. Правильная готовка ORM — это настоящая головная боль и балансирование на острие ножа, но тебе придется к этому прикоснуться.

Hibernate

Он же просто хибер. Самый популярный Java-фреймворк, предназначенный для решения ORM задач. Море возможностей, море подводных камней, море страданий. Профессионально его готовить мало кто умеет, но приобщиться надо. Материалов по нему великое множество, но обрати внимание на эти:

  • Один из самых известных Hibernate-профессионалов, Vlad Mihalcea, ведет уютный сайтик на котором содержатся десятки полезных статей, ответов на вопросы и обзоры подводных камней. Подпишись, читай, приобщайся. Когда у тебя на проекте выстрелит проблема по хиберу, Влад может прийти на помощь;
  • Бауэр, Кинг, Грегори. Java Persistence API и Hibernate. Одновременно является и справочником и руководством. Написана тяжело, читается тяжело, но достаточно объемно покрывает необходимые темы. Читать, возможно, придется в несколько заходов, но лучше осилить;
  • Официальная документация. Написано хорошо, в меру разжевано, сопровождается примерами. Целиком читать необязательно, но периодически заглядывать полезно.

Конференции

Java-конференции — это такие партийные съезды всех пролетариев джавистов. Много докладов о том, как наши микросервисы бороздят просторы облаков, разбор кишочков популярных фреймворков и многое другое.

Самое ценное в конференциях — это обмен опытом со своими братьями по цеху. Идеальное место, чтобы устраивать срачи с популярными Java-персоналиями, узнавать, чем сейчас дышат, и держать нос по ветру. В 2021 году всё это ушло в онлайн, что несколько сбивает настрой, но по-прежнему насыщенно хорошими докладами. Стоит отметить две наиболее популярные в наших краях конференции:

  • Joker;
  • JPoint.

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


Последнее обновление: August 9, 2023
Дата создания: August 9, 2023