Найти тему
IT-Academy

Чек-лист начинающего Java-разработчика

Оглавление

По данным TIOBE на апрель 2022 года, Java находится на третьей строчке среди языков программирования. Более того, эксперты уверены, что он еще 10-15 лет будет занимать лидирующие позиции у разработчиков.

Чем не повод присмотреться к Java? А чтобы изучение проходило проще, мы подготовили тот самый стэк технологий для джуна (по материалам тренера IT-Academy — Владимира Еременко, Senior Java Developer в SENLA).

                         Владимир Еременко на конференции Open IT Gomel 2022
Владимир Еременко на конференции Open IT Gomel 2022

Какую версию Java использовать

Самые популярные версии на проектах — Java 8 LTS, Java 11 LTS и Java 17 LTS.

Java 17 LTS вышла 14 сентября 2021, и ее только начинают использовать. Это версия, которая будет поддерживаться компанией до 2030 года с возможными вариациями.

Очень много проектов, которые используют и 8 LTS. Поддержка платной версии будет еще долго — до 2025 года, а бесплатной — до сентября 2023. Поэтому бояться, что эта версия устарела и исчезнет, не нужно.

Бесплатная поддержка Java 11 LTS заканчивается раньше — в сентябре 2022 года, платная действует до марта 2026 года.

Конечно, в 11 и 17 версиях много новых фич, которые необходимо использовать в проекте. Но что делать, если вы учили, учите или собираетесь работать с 8 LTS? Во-первых, не паниковать. Во-вторых, писать на 8 LTS и добавлять фичи и знания, которые вам необходимы, из более новых версий. В этом и есть большое преимущество Java.

Какие фреймворки используются на проектах

Основные фреймворки на проектах — Spring, Java Enterprise Edition, Quarkus, Micronaut и Microprofile. Остановимся на каждом подробнее.

— Spring.

Наиболее крутой и классный фреймворк. Сегодня является самым популярным, хотя в самом своем начале это был просто фреймворк без определенного количества частей.

— Java Enterprise Edition.

Соперник Spring, а также очень на него похож. Самым первым появился для объемных решений работы с Java. Ранее был очень громоздким.

— Quarkus.

Заточен на работу с облаками. Главная его фича в том, что данный фреймворк не кроссплатформенный. Quarkus делает компеляцию сразу под виртуальные машины, т.е. разработчики ограничивают возможность передавать код на другие платформы, но за этот счет увеличивают скорость работы.

— Micronaut.

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

— Microprofile.

Фреймворк с набором спецификаций. Улучшенная версия Java Enterprise Edition.

Version Control System (Версии контроля).

Система контроля версий — это система, которая записывает изменения в файл или набор файлов в течение времени и позволяет вернуться позже к определенной версии.

На проектах используется 2 типа версий: централизованная и распределенная. Сегодня более популярная распределенная система. В ней серверы установлены у каждого пользователя и нагрузка идет на локальную машину. К тому же к распределенной системе есть полный доступ. Это дает возможность программировать локально. В централизованной есть один сервер и клиенты, код получается похожим. Хоть в централизованной системе нагрузки на сервер нет, но удобнее использовать как раз распределенную.

Централизованная система контроля версий:

— CVS

— Subversion

— Perforce

Распределенная система контроля версий:

— Mercurial

— Bazaar

— Darcs

— Git

Implementation Git (Ресурсы для Git).

Git — это система для управления версиями исходного кода программ. Самые популярные ресурсы:

— GitHub

— GitLab

— BitBucket

Если использовать для себя или делать учебные проекты, то в большей степени подойдет BitBucket. Он удобен, так как у него нет сроков. На проектах чаще встречается GitLab и GitHub.

Build tools. Что используется?

Build tools — инструменты управления и сборки проектов. Используется все:

— Ant

— Maven

— Gradle

Однако Ant начинает сдавать позиции, его используют реже, чем Maven и Gradle. Но в нем отлично видно в настройке, как будет строиться проект и его части.

Maven все еще популярен, но уступает первенство Gradle. Работает с xml, но он не строит проект, не выставляет теги, а делает это на зависимостях. В Maven можно подключать плагины, которые делают функционал за нас. В нем все еще много текста и букв, но внутренняя конструкция работает здорово.

Gradle считается самым крутым инструментом управления и сборки проектов. С ним проще и понятнее обращаться. Он немногословен, взял все преимущества Maven и Ant.

Swagger/Open API

Swagger — это набор инструментов для описания REST API без доступа к коду. По нему можно быстро создать документацию и отправить ее другим разработчикам или клиентам.

То есть Swagger помогает задокументировать тот запрос, который отправляется. Ту же документацию, которая создавалась на Swagger, можно использовать и для тестирования. Сегодня без Swagger никуда от слова совсем.

Data Base

СУБД — комплекс программ, позволяющих создать БД и манипулировать данными.

Есть два типа баз данных: реляционная и нереляционная.

SQL — реляционные БД:

— PostgreSQL

— Oracle DB

— MySQL

NoSQL — нереляционные БД:

— MongoDB

— Redis

— Cassandra

— Neo4j

Что же выбрать?

На проектах используется вперемешку оба вида БД. Для личного пользования нужно смотреть, что именно необходимо сделать. Реляционные используют связанные таблицы между собой, а преимущество нереляционных БД в их скорости работы и возможности быть более гибкими. Реляционные задают строгие типы, структуры и связи, а нереляционные — позволяют этого избежать. Из преимуществ обеих БД появилась YugaByte DB.

Object-Relational Mapping

ORM — это технология, которая связывает БД с концепциями объектно-ориентированных языков программирования не напрямую с помощью библиотеки JDBC, а с помощью представления таблиц БД в виде классов Java.

В ORM есть специальные фреймворки — Hibernate и Jooq. Hibernate берет всю работу на себя. Это целая ORM-система, которая позволяет не писать самим запросы в БД. Можно писать методы, которые входят в БД, а Hibernate сам делает всю работу, запросы и т.д.

Jooq — это генератор кода.

Linux

Linux — семейство Unix-подобных ОС на базе ядра Linux, включающих тот или иной набор утилит и программ проекта GNU. Как правило, распространяются с моделью разработки свободного и открытого ПО.

Обратите внимание на эту систему, она используется для серверных решений. Без Linux никуда, так как у нее много разных решений. Если стоит Windows, то перейдите на Linux и постарайтесь его чаще использовать.

Desktop:

— Mint

— Ubuntu

Server:

— RHEL

— Debian

ELK

«ELK stack» — сокращение трех проектов с открытым исходным кодом: Elasticsearch, Logstash, Kibana. Применяется для мониторинга корпоративной инфраструктуры. Предоставляет возможность собирать журналы всех систем и приложений, анализировать и создавать визуализации, чтобы мониторить приложения и инфраструктуры, быстрее устранять неполадки, анализировать систему безопасности и многое другое. Необходимы для разработки.

Elasticsearch — решение полнотекстового поиска;

Logstash — обрабатывает лог события из различных источников. Для Java-разработчика самое важное – уметь читать логи;

Kibana — оперирует данными из Elasticsearch, строит графики и дашборды.

Message-brokers

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

Характеристики Apache Kafka:

— сообщения в журнале;

— балансировка нагрузки;

— выполняется автоматически;

— один способ маршрутизации

— «глупый» сервер, умный клиент.

Характеристики RabbitMQ:

— сообщения в FIFO;

— настраиваемый предел предварительной выборки;

— 4 способа маршрутизации;

— умный сервер, «глупый» клиент.

Test utilities (Тесты)

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

Инфраструктуры для написания и запуска текстов:

— JUnit

— TestNG

Библиотеки проверок:

— FEST Assert

— Hamcrest

— XMLUnit

— HttpUnit

Библиотеки для создания тестовых дублеров:

— Mockito

— JMock

— EasyMock

Хочешь сделать первые шаги в IT и начать свой путь в разработке на Java? Запишись на курсы Java-программирования.

#Java #java для новичков #обучение java