Для кого эта статья: кое-что будет интересно новичкам, которые изучают квест Java Syntax, но в основном изложенный материал лучше зайдёт тем, кто уже перевалил за экватор курса (разбирается с квестами Java Collections и Java Multithreading) и начинает интересоваться технологиями, выходящими за рамки Java Core. Топ-10 библиотек Java, которые помогут сэкономить время  - 1За время своего существования Java изрядно обросла библиотеками. Но как понять, какие из них стоит использовать, а какие — нет? Отделить зёрна от плевел вечно занятому разработчику крайне непросто. В этой статье Мартин Пацов (Martin Patsov), Full Stack Developer компании Dreamix, расскажет о своей любви к библиотекам с открытым исходным кодом (open source), и предложит вам те из них, которые считает особенно полезными. Быть иль не быть, вот в чём вопрос: Спасеньем обернётся иль провалом Та самая библиотека Java… Смелей! «СиньйОры» уже были там И опыт их тебе я передам. Пусть вас не вводит в заблуждение моё поэтическое отступление. Библиотек в Java действительно очень много, и разбираться с ними ох как непросто. Тем не менее, я их очень люблю. Меня даже можно назвать «библиотечным евангелистом» (под «евангелистом» в сфере ИТ понимают вовсе не составителя канонический евангелий, а того, кто профессионально пропагандирует ту или иную технологию. Не путайте с обычными пиарщиками: чаще всего ИТ-евангелист досконально разбирается в продвигаемой им технологии. — прим. ред.). Библиотеки — очень важная часть экосистемы open source. Вокруг них вырастают большие сообщества, которые их развивают и поддерживают. И это здорово. Главное достоинство библиотек в том, что они позволяют нам не изобретать велосипед всякий раз, когда мы пишем код. Используйте библиотеки — уже написанный для определённых задач код — как можно чаще! Вы сэкономите время. Серьезно, лучше потратить его на общение с семьей и друзьями.

Топ-10

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

1. Стандартные библиотеки Java

Да-да, вам не показалась! Очень многие люди недооценивают, более того — не знают массы возможностей — стандартных библиотек Java (Java Standard Libraries), и не в курсе, как раскрыть их потенциал в программировании… а то и вовсе не используют их. Вот краткое описание некоторых из них:
  • java.lang. Эта библиотека всегда импортируется в любое Java-приложение, поскольку содержит всё то, без чего вы в принципе не сможете программировать (String, Double, Enum, Math и так далее).

  • В java.util вы можете найти все коллекции и структуры данных, доступные в Java.

  • Далее, у нас есть java.io для чтения файлов, работающих потоками, объектами класса Pipe и так далее.

  • О первых трёх вы, скорее всего, уже слышали. А вот с java.nio, альтернативой java.io, знают уже не все. Эта библиотека отвечает за неблокирующий ввод-вывод, позволяя, как вы могли догадаться, интенсивно использовать операции ввода-вывода.

  • java.net используется для работы с сокетами, создания подключений или коротких сетевых приложений.

  • В Java у нас также есть библиотеки для работы с GUI: javax.swing (довольно устаревшее расширение ещё более старого java.awt).

  • Мы даже можем воспроизводить музыку и создавать MIDI-файлы с помощью java.sound.

2. JHipster

JHipster — это платформа для быстрого развертывания, разработки и создания масштабируемых веб-серверов с высокой нагрузкой и использованием самых современных и модных технологий таких как Spring, Spring-MicroServices, Netflix,Docker, Kubernetes, AngularJs, Liquibase, MongoDB, Cassandra, ElasticSearch.
Топ-10 библиотек Java, которые помогут сэкономить время  - 2
Честное слово, этот «Java-хипстер» определённо спас мне месяцы жизни. Я могу точно сказать, что именно JHipster — мой личный фаворит в списке и он занимает особое место в моем сердце. Этот инструмент — практически незаменим для генерирования эскиза проекта распределенного веб-сервера. Он умеет генерировать pom-файл с зависимостями, настраивать Elastic Search и Connection, вам остается только добавить бизнес-логику архитектуры. Основными и наиболее важными библиотеками, включенными в сгенерированный проект, являются:
  • Spring Boot — помогает ускорить и облегчить разработку приложений
  • Angular/ AngularJS - инфраструктура JavaScript
Здесь вы можете найти больше информации о JHipster.

3. Maven

Maven — один из трёх самых популярных инструментов для сборки проектов на Java. Он отвечает за компиляцию, создание jar-файлов (Java-архивов), создание дистрибутива программы, генерацию документации.
Топ-10 библиотек Java, которые помогут сэкономить время  - 3
Каждый современный проект состоит из разных файлов, модулей, технологий. Говоря очень просто, сборка проекта — подготовка его «рабочей» версии, то есть той программы, которую можно запустить на выполнение. Это можно делать «ручками», в командной строке, а можно написать специальные скрипты. Однако гораздо легче это проделывать с помощью специальных приложений. Называются они «системы автоматической сборки». Maven — одна из трёх таких программ, две другие — Gradle и Ant. На вход такие системы получают исходники проекта, а на выход выдают программу, которую можно запустить.
Структура проекта (зависимости, конфигурации, документация) описывается в файле pom.xml (POM – Project Object Model), который должен находиться в корневой папке проекта. Честно, Maven — просто отличная штука, хоть поначалу и не очень понятная. Если вы никогда не использовали Maven раньше, вы многое потеряли. Откровенно говоря, я вообще не понимаю, как создавались Enterprise-приложения до появления Maven. Почитать о Maven на русском можно здесь.

4. Apache Commons

Apache Commons — фактически целый проект, ориентированный на создание библиотек Java. Или «большой набор маленьких Java-утилит» самого разного предназначения. К слову, утилиты Apache Commons лежат в основе нескольких очень известных проектов, например, Tomcat, Hibernate и других. Вот краткий список некоторых из наиболее часто используемых библиотек Apache Commons:
Топ-10 библиотек Java, которые помогут сэкономить время  - 4
  • Commons Math. Математическая библиотека Apache Commons, имя говорит само за себя: она содержит компоненты для сложных математических и статистических операций и вычислений.

  • Commons CLI. Предоставляет API для анализа аргументов командной строки. Вряд ли стоит даже в мыслях допускать создание приложения без возможности передавать параметры и контролировать его поведение!

  • Commons CSV. Независимо от того, что вы разрабатываете, в какой-то момент вам придется столкнуться с необходимостью использования csv-файлов. То есть, их придётся открывать, читать, редактировать, сохранять и создавать. Я предлагаю использовать формат RFC 4180 из класса CSVFormat и кодировку UTF-8 при сохранении / создании файлов.

  • Commons IO. Используется для упрощения выполнения операций ввода-вывода. Присмотритесь, по крайней мере, к ReversedLinesFileReader, он того стоит!
Почитать об Apache Commons (на английском) можно здесь.

5. Guava

Guava — набор основных библиотек Google для Java. Они содержат новые типы коллекций (например, multimap и multiset), неизменяемые коллекции, библиотеку графов, функциональные типы? утилиты для параллелизма, ввода/вывода, хэширования, обработки строк и многое другое. Все эти инструменты используют специалисты Google в своей работе, а это уже хорошая рекомендация.
Топ-10 библиотек Java, которые помогут сэкономить время  - 5
В какой-то мере Guava является альтернативой Apache Commons. На самом деле, о Guava можно говорить долго (обязательно обратите на неё внимание!), но здесь я упомяну только одну полезную штуку из этой библиотеки. Возможно, вы уже сталкивались с задачами упорядочивания своих коллекций или сравнения содержимого в них? А что насчёт расширенной сортировки и сравнения по нескольким столбцам с несколькими условиями? Компонент ComparisonChain используется для реализации расширенной и сложной сортировки для коллекций. Почитать о Guava (на английском) можно здесь.

6. google-gson

Библиотека google-gson полезна для преобразования объектов Java в JSON и наоборот. Она особенно пригодится при разработке мобильных приложений и создании/использовании REST API, а также в любом случае, когда вам нужно преобразовать объект Java в его представление JSON и наоборот.
Топ-10 библиотек Java, которые помогут сэкономить время  - 6
О JSON (JavaScript Object Notation), Guava, Apache Commons и прочих интересных вещах вы узнаете из квеста Java Collections.
Почитать о google-gson (на английском) можно здесь.

7. Hibernate-ORM

Hibernate — библиотека, предназначенная для решения задач объектно-реляционного отображения (ORM). Hibernate ORM используется для хранения данных в реляционных базах данных. Она обеспечивает более простой и абстрактный способ сделать это для разработчиков. Он использует JDBC в своей реализации. Hibernate также является реализацией спецификации JPA.
Топ-10 библиотек Java, которые помогут сэкономить время  - 7
Почитать о Hibernate ORM (на английском) можно здесь.

8. Mockito

Пусть название Mockito не вводит вас в заблуждение. Речь не о коктейле, а о библиотеке для mock-объектов. Mock-объекты — это объекты, которые имитируют поведение реального объекта по какой-то заданной схеме. Например, для модульного тестирования такие «поддельные» объекты могут симулировать поведение бизнес-объектов. Ну а mock-библиотека Mockito повышает удобство создания и использования mock-объектов.
Топ-10 библиотек Java, которые помогут сэкономить время  - 8
Вы можете найти информацию о Mockito здесь.

9. JUnit

JUnit — свободный Java-фреймворк для создания модульных тестов (они же — юнит-тесты). Эта библиотека — одна из самых популярных, её используют почти все. Рекомендуем вам разобраться с ней как можно быстрее, поскольку очень часто начинающих Java-разработчиков и Java Trainee заставляют «покрывать код тестами». И, надо сказать, это далеко не самое плохое начало карьеры.
Топ-10 библиотек Java, которые помогут сэкономить время  - 9
Больше информации о Junit здесь.

10.Log4j и Slf4j

Эти два фреймворка созданы для скрытия реализации рутинных операций по журналированию определённых событий, которые происходят во время работы Java-приложений. Slf4j представляет собой абстракцию для других фреймворков журналирования (того же Log4j).
Топ-10 библиотек Java, которые помогут сэкономить время  - 10
Больше информации о Log4j и Slf4j.

Что еще почитать:

Топ-3 Blockchain-библиотек для Java-разработчиков

Создание простейшего веб-проекта в IntelliJ Idea Enterprise. Пошагово, с картинками

Топ 5 библиотек машинного обучения для Java