Какие основные форматы данных (сериализации) используются в Java-экосистеме?

«Какие основные форматы данных (сериализации) используются в Java-экосистеме?» — вопрос из категории Софт-скиллы, который задают на 26% собеседований Java Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

В Java распространены следующие форматы для обмена и хранения данных:

Формат Характеристики Типичное применение Пример библиотеки/API
JSON Текстовый, человекочитаемый, основан на JavaScript. REST API, конфигурации, обмен данными между веб-сервисами. Jackson (де-факто стандарт), Gson.
XML Текстовый, структурированный, с поддержкой схем (XSD). SOAP-веб-сервисы, конфигурационные файлы (например, Spring XML), legacy-системы. JAXB (Java Architecture for XML Binding), DOM/SAX парсеры.
Protocol Buffers (Protobuf) Бинарный, компактный и быстрый. Требует предварительной схемы (.proto). Высокопроизводительная межсервисная коммуникация (gRPC), сериализация для кэширования. protobuf-java (официальная библиотека от Google).
YAML Текстовый, ориентированный на данные, с отступами. Конфигурационные файлы (Spring Boot, Kubernetes). SnakeYAML, Jackson YAML.
CSV Простой текстовый табличный формат. Экспорт/импорт данных, отчеты, интеграция с табличными процессорами. Apache Commons CSV, OpenCSV.

Пример сериализации в JSON с Jackson:

ObjectMapper mapper = new ObjectMapper();
MyObject obj = new MyObject("value");
String json = mapper.writeValueAsString(obj); // Сериализация
MyObject deserialized = mapper.readValue(json, MyObject.class); // Десериализация

Выбор формата зависит от требований: читаемость (JSON/YAML), производительность и размер (Protobuf), стандартизация (XML/SOAP).