Перейти к основному содержимому

5.03. Библиотеки и утилиты

Разработчику Архитектору

Популярные библиотеки для разных задач

  1. Работа с JSON - Jackson, Gson, JSON-P (javax.json).
  2. ORM (Работа с базами данных) - Hibernate, JPA (Java Persistence API), MyBatis, Spring Data JPA, PostgreSQL JDBC Driver, MySQL Connector/J.
  3. Логирование - SLF4J (Simple Logging Facade for Java), Logback, Log4j 2, java.util.logging.
  4. API и HTTP-клиенты - OkHttp, Apache HttpClient, Retrofit, Spring WebClient, RestTemplate.
  5. Маппинг объектов - MapStruct, ModelMapper.
  6. Кэширование - Ehcache, Caffeine, Spring Cache.
  7. Обработка временных ошибок - Resilience4j, Hystrix.
  8. Аутентификация и авторизация - Spring Security, Keycloak, JWT (io.jsonwebtoken).
  9. Генервация документации API - Swagger/OpenAPI (springdoc-openapi), Swagger-Core.
  10. Тестирование - JUnit 5, TestNG, Mockito, AssertJ, Spring Test.
  11. Обработка файлов - Apache Commons CSV, Apache POI, Thumbnailator, iText.
  12. Работа с очередями и сообщениями - RabbitMQ Java Client, Spring AMQP, Kafka Clients.
  13. Работа с электронной почтой - JavaMail API, Spring Mail.
  14. Шифрование и безопасность - BouncyCastle, javax.crypto.
  15. Работа с фоновыми задачами - Quartz Scheduler, Spring Batch.
  16. Работа с WebSocket - javax.websocket, Spring WebSocket.
  17. Работа с HTML и парсинг - Jsoup, HtmlUnit.
  18. Микросервисы - Spring Cloud, Netflix Eureka, Consul.
  19. Работа с графами - GraphQL Java, DGS Framework.
  20. Работа с конфигурацией - Spring Boot Configuration, Typesafe Config.
  21. Работа с датами и временем - java.time, Joda-Time.
  22. Работа с командной строкой - Apache Commons CLI, Picocli.

Популярные фреймворки и утилиты

+
jcmd, mat, jmc, jvisualvm, asyncprofiler,
Performance инженер на хайлоаде
jfr

Утилиты

Утилиты JDK – инструменты при диагностике, отладке и запуске приложений. Эти утилиты входят в состав JDK и обычно находятся в папке bin внутри установленного JDK.

  1. javac – компилятор Java, который компилирует .java файлы в байт-код (.class). Пример:
javac HelloWorld.java

Используется при написании программ без IDE (да, и такое бывает), в скриптах сборки или для изучения основ.

  1. java – запуск Java-приложений, который запускает класс с методом main. Пример:
java HelloWorld
  1. jar – работа с JAR-файлами, создание, просмотр, обновление и запуск .jar-файлов.

Пример создания JAR:

jar cfe myapp.jar MainClass *.class

Пример запуска JAR:

java -jar myapp.jar

Используется для распространения приложений, хранения библиотек, упаковки ресурсов.

  1. jps – просмотр запущенных Java-процессов, показывает список активных Java-процессов и их ID.

Пример:

jps -l
  1. jstack – анализ стека потоков, выводит трассировку стека всех потоков указанного Java-процесса.

Пример:

jstack 12345 > thread_dump.txt

Используется для анализа deadlocks, при зависании приложения, для диагностики состояния потоков.

  1. jinfo – получение информации о JVM, показывает конфигурационные параметры и системные свойства запущенного процесса.

Пример:

jinfo 12345

Можно получить системные свойства (System.getProperties()), переменные окружения, аргументы запуска JVM.

  1. jshell – интерактивная среда выполнения Java-кода, оболочка для тестирования кода без необходимости компилировать классы. Пример:
jshell
jshell> int x = 10;
jshell> System.out.println(x * 2);

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

  1. javap – дизассемблер Java-классов, позволяет посмотреть содержимое .class файла – сигнатуры методов, байт-код и т.д.

Пример:

javap -c HelloWorld.class

Используется при изучении байт-кода, для анализа сторонних библиотек, при исследовании проблем производительности.

  1. jcmd – универсальный инструмент управления JVM, выполняет различные команды для диагностики и управления JVM. Примеры:
jcmd 12345 VM.thread_dump     # дамп потоков
jcmd 12345 GC.run # принудительный GC
jcmd 12345 VM.flags # показать флаги JVM

Используется при диагностике и управлении JVM, при работе с продакшн-сервисами.