Java guru
4.37K subscribers
1 photo
1 video
1 file
266 links
Новости из мира Java, обзоры интересных библиотек и фреймворков, обучающие статьи. Онлайн обсуждения актуальных тем и обмен опытом. Для связи @RodmanDV
Download Telegram
Потоковый обмен в распределённых системах и использование реактивных потоков в нереактивных приложениях: опыт «Магнита»

Интересный опыт использования реактивных потоков. Рассматриваются три решения, которые позволяют реализовать потоковый обмен данными из БД между распределёнными приложениями:
1 Реализация с использованием hibernate
2 Реализация с использованием mybatis
3 Ограничение скорости обмена с использованием механизма обратного давления («backpressure») и библиотеки Bucket4j

https://habr.com/ru/companies/magnit/articles/726090/
1🔥1
Обработка исключений в Java в функциональном стиле

В Java начиная с версии 8 появились новые возможности в виде функциональных интерфейсов и потоков (Stream API).Однако применение функционального стиля на практике осложняется тем, что все стандартные функциональные интерфейсы из пакета java.util.function не объявляют проверяемых исключений (являются checked exception unaware).
В данной статье автор предоставит информацию о собственной библиотеке для обработки исключений (Exception) в функциональном стиле.

https://habr.com/ru/articles/676852/
🔥2👍1
Java Records

Java Record-ы появились в Java 12 как preview feature (JEP 359), а финальный релиз был в Java 16 (JEP 395). В разных источниках обычно приводят примеры их использования для описания DTO (Data Transfer Objects), но сфера их применения гораздо шире. В статье автор приводит разные примеры. Мне понравился пример реализации стейт машины «State implementation”.

https://www.infoq.com/articles/exploring-java-records/
2👍1🔥1
Смерть от тысячи микросервисов

Статья заставляет задуматься ))

Пару фактов: Dropbox, Twitter/X, Facebook, Instagram, Shopify, Stack Overflow — эти и другие компании начинали как монолитные базы кода. Многие по сей день имеют в своей основе монолит. Shopify по-прежнему остается монолитом Rails. WhatsApp стал сверхновой благодаря монолиту Erlang и 50 инженерам. Что касается серверов, WhatsApp предпочитает использовать меньшее количество серверов и вертикально масштабировать каждый сервер в максимально возможной степени. Instagram был приобретен за миллиарды — с командой из 12 человек.

https://habr.com/ru/articles/760426/
🔥32
Введение в Java Process Memory Model

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

https://habr.com/ru/articles/744834/
👍3😍1
Под капотом Apache Kafka: zero copy и быстрые IO-операции с диском

В чем секрет высокой производительности Kafka?
Чтобы обеспечить высокую скорость операций записи на диск и чтения, Kafka использует не классическую передачу данных, а технологию под названием «Zero-copy», когда ЦП не копирует данные из одной области памяти в другую, а работает с прямым доступом к памяти (DMA, direct memory access) и отображением в памяти (memory mapping), а также со страничным кэшем.

https://bigdataschool-ru.turbopages.org/bigdataschool.ru/s/blog/kafka-page-cashe-and-zero-copy-transfer-technology.html
🔥2
Вышла Java 21

Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.

Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.

https://habr.com/ru/articles/762084/
🔥2🐳1
Перестаём бояться генерировать байт-код

Многие, возможно, думают, что работа с байт-кодом Java — это какая-то особенная магия. Разобраться в этом полезно для лучшего понимания как все работает изнутри.

https://habr.com/ru/articles/759990/
🔥3
Использование оконных функций с Hibernate 5 и 6

Начиная с версии 6, вы можете использовать оконные функции в запросах JPQL (Java Persistence Query Language — платформенно-независимый объектно-ориентированный язык запросов). Более старые версии Hibernate поддерживают их только в нативных запросах.

https://habr.com/ru/companies/otus/articles/743910/
👍3🔥1
Прожарка java.lang.String

Иногда комментарии к статье оказываются интереснее статьи )) вот пример. Хотя подача материала интересная и провокационная: как сломать строки в Java.

https://habr.com/ru/companies/bar/articles/747528/
🤣2🥱1
Выступление на Joker 2023: Польза и вред Java-сообществ для инженеров

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

https://jokerconf.com/talks/8136e7bf53844a45b3a3bde40cfd05bc/?referer=/persons/ee4fea77ee85444cba7f1f866c8b862b/
🔥31
Потоковая обработка данных с помощью Kafka Streams: архитектура и ключевые концепции

При реализации потоковой обработки и анализа данных может возникнуть необходимость агрегирования записей для объединения нескольких независимых поток данных или обогащения какой-либо модели данных. Для этой цели может использоваться Kafka Streams, которая позволяет выполнять обработку данных в режиме реального времени. 

https://habr.com/ru/articles/747658/
1
Spring Data JPA: разница между методами findById, getOne, getById и findOne

Когда ваш репозиторий наследуется от JpaRepository из Spring Data JPA, он получает методы findById, getOne, getById, и findOne. Исходя из их имен, вы можете подумать, что они делают одно и то же.
Но Spring Data явно не стала бы давать нам 4 совершенно одинаковых метода под разными именами. Итак, давайте подробнее рассмотрим эти методы и найдем их отличия.

https://thorben-janssen.com/spring-data-findbyid-getone-getbyid-and-findone/
👍1🔥1
Java 21: новый подход к созданию строк

Java 21 предлагает много классных функциональностей, и одна из них  —  шаблоны строк (англ. String Templates). При том, что их целевое назначение не ограничивается только строковой интерполяцией, для Java-разработчиков они служат еще одним “правильным” способом конкатенации строк. 

https://nuancesprog.ru/p/18883/
👍1
Магия Spring Framework своими руками

Прокси объекты являются основой "магии" Spring Framework. В качестве демонстрации реализована @JmxExporter аннотация, которая позволяет превратить любой Spring Bean в JMX MBean.

https://habr.com/ru/articles/750894/
🔥2
Ивентная модель данных с использованием Kafka и Kafka Connect: Построение гибкой и распределенной архитектуры

В этой статье мы рассмотрим, как Kafka Connect – мощный инструмент из экосистемы Apache Kafka – приходит на помощь при решении сложной задачи синхронизации данных между базами данных. Мы рассмотрим, как используя Kafka Connect, мы можем эффективно следить за изменениями в одной базе данных, обрабатывать их в нашем Java приложении и мгновенно записывать их в другую базу данных, обеспечивая надежность и безопасность данных.

https://habr.com/ru/articles/751256/
🔥1🌚1
Разница между загрузкой и инициализацией классов в Java на любопытном примере

Очень интересная статья о тонкостях загрузки и инициализации классов. Получил большое удовольствие от прочтения. Поводом для написания статьи стал вопрос на StackOverflow.

https://habr.com/ru/articles/740156/
🔥1
Новый взгляд на Maven-plugin для IDEA — GMaven

Многие из нас часто работают с maven проектами, но как среда разработки изнутри работает с maven? В статье один из разработчиков JetBrains из команды build tools делится тем как устроена работа Maven-plugin.

https://habr.com/ru/articles/753828/
👍2
Исчерпывающее руководство по одномерным массивам в Java

Довольно подробное описание массивов в Java. Обратите особое внимание на «3. Тип данных массива» и «4. Длина массива». Там для исследования использует jol и рассказывает о структуре class файла.

https://habr.com/ru/articles/753638
🔥3