Написать пост

Как войти в backend-разработку на Java

Логотип компании МТС

Java популярна во многих сферах разработки, и одна из них — backend. Рассказываем, как начать изучать Java самостоятельно и войти в IT.

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

Вместе с Семёном Кирековым, Java Team Lead в MTS Big Data и Java-деканом курса «Java-разработчик» в МТС.Тета, собрали набор базовых навыков и инструментов, необходимых для того, чтобы ориентироваться в профессии backend-разработчика на Java.

1. Кто такой бэкенд-разработчик
2. Базовые навыки
3. С чего начать погружение в Java-разработку
4. Погружаемся в предметную область
5. Что делать после того, как освоил базу

Кто такой бэкенд-разработчик

Любое ПО нужно, чтобы автоматизировать бизнес-процессы: покупку авиабилетов, бронирование отелей, оплату госпошлин, перевод денег между счетами и так далее. За то, как устроен пользовательский интерфейс, отвечает фронтенд. А вот бэкенд — это мозги системы, там и происходит автоматизация.

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

Backend-разработчики используют разные языки программирования: Python, PHP, C# и в том числе Java. Если для вас это первые шаги в профессии, популярный и востребованный ЯП Java вполне подойдёт.

Базовые навыки

Для ознакомления можно посмотреть курсы про основы языка, чтобы просто понимать концепцию программирования. Начинают с базовых конструкций: что такое условия, цикл, методы; разбираются, какие структуры данных наиболее важные в освоении, как их правильно использовать и связывать между собой.

Разберитесь в объектно-ориентированном программировании (ООП): что такое классы и объекты, методы в Java, конструкторы, наследование, полиморфизм.

Вот 5 курсов на выбор, которые помогут начать ориентироваться в языке:

С чего начать погружение в Java-разработку

Git и GitHub

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

Подробный разбор, как устанавливать Git и пользоваться основными командами

Уметь работать с GitHub — сервисом для хостинга и совместной разработки IT-проектов. Надо научиться делать пул реквесты, делить свою работу на задачи — issues. Нужно приучить себя к тому, что каждый пул реквест должен быть обязательно привязан к какому-то issue.

Посмотрите обучающие видео о том, как работать на платформе.

И почитайте, в чём отличие GitHub от Git

Среда разработки

Также нужно разобраться с IDE (Integrated development environment). Это специальная среда разработки, которая позволяет писать код более упрощённо. В Java популярная IDE — IDEA от компании Jetbrains.

Базовые структуры данных и алгоритмы

Не надо вдаваться в математическую и алгоритмическую теории. Но нужно научиться определять сложность алгоритма. Бывает, что код при больших входных данных будет работать очень долго и, по сути, никогда не выполнится. Это нужно предвидеть на этапе проработки кода. Например, понимать, почему бинарный поиск быстрее линейного, какая сложность у алгоритмов быстрой сортировки, какая сложность поиска значения по ключу в HashMap.

Примечание HashMap — это одна из основных структур данных в Java. Это хеш-таблицы с парой «ключ/значение». Например, имя человека/его возраст, строка/число.

Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих

Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих

Структуры данных и алгоритмы в Java

Структуры данных и алгоритмы в Java

Linux

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

Бесплатный курс по основам на Linux

SQL и базы данных

Для Java-разработчика в сфере backend важны реляционные базы данных. В них хранится вся информация о том, какие действия совершает пользователь. Одни из самых популярных — MySQL и PostgreSQL.

MySQL по умолчанию используется в WordPress, который до сих пор активно применяется в разработке блогов и других сайтов с невысокой нагрузкой.

PostgreSQL популярна по нескольким причинам. Во-первых, это opensource, её можно использовать бесплатно и даже вносить собственные доработки в исходный код БД. Во-вторых, там есть полезные для разработчиков фичи, например, транзакционный DDL и поддержка JSON в качестве данных для хранения. В-третьих, она быстро запускается и не требует много ресурсов, что удобно для тестирования.

Для того, чтобы работать с базами данных, нужно разобраться с SQL — это язык, который позволяет делать запросы к базам данных, типа select from table.

Посмотреть введение в SQL.

На старте это не обязательно, но будет плюсом, если вы разбираетесь, зачем нужно кэширование. Если данные хранятся в базе данных, то на выбор и поиск нужного элемента может уходить много времени. Тогда информацию дополнительно записывают в кэш, чтобы долго не ждать выполнения запроса. Кэш может быть как локальным — храниться прямо в памяти backend-приложения, так и быть представлен отдельной системой (Redis, Apache Ignite, Aerospike).

Распределённые очереди

Очередь — это отдельная система, как база данных, например. Концепция очередей предполагает асинхронную обработку.

Устроено это так. Программа (то есть backend-приложение) получает запрос на действие, например, сформировать годовой финансовый отчёт. Она отправляет его в очередь на выполнение и сразу сообщает клиенту, что запрос принят, не дожидаясь выполнения действия. В классическом синхронном варианте после нажатия на кнопку «Сформировать отчёт» придётся смотреть на кольцо загрузки в интерфейсе всё время, что отчёт формируется.

В асинхронном варианте другая программа (например, другое backend-приложение) постоянно читает очередь на наличие новых сообщений. Когда появляется задача, она выполняет её. Как только задача будет готова, эта программа может отправить отчёт, например, на электронную почту.

Очередей много, но самых популярных две: Kafka и RabbitMQ. Строго говоря, Kafka не является очередью, так как порядок сообщений там гарантируется только в рамках одной партиции. Тем не менее для общего понимания концепции эта деталь не является обязательной.

Библиотеки и фреймворки

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

Фреймворк же — это кухонный гарнитур, который нужно заполнить ящиками — деталями бизнес-логики. В Java Spring — это один из самых популярных фреймворков для создания веб-приложений. С помощью Spring Framework удобно проектировать и реализовывать даже высоконагруженные веб-приложения.

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

Другой популярный фреймворк — Hibernate, он более узкоспециализированный. Он нужен для работы с реляционными базами данных. Дело в том, что они не очень хорошо ложатся на концепцию ООП, и это проблема для backend-разработки. Hibernate позволяет замапить таблицы в реляционной базе данных на привычные классы в Java.

Погружаемся в предметную область

Отправляйтесь в сообщества. Подписывайтесь на каналы о разработке, посещайте конференции и проверяйте новости. Так вы будете следить за реальными проектами и кейсами и быстрее сможете заполнить пробелы в знаниях.

Немного полезных ресурсов:

Что делать после того, как освоил базу

Освоили азы бэкенд-разработки на Java? Дальше только практика. Создавайте пет-проекты — простые приложения, которые можно добавить в портфолио:

  • To-Do-лист;
  • примитивная социальная сеть из одной странички;
  • инженерный калькулятор.

Главное, постоянно практиковаться, потому что без практики всё быстро забывается.

Где-то через 8–9 месяцев ежедневных тренировок один-два часа в день надо отправляться на стажировки. Важно попасть в реальный проект и работать над конкретными задачами, тогда навыки будут быстро прокачиваться. Проще идти в крупную компанию, потому что они могут себе позволить нанимать стажёров.

Следите за новыми постами
Следите за новыми постами по любимым темам
21К открытий21К показов