Кто такой бэкенд-разработчик на Java и почему это одна из лучших профессий в IT
Полный разбор профессии Java Backend Developer от эксперта: как войти в профессию, что нужно знать и уметь, какие есть «плюшки» и подводные камни.
Иллюстрация: Катя Павловская для Skillbox Media
Олег Чирухин
Fullstack-разработчик, ведущий подкаста «Битовая Каска», член программного комитета конференции SmartData. DevRel по технологиям Axiom JDK. Разбирается в DevOps, влюблён в Spring Framework. Победитель сезона Java на «Хабре».
Прежде чем перейти к теме статьи, давайте немного похвалим язык программирования, на котором мы пишем уже столько лет. Сейчас мы про него расскажем — и вы тоже его полюбите.
Java — это строго типизированный объектно-ориентированный язык программирования. Приложения на Java транслируются в байт-код, поэтому их можно запускать на любом устройстве, где установлена виртуальная машина Java (JVM).
До появления Java программистам приходилось создавать отдельные версии программ для каждой операционной системы. Например, программа, написанная под Windows, не запускалась в системах Linux, и наоборот. Программы на Java работают поверх JVM: если она установлена на компьютере, то и код на языке Java запустится.
Язык Java отличается завидной универсальностью. На нём можно писать что угодно: серверные и десктопные программы, мобильные и веб-приложения, игры любой сложности.
Появившись в далеком 1995 году, Java стремительно набрал популярность и вот уже почти 30 лет не сбавляет обороты. Он стабильно входит в топ-3 самых распространённых языков программирования: сегодня Java пользуются около трети всех разработчиков в мире. То есть Java в IT — это примерно как английский или китайский в мире людей.
Чаще всего на Java пишут Backend (бэкенд). А вот теперь самое время узнать, что это такое и за что отвечает бэкенд-разработчик.
Чем занимаются бэкенд-разработчики
Все приложения состоят из фронтенда и бэкенда.
Фронтенд — это всё, с чем соприкасается конечный потребитель: веб-страницы в браузере, интерфейсы нативных приложений, графика в играх и даже командная строка в консоли Linux.
Бэкенд скрыт от глаз пользователя: как правило, он расположен в облачных серверах или в собственном дата-центре компании. Но именно он обеспечивает работу приложения: связь фронтенда с базами данных, обмен информацией между серверами, взаимодействие с другими сервисами и так далее.
Читайте также:
Вот чем занимается backend developer, независимо от языка программирования, на котором он пишет:
- Обеспечивает корректную работу сайта или приложения. Необходимо, чтобы все функции сайта исправно поддерживались 24 часа в сутки, семь дней в неделю. На любое действие любого пользователя, будь то нажатие кнопки, заполнение формы или вход в чат-бота, серверная часть должна реагировать адекватно: подгружать контент, обрабатывать данные и так далее.
- Работает с СУБД. Минимальный набор операций с базами данных, которые должен уметь реализовывать бэкендер, описываются акронимом CRUD: Create (создавать), Read (читать), Update (обновлять), Delete (удалять).
- Разрабатывает логику приложения. Логика — это алгоритмы, по которым компоненты веб-ресурса взаимодействуют друг с другом.
- Разрабатывает API. Через программный интерфейс, или API, бэкенд общается с фронтендом и другими сервисами.
- Тестирует и отлаживает приложение. Бэкенд-разработчик проверяет приложение на соответствие требованиям, а также ищет и устраняет ошибки.
Обсудим, в каких сферах и компаниях эти навыки могут понадобиться.
Где востребованы бэкенд‑разработчики на Java
Благодаря своей надёжности и прекрасной обратной совместимости Java прекрасно подходит для корпоративных разработок. Например, на нём написана Jira — пожалуй, самая популярная платформа для управления проектами. По тем же причинам Java очень любят в финтехе, а такие банки, как «Сбер», «Альфа» и «Райффайзен» регулярно хантят джавистов.
У Java есть прекрасные технологии и в десктопе — например, OpenJFX для создания локальных приложений с графическим интерфейсом. Среды разработки ПО (о них — ниже) Eclipse IDE и IntelliJ IDEA тоже написаны на Java.
Java используется и в научных исследованиях: скажем, в Matlab для создания графического интерфейса и бэкенда или для разработки инфраструктуры CERN.
Как мы уже говорили, Java и видеоигры просто созданы друг для друга. На нём написан знаменитый Minecraft, в разные времена программистов на Java нанимали Blizzard, Electronic Arts, Bethesda и другие разработчики AAA-игр.
Наконец, Java позволяет разрабатывать ПО для «умных» устройств IoT и встраиваемых систем.
Какими технологиями должен владеть Java Backend Developer
Бэкендер должен знать преимущества и недостатки технологий, чтобы выбрать ту, которая лучше всего подходит для текущего проекта. Он должен хорошо разбираться в выбранной технологии или иметь возможность быстро её изучить. Рассмотрим основные инструменты, с которыми работают бэкендеры на Java.
Java Development Kit
JDK, или Java Development Kit, — это набор инструментов для разработки ПО на языке Java. В него входят компилятор Javac, виртуальная машина Java, стандартная библиотека модулей, классов и функций и документация.
Стандартный дистрибутив JDK поддерживает компания Oracle, но помимо него существует и ряд других. Например, Red Hat, SAP, Google разрабатывают свои инструменты и вносят вклад в развитие свободной версии JDK — OpenJDK. В России, с учётом курса на замещение продуктов зарубежных вендоров, имеет смысл использовать отечественный рантайм Axiom JDK — это единственный JDK, внесённый в реестр российского ПО.
Интегрированная среда разработки
Программисты пишут код в специальной программе, которая называется интегрированной средой разработки, или IDE. Это не просто редактор кода, а целый набор инструментов, которые позволяют писать, отлаживать, запускать и тестировать код. Самые популярные IDE для Java — Eclipse IDE и IntelliJ IDEA.
Фреймворки
Фреймворк — это шаблон, на основе которого создаются приложения. Самый популярный фреймворк для Java — Spring, но недавно у него появились конкуренты Micronaut и Quarkus, заточенные под создание облачных приложений и микросервисов.
Библиотеки
В повседневной работе любой разработчик активно пользуется библиотеками, которые содержат готовые решения для многих распространённых задач программирования. Помимо стандартной библиотеки Java, существует много дополнительных полезных проектов — например, Maven, JHipster, Apache Commons и так далее. Вы так или иначе познакомитесь с этими инструментами в процессе обучения и увидите, насколько они облегчают жизнь разработчика.
Docker
Docker — это платформа для запуска и развёртывания контейнерных приложений. Контейнеризация широко применяется в облачной разработке и микросервисах, а Docker помогает с ней работать.
Читайте также:
GraalVM
GraalVM — это виртуальная машина Java, которая позволяет создавать и запускать нативные образы в проекте. Если коротко, то нативный образ — это скомпилированный Java-код приложения. Его можно быстро запустить, например, если приложение неожиданно «упадёт». Это как автомобильный двигатель, который даже в холодную зиму не нужно прогревать перед запуском. Кроме того, технология нативных образов позволяет сократить потребления ресурсов. Вместо обычного GraalVM можно использовать Axiom NIK с российской техподдержкой.
Базы данных
В базах данных хранятся служебные и пользовательские данные приложения. Существуют реляционные БД (например, MySQL) и нереляционные (например, MongoDB). Выбор той или иной базы зависит от проекта. В Java много библиотек, которые позволяют быстро и удобно работать с базами данных, одна из лучших — Hibernate.
Это далеко не исчерпывающий список технологий, с которыми приходится работать бэкендеру. В зависимости от проекта ему также может понадобиться Kubernetes (платформа для оркестрации контейнеров), инструменты для работы с Big Data и другие.
С какими сложностями сталкиваются Java-бэкендеры
Как вы поняли, освоить новичку предстоит немало. Подумайте ещё раз: оно вам надо? На всякий случай предупредим о сложностях, ожидающих вас в дальнейшей работе:
- Высокий порог входа. Чтобы Backend Developer смог откуда-то получить данные — нужно разбираться в базах данных, чтобы мог обрабатывать бизнес-логику — нужен какой-то фреймворк и паттерны проектирования, чтобы мог отдать веб-страницу — нужна библиотека для шаблонизации, и тому подобное. Начинающий джавист всё это должен уметь.
- Необходимость разбираться в Computer Science. Вы должны понимать принципы работы компьютеров, классические алгоритмы, определённые разделы математики (например, комбинаторику) или предметную область той индустрии, где работаете. Например, в финтехе пригодится знание финансовых алгоритмов и понимание специфики работы трейдеров.
- Высокая конкуренция. То, что бэкенд — одно из лучших направлений работы для программиста, сообразили многие. Теперь конкуренция идёт на два фронта: с одной стороны, джуниоры сильно конкурируют между собой и найти работу не всегда просто. С другой стороны, за разработчиков уровня Senior идёт жаркая борьба уже между компаниями.
- Много «неинтересной» работы. Работа в банках, бизнес-автоматизации и тому подобных «стабильных и надёжных» организациях может показаться невероятно скучной для людей, которые любят приключения и новизну.
Почему делать бэк на Java — это круто
Стать настоящим, серьёзным бэкендером — задача не для слабаков. Но если у вас получится пройти все преграды и получить нужные скиллы, то и награды вас ждут немалые:
- Возможность работать в разных индустриях: в банках, геймдеве, бизнес-автоматизации и так далее, используя одни и те же общие знания в области Computer Science, похожие принципы построения бэкенда, примерно один базовый набор фреймворков, библиотек и инструментов. Это позволяет достаточно часто менять направления деятельности, смотреть, что вам больше нравится.
- Возможность работать в компаниях разного размера: как в мелких стартапах, так и в больших, серьёзных и стабильных компаниях вроде банков. Если хочется выбрать профессию на долгие годы вперёд и сделать себе карьеру, бэкенд — это самое верное направление.
- Хорошие бэкендеры получают хорошие деньги. Это одна из самых хорошо оплачиваемых областей в IT.
- Огромное количество интересных направлений развития. Бэкенд делится на множество направлений (базы данных, API, асинхронные системы и так далее), в каждом из которых можно развиваться всю жизнь.
Сколько зарабатывают бэкенд‑разработчики на Java и что от них требуют
На момент написания статьи на hh.ru размещено более трёх тысяч активных вакансий, в которых требуется знание Java. Из них более 600 — для Backend‑разработчиков. Заработная плата зависит от опыта, региона, стека программирования и дополнительных навыков.
Junior, или младший разработчик. В среднем джун получает 50–70 тысяч рублей в месяц. Он должен обладать основными навыками программирования на Java, уметь работать с базами данных, разбираться в структурах данных и базовых алгоритмах, работать с системой контроля версий Git и уметь тестировать свой код.
Middle-разработчик. Более опытные специалисты получают от 120 до 250 тысяч рублей. Мидл работает самостоятельно, принимает решения и пишет качественный поддерживаемый код. Он хорошо разбирается во фреймворках, паттернах проектирования, ООП, Docker и умеет писать микросервисы. Часто Middle-разработчику, помимо основного языка программирования, нужно знать и другие: например, C++, Python и другие.
Senior-разработчик. Зарплата сеньора в среднем составляет 300 тысяч рублей, но может достигать 500 тысяч рублей и больше. Это специалист с обширным опытом работы, он решает задачи повышенной сложности: участвует в разработке архитектуры приложения, разрабатывает серверные компоненты, проектирует API. Сеньор знает несколько языков программирования и практически весь технологический стек проекта. Он самостоятельно решает поставленные перед ним задачи, руководит работой мидлов и джунов.
С чего начать изучение Java и как войти в профессию
Чтобы освоить профессию Java Backend Developer, не обязательно идти в институт за профильным образованием. У нашего любимого языка многолетняя история и обширное, дружелюбное комьюнити. В интернете полно материалов для его изучения, а на профессиональных форумах можно найти ответ практически на любой вопрос. С чего же начать?
- Запишитесь на курсы. Их прелесть в том, что лектор подробно и доходчиво объясняет синтаксис языка на примере готового кода, а домашние задания помогут закрепить усвоенный материал. Кроме того, обучение на курсах проходит гораздо быстрее: от полугода до двух лет — против четырех лет в университете.
- Читайте учебники. По Java написано много книг, но для начинающих бэкендеров лучше всего подойдут «Java. Библиотека профессионала» (К. Хорстманн) и «Философия Java» (Б. Эккель) — зарекомендовавшие себя учебники с подробным и доступным описанием синтаксиса Java и решением проблем, с которыми разработчики сталкиваются в повседневной работе.
- Изучайте документацию Java API. Документация поможет вам разобраться в механизме работы компонентов языка. Вы поймёте, как они устроены и как взаимодействуют друг с другом.
- Читайте блоги об инструментах разработки для Java. Например, без знания фреймворка Spring бэкендеру не обойтись. На сайте baeldung.com собрано огромное количество обучающих материалов и инструкций по работе со Spring.
- Чаще практикуйтесь. Решайте практические задачи по Java на таких ресурсах, как leetcode.com или examclouds.com. Это поможет вам набить руку и подготовиться к техническому интервью в будущем.
- Двигайтесь от простого к сложному. Венец ваших стараний — собственный небольшой проект (пет-проект), который станет хорошим подспорьем при поиске работы и прохождении собеседований.
- Участвуйте в стажировках — как бесплатных, так и оплачиваемых. Например, Кружковое движение НТИ совместно с ведущими российскими IT-компаниями запустило этим летом программу оплачиваемых стажировок «Код для всех» для молодёжи, включая направление OpenJDK. Стажёров обычно привлекают крупные компании и банки с большим объёмом Java-разработки и сильными IT-отделами, такие как «Сбер», «Альфа», «Райффайзен», «Ростелеком», МТС, «М.Видео — Эльдорадо» и другие. Подпишитесь на тех, кто вам приглянулся, и следите за анонсами.
Backend-разработчик — это одна из самых популярных, высокооплачиваемых и интересных специальностей. Java здесь как нельзя кстати, потому что этот язык позволяет писать качественный, быстрый, хорошо поддерживаемый код для большинства популярных задач на Backend.