Время прочтения: 4 мин.

Во время разработки часто встречаются ситуации, когда базовые возможности языка не удовлетворяют требованиям поставленных задач. В таких случаях есть два пути:

  • Запастись кофе, морально подготовиться к нескольким “выстрелам себе в ногу” и в конце концов изобрести велосипед, который будет выполнять необходимый функционал (например, парсинг какого-нибудь xlsx формата)
  • В несколько действий подключить библиотеку, уже написанную другими программистами, и тем самым сэкономить потенциально большое количество времени и сил, которые можно потратить на более полезные дела, будь то исправление багов или сокращение тех. долга.

В этой статье будет приведено 5 библиотек и фреймворков для Java, о которых полезно знать и применять их в работе, чтобы не нарушать один из принципов программирования – KISS.

  1. Guava

Guava – это сборник множества библиотек от Google. Он включает в себя несколько новых типов коллекций, неизменяемые коллекции, библиотеку реализующую работу с графами, работу с вводом\выводом, хешированием, кэшированием, строками и многое другое. Например, часто в коде можно встретить повторяющиеся блоки, реализующие низкоуровневую конкатенацию строк:

StringBuilder stringBuilder = new StringBuilder();
for (Iterator<String> i = cars.iterator(); i.hasNext()) {
	If (stringBuilder.length() != 0) {
		stringBuilder.append(“, ”);
	}
	
	stringBuilder.append(i.next());
}
System.out.println(“Cars: ”, sb.toString());

Да, этот код мог бы быть короче и записан в одну строку:

System.out.println(“Cars: ”, String.join(“, ”, cars));

Но это всё ещё не является оптимальным решением. Здесь-то и пригодится функционал Guava по работе со строками:

System.out.println(
	“Cars: ”,
	Joiner.on(“, ”).join(cars);
);

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

На эту библиотеку определённо стоит обратить внимание по нескольким причинам. Во-первых, она разработана спецами из Google. Во-вторых, эти же спецы из Google сами её используют. Это звучит как очень хорошая рекомендация. Более подробно можно ознакомиться на GitHub

2. Google-json (GSON)

Google-json, как понятно из названия, ещё одна разработка прямиком из Google. Библиотека реализует механизмы работы с форматом JSON, а именно приведение Java-объектов в этот формат и обратно. Примерно вот так выглядит сериализация и десериализация с помощью GSON:

Gson gson = new GsonBuilder().create();

ExampleClass origin = new ExampleClass();

// Сериализация
String json = gson.toJson(ec); 

// Десериализация
ExampleClass clone = new Gson.fromJson(json, ExampleClass.class);

Как видно перевод объекта проходит с помощью минимального количества легко читаемого и понимаемого кода. Особенно эта библиотека пригодится при работе с RESTful приложениями, которые общаются преимущественно с помощью json. Более подробно почитать можно всё так же на GitHub.

3. Log4j

Log4j – библиотека взявшая на себя обязанности по избавлению разработчика от лишней головной боли при организации логирования в приложении. Она инкапсулирует почти все операции (прямая работа с файлами логов, оформление логов, разграничение уровней логирования), предоставляя разработчику удобный и минималистичный интерфейс взаимодействия с логами.

После подключения и быстрой настройки библиотеки работа с логами будет сведена к следующему коду:

final static Logger logger = Logger.getLogger(MainClass.class);

logger.debug(“Debug message”);
logger.error(“Error message”);
logger.warn(“Warning message”);
logger.info(“Info message”);

После выполнения кода выше в лог будет записано что-то вроде:

2021-03-24 13:00 DEBUG MainClass:5 - Debug message
2021-03-24 13:00 ERROR MainClass:6 – Error message
2021-03-24 13:00 WARN MainClass:7 - Warning message
2021-03-24 13:00 INFO MainClass:8 - Info message

Почитать подробнее можно на сайте разработчика.

4. Blade

Blade – это фреймворк для построения web-приложений. На борту он имеет базовый Auth функционал, нативную возможность формировать json ответы, поддержку большого количества расширений и достаточно высокую производительность. У людей, которые знакомы с Spring, может возникнуть вопрос – а зачем нужен Blade, если есть Spring, который умеет всё то же самое и даже больше? Ответ прост. Blade очень легковесен – его исходный код занимает всего 500kb, поэтому его выгодно использовать в маленьких проектах вместо тяжеловесного Spring. Подробнее на GitHub.

5. libGDX

libGDX – настоящий мультимедийный комбайн. Если вам нужно отображать какую-либо графику, а если ещё и со звуком, то определённо стоит обратить внимание на этот фреймворк. Помимо вывода графики посредством предоставления высокоуровневого интерфейса над OpenGL, libGDX может предложить работу со звуком, работу с пользовательским вводом, собственную стейт-машину, работу с физикой с помощью box2D и многое другое.

Подробнее можно прочитать на сайте разработчика.

Целью этой статьи не является перечисление всех самых-самых библиотек или фреймворков для Java. Цель скорее показать, какое многообразие решений уже существует и убедить читателя в том, что зачастую вовсе необязательно изобретать свой велосипед, и нет ничего зазорного в том, чтобы использовать уже готовое решение того или иного вопроса.