Java for Beginner
672 subscribers
541 photos
155 videos
12 files
827 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Jackson

Tree Model и Streaming API в Jackson: когда нужна гибкость и производительность

Jackson предлагает не только стандартную POJO-сериализацию, но и более гибкие модели работы с JSON. Среди них — Tree Model и Streaming API.
Tree Model даёт полную свободу при работе с JSON-структурой, а Streaming API — максимальную производительность при чтении/записи больших файлов.


Tree Model (JsonNode): работа с JSON как с деревом

Иногда структура JSON заранее неизвестна или слишком сложна, чтобы описывать её через Java-классы. В таких случаях удобно использовать дерево узлов — JsonNode.

Пример: чтение JSON как дерева
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

String json = "{ \"user\": { \"name\": \"Alice\", \"age\": 30 } }";

ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(json);

String name = rootNode.path("user").path("name").asText();
int age = rootNode.path("user").path("age").asInt();

System.out.println("Имя: " + name + ", Возраст: " + age);


Tree Model позволяет легко:
— обходить структуру вручную
— проверять наличие полей
— работать с вложенностью и массивами
— модифицировать JSON "на лету"


Когда использовать Tree Model

Когда структура JSON может меняться
Когда нужно читать только часть данных
При разработке универсальных парсеров
Когда сложно заранее описать модель через классы


Streaming API (JsonParser/JsonGenerator)

Для огромных JSON-файлов (например, логов, экспорта из БД) загрузка всего файла в память может быть невозможной. Здесь пригодится стриминговый API — он читает JSON по частям, как поток.

Пример: чтение JSON через JsonParser
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;

JsonFactory factory = new JsonFactory();
JsonParser parser = factory.createParser(new File("data.json"));

while (!parser.isClosed()) {
JsonToken token = parser.nextToken();

if (JsonToken.FIELD_NAME.equals(token) && "name".equals(parser.getCurrentName())) {
parser.nextToken();
System.out.println("Имя: " + parser.getValueAsString());
}
}
parser.close();


Когда использовать Streaming API


Работа с большими JSON-файлами, которые нельзя загрузить полностью
Требуется максимальная производительность
Необходимо читать JSON "по частям"
Парсинг в системах с ограниченной памятью (например, embedded)


Сравнение подходов

POJO-модель — просто, типобезопасно, но требует классов
Tree Model — гибко, удобно для анализа/модификации
Streaming API — быстро и экономно, но требует ручного контроля


#Java #Training #Medium #Jackson #Tree_Model #Streaming_API
Всем привет 😊

Сегодня не будет обучающих постов или постов с мемами.

В этот день мы, как и все адекватные жители планеты, чтим память миллионов человек отдавших свою жизнь в борьбе с фашистской Германией.

Чтим тех, кто сегодня как и тогда, воюет за свободу и независимость нашей Родины.

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

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

С Днем Победы! ⭐️
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Channel photo updated
Всем субботний, солнечный привет! ✌️

Целую неделю я думал над итогами опроса о канале.

На основные вопросы - почему новые подписчики приходят и потом уходят, почему имеющиеся поставили канал на заглушку и не читают его - напрашиваются вполне очевидные выводы:

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

Основываясь на этих проблемах, с которыми Вы возможно согласны, я решил:

- Пересмотреть объем и частоту обучающих постов. Теперь когда в нашем оглавлении, есть практически весь Java Core, можно сконцентрироваться на изучении более точечных и новых технологий новых версий Java, библиотек и фреймворков.
- Ежедневно возвращаться и более обстоятельно рассматривать темы для новичков, но в более популярном формате.
- Полностью переработать оглавление, чтобы человеку любого грейда было легко найти интересующую тему, которая рассматривалась в канале.
- Добавить немного авторского мнения и разбора некоторых моментов в разработке.
- Дать возможность новичкам выбирать темы для разбора - путем выбора и голосования.


Что скажете на такие предложения? 🤓
Please open Telegram to view this post
VIEW IN TELEGRAM
Нужны ли нам посты для полных новичков в Java, по типу: Как запустить IDEA, как создать первый класс и так далее?
Anonymous Poll
20%
Да, несомненно! 👍
15%
Да, наверно.. 🤷‍♀️
43%
Не знаю. Мне точно не нужны ☺️
22%
Нет не нужны, в интернете много информации, пусть учатся гуглить 🖕
Почему все-таки программирование?
(немного еженедельной мотивации на моем примере)

Мне, без года 40-летнему человеку, по теории, должно было быть сложно менять профессию.
Тем более, я уже успел получить несколько других и добиться в них немалого успеха.


Так почему же я решился на такую авантюру? (а по другому, мои родные это не называли 😂)

Вот некоторые из тех принципов, которые определили пройденный путь:

1. Успех в определенной профессии != достойной зарплате и условиям труда 🫰.

Поработав в разных сферах и в разных условиях, посмотрев как трудятся люди разных профессий, начинаешь понимать ценность спокойной, "удаленной" работы и достойного, денежного эквивалента этого труда. ☝️

2. Развитие и перспективы в обозримом будущем 🏝.

По моему скромному мнению, пределов развития и так называемого "потолка", у человека выбравшего программирование - нет. Вот нет и все. Кто готов поспорить - жду в комментариях 🤓

А есть лишь естественные причины - физические ограничения и ЛЕНЬ.
😵

А это значит, что пока руки поднимаются - опускать их мимо клавиатуры, противоестественно! 💪

3. Неугасаемый интерес к процессу созидания (написанию кода) 🧑‍💻.

Один из мощнейших, мотивационных принципов для меня.

Ведь, что может быть прекраснее, чем наблюдать как созданный тобой корабль (условно, конечно же), держится и продолжает плыть в самом современном море, которое еще не исследовано до конца? ⛵️


Все это, в совокупности, перевесило мое нежелание (или инерцию мышления и жизни) изучать программирование.

И даже когда (очень часто, столкнувшись с нерешаемой задачей 😭) мне казалось, что я сделал опрометчиво-глупый выбор - эти принципы помогали преодолеть сомнения (и конечно же задачу, потому что нерешаемых задач НЕТ 💪).

😎

#motivation
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Еще раз всем привет.

После всех размышлений про то, как и какого уровня публиковать посты, я пришел к решению, что буду писать 1, редко два, обучающих поста в день.

Почему так?

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

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


Поэтому, посты будут выходить поочередно, о темах связанных с основами Java и темах middle+, с изучением новых технологий.

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

Ну и обещая ввести новую рубрику, давайте начнем прямо сегодня.

Ждите поста ниже!
Новая рубрика! ✈️

Предложение тем для разбора и публикации! 📖

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

Голосование будет проводиться всю неделю, а статья или видео - выходить по выходным.

Примерные правила:
🟢 1 вопрос - от одного участника.
🟢 темы, не выше уровня middle, чтоб был интерес общим.

Жду Ваших предложений! 👏
Please open Telegram to view this post
VIEW IN TELEGRAM