По данным TIOBE на апрель 2022 года, Java находится на третьей строчке среди языков программирования. Более того, эксперты уверены, что он еще 10-15 лет будет занимать лидирующие позиции у разработчиков.
Чем не повод присмотреться к Java? А чтобы изучение проходило проще, мы подготовили тот самый стэк технологий для джуна (по материалам тренера IT-Academy — Владимира Еременко, Senior Java Developer в SENLA).
Какую версию 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