Для кого эта статья: кое-что будет интересно новичкам, которые изучают квест Java Syntax, но в основном изложенный материал лучше зайдёт тем, кто уже перевалил за экватор курса (разбирается с квестами Java Collections и Java Multithreading) и начинает интересоваться технологиями, выходящими за рамки Java Core.
За время своего существования Java изрядно обросла библиотеками. Но как понять, какие из них стоит использовать, а какие — нет? Отделить зёрна от плевел вечно занятому разработчику крайне непросто. В этой статье Мартин Пацов (Martin Patsov), Full Stack Developer компании Dreamix, расскажет о своей любви к библиотекам с открытым исходным кодом (open source), и предложит вам те из них, которые считает особенно полезными.Быть иль не быть, вот в чём вопрос:
Спасеньем обернётся иль провалом
Та самая библиотека Java…
Смелей! «СиньйОры» уже были там
И опыт их тебе я передам.
Пусть вас не вводит в заблуждение моё поэтическое отступление. Библиотек в Java действительно очень много, и разбираться с ними ох как непросто. Тем не менее, я их очень люблю. Меня даже можно назвать «библиотечным евангелистом» (под «евангелистом» в сфере ИТ понимают вовсе не составителя канонический евангелий, а того, кто профессионально пропагандирует ту или иную технологию. Не путайте с обычными пиарщиками: чаще всего ИТ-евангелист досконально разбирается в продвигаемой им технологии. — прим. ред.). Библиотеки — очень важная часть экосистемы open source. Вокруг них вырастают большие сообщества, которые их развивают и поддерживают. И это здорово. Главное достоинство библиотек в том, что они позволяют нам не изобретать велосипед всякий раз, когда мы пишем код. Используйте библиотеки — уже написанный для определённых задач код — как можно чаще! Вы сэкономите время. Серьезно, лучше потратить его на общение с семьей и друзьями.
Структура проекта (зависимости, конфигурации, документация) описывается в файле pom.xml (POM – Project Object Model), который должен находиться в корневой папке проекта.
Честно, Maven — просто отличная штука, хоть поначалу и не очень понятная. Если вы никогда не использовали Maven раньше, вы многое потеряли. Откровенно говоря, я вообще не понимаю, как создавались Enterprise-приложения до появления Maven.
Почитать о Maven на русском можно здесь.
Почитать о google-gson (на английском) можно здесь.
Топ-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.Честное слово, этот «Java-хипстер» определённо спас мне месяцы жизни. Я могу точно сказать, что именно JHipster — мой личный фаворит в списке и он занимает особое место в моем сердце. Этот инструмент — практически незаменим для генерирования эскиза проекта распределенного веб-сервера. Он умеет генерировать pom-файл с зависимостями, настраивать Elastic Search и Connection, вам остается только добавить бизнес-логику архитектуры. Основными и наиболее важными библиотеками, включенными в сгенерированный проект, являются:
- Spring Boot — помогает ускорить и облегчить разработку приложений
- Angular/ AngularJS - инфраструктура JavaScript
3. Maven
Maven — один из трёх самых популярных инструментов для сборки проектов на Java. Он отвечает за компиляцию, создание jar-файлов (Java-архивов), создание дистрибутива программы, генерацию документации.Каждый современный проект состоит из разных файлов, модулей, технологий. Говоря очень просто, сборка проекта — подготовка его «рабочей» версии, то есть той программы, которую можно запустить на выполнение. Это можно делать «ручками», в командной строке, а можно написать специальные скрипты. Однако гораздо легче это проделывать с помощью специальных приложений. Называются они «системы автоматической сборки». Maven — одна из трёх таких программ, две другие — Gradle и Ant. На вход такие системы получают исходники проекта, а на выход выдают программу, которую можно запустить. |
4. Apache Commons
Apache Commons — фактически целый проект, ориентированный на создание библиотек Java. Или «большой набор маленьких Java-утилит» самого разного предназначения. К слову, утилиты Apache Commons лежат в основе нескольких очень известных проектов, например, Tomcat, Hibernate и других. Вот краткий список некоторых из наиболее часто используемых библиотек Apache Commons:- Commons Math. Математическая библиотека Apache Commons, имя говорит само за себя: она содержит компоненты для сложных математических и статистических операций и вычислений.
- Commons CLI. Предоставляет API для анализа аргументов командной строки. Вряд ли стоит даже в мыслях допускать создание приложения без возможности передавать параметры и контролировать его поведение!
- Commons CSV. Независимо от того, что вы разрабатываете, в какой-то момент вам придется столкнуться с необходимостью использования csv-файлов. То есть, их придётся открывать, читать, редактировать, сохранять и создавать. Я предлагаю использовать формат RFC 4180 из класса CSVFormat и кодировку UTF-8 при сохранении / создании файлов.
- Commons IO. Используется для упрощения выполнения операций ввода-вывода. Присмотритесь, по крайней мере, к ReversedLinesFileReader, он того стоит!
5. Guava
Guava — набор основных библиотек Google для Java. Они содержат новые типы коллекций (например, multimap и multiset), неизменяемые коллекции, библиотеку графов, функциональные типы? утилиты для параллелизма, ввода/вывода, хэширования, обработки строк и многое другое. Все эти инструменты используют специалисты Google в своей работе, а это уже хорошая рекомендация.В какой-то мере Guava является альтернативой Apache Commons.
На самом деле, о Guava можно говорить долго (обязательно обратите на неё внимание!), но здесь я упомяну только одну полезную штуку из этой библиотеки. Возможно, вы уже сталкивались с задачами упорядочивания своих коллекций или сравнения содержимого в них? А что насчёт расширенной сортировки и сравнения по нескольким столбцам с несколькими условиями? Компонент ComparisonChain используется для реализации расширенной и сложной сортировки для коллекций.
Почитать о Guava (на английском) можно здесь.
6. google-gson
Библиотека google-gson полезна для преобразования объектов Java в JSON и наоборот. Она особенно пригодится при разработке мобильных приложений и создании/использовании REST API, а также в любом случае, когда вам нужно преобразовать объект Java в его представление JSON и наоборот.О JSON (JavaScript Object Notation), Guava, Apache Commons и прочих интересных вещах вы узнаете из квеста Java Collections. |
7. Hibernate-ORM
Hibernate — библиотека, предназначенная для решения задач объектно-реляционного отображения (ORM). Hibernate ORM используется для хранения данных в реляционных базах данных. Она обеспечивает более простой и абстрактный способ сделать это для разработчиков. Он использует JDBC в своей реализации. Hibernate также является реализацией спецификации JPA.Почитать о Hibernate ORM (на английском) можно здесь.
8. Mockito
Пусть название Mockito не вводит вас в заблуждение. Речь не о коктейле, а о библиотеке для mock-объектов. Mock-объекты — это объекты, которые имитируют поведение реального объекта по какой-то заданной схеме. Например, для модульного тестирования такие «поддельные» объекты могут симулировать поведение бизнес-объектов. Ну а mock-библиотека Mockito повышает удобство создания и использования mock-объектов.Вы можете найти информацию о Mockito здесь.
9. JUnit
JUnit — свободный Java-фреймворк для создания модульных тестов (они же — юнит-тесты). Эта библиотека — одна из самых популярных, её используют почти все. Рекомендуем вам разобраться с ней как можно быстрее, поскольку очень часто начинающих Java-разработчиков и Java Trainee заставляют «покрывать код тестами». И, надо сказать, это далеко не самое плохое начало карьеры.Больше информации о Junit здесь.
10.Log4j и Slf4j
Эти два фреймворка созданы для скрытия реализации рутинных операций по журналированию определённых событий, которые происходят во время работы Java-приложений. Slf4j представляет собой абстракцию для других фреймворков журналирования (того же Log4j).Больше информации о Log4j и Slf4j.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ