Java News
4.36K subscribers
107 photos
4 videos
1 file
1.65K links
Все новости связанные с Java!

По всем вопросам: @NadikaKir

Мы на бирже: https://telega.in/c/java_newss
Download Telegram
Сможете ли вы спроектировать Maven‑монорепозиторий для 5 микросервисов?

В этой статье мы разберём реальную задачу на проектирование Maven Multi‑Module: от циклических зависимостей и неправильного использования spring‑boot‑maven‑plugin до смешения ролей агрегатора и родителя. Затем соберём эталонную структуру по лучшим практикам Spring Cloud и Netflix, добавим CI/CD‑диаграмму и научимся запускать сервис локально без Eureka и RabbitMQ.

Читать статью


Наш канал в Макс 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥1
Hibernate Reactive: опыт миграции, архитектурные компромиссы и скрытая сложность

Наш проект на Quarkus столкнулся с необходимостью более эффективного использования ресурсов под высокой нагрузкой. В поисках решения мы решили попробовать миграцию с классического Hibernate ORM на Hibernate Reactive (HR). В этой статье я поделюсь реальным опытом этого перехода: разберу ключевые архитектурные различия, расскажу о неочевидных «граблях», на которые мы наступили, и покажу на production-коде, какую цену пришлось заплатить за реактивность.

Версии используемого ПО: Quarkus: 3.31.3, Quarkus Hibernate Reactive: 3.31.3 и Vertx-pg-client (реактивный клиент PostgreSQL): 4.5.24.

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

Читать статью

Наш канал в Макс 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Я написал симулятор квантового поля на Java. Вот что из этого вышло

Одним вечером я решил проверить: что если взять решётку из 10 000 узлов, задать одно правило передачи энергии между соседями — и просто запустить? Никакой теоретической физики из учебника, никакой подготовки. Посмотреть что вырастет само.

Спойлер: за один день появились волновое уравнение, интерференция, фазовый переход, рождение и аннигиляция частиц, и стрела времени. Всё из одного уравнения.

Читать статью


Наш канал в Макс 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Спасаемся от Spring: есть ли альтернативы репозиторным фреймворкам? Часть вторая. Альтернативы

В предыдущей статье мы обсудили недостатки решений Spring в части доступа к данным.

В ходе анализа решений Spring стало очевидно, что оба фреймворка используют радикально разные подходы в работе с данными. Казалось бы, контроль над запросами очень важен для приложений, особенно высоконагруженных. Но Spring Data JPA такого контроля не даёт. Лёгкость и простота изменения кода является залогом его чистоты и работоспособности, однако с этим есть сложности уже у Spring JDBC.

Всего-то нужен фреймворк, предоставляющий полный контроль над запросами со стороны разработчика и не создающий трудностей при развитии, изменении и рефакторинге кода. В этой статье мы разберём две альтернативы, которые, на мой взгляд, в меньшей степени подвержены проблемам Spring Data JPA и Spring JDBC.

Это будут jOOQ и Exposed.


Читать статью


Наш канал в Макс 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Шёл за утечкой памяти, нашёл утечку диска: SXSSFWorkbook без dispose() в Apache POI

Меня зовут Игорь Симаков, работаю engineering manager’ом и руковожу командами разработки

На одном из наших сервисов, который работает с XLSX-файлами, прилетел production-алерт на высокое потребление памяти. Стандартный P3, обычно решается рестартом. Пошёл смотреть поды и нашёл проблему, к памяти отношения не имеющую, но представляющую больший риск, чем сам алерт. Об этом и расскажу ниже: чем «утечка диска» отличается от «утечки памяти», как мы наткнулись на грабли в Apache POI и как закрыли их на уровне архитектуры

Читать статью


Наш канал в Макс 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍1
Spring Security: начало работы и первые шаги на практике

В данной статье поигрались с базовыми возможностями Spring Secrity и узнали фундамент на котором строится вся остальная безопасность приложения

Читать статью


Наш канал в Макс 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Семь вещей, которые нельзя делать из-за стирания типов в Java

Мы, разработчики на Java, используем параметризованные типы каждый день: List<String>, Map<Long, User>, Optional<Order> и так далее. Однако у параметризованных типов есть важная особенность: в Java они существуют в полном виде только на этапе компиляции.

Читать статью

Наш канал в Макс 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Стили интеграции: от файлов до событий — как выбрать правильно

Выбирать стиль интеграции приложений — всё равно что выбирать фундамент для дома. Ошибёшься — и переделывать придётся, когда стены уже стоят.

В этой статье я разбираю четыре основных стиля интеграции: передача файлов, общая база данных, удалённый вызов процедур (RPC) и асинхронный обмен сообщениями (Messaging). Без воды, на реальных примерах — включая историю провала TSB Bank, который стоил сотен миллионов фунтов.

Вы узнаете:

▪️ почему общая база данных — это антипаттерн для микросервисов;
▪️ как асинхронность спасает прод, когда падают соседние сервисы;
▪️ какие best practice используют команды, чтобы не получить распределённый монолит.

Если вы архитектор, тимлид или разработчик, который хочет строить надёжные системы — добро пожаловать под кат.

Читать статью


Наш канал в Макс 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍1
Вам не нужны микросервисы

Какое‑то время назад, проработав 3 года на позиции Java Middle+‑ разработчика на крупном монолитном легаси‑проекте (естественно, модульном), я столкнулся с тем, что не имел практики в создании приложений на микросервисной архитектуре. При этом я понимал, что работа с микросервисами — это работа с актуальным стеком технологий в мире Java. И если ты не работаешь с микросервисами, то ты вроде как не имеешь необходимой квалификации для большинства вакансий на рынке труда. По крайней мере, если судить по самим вакансиям.

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

Читать статью


Наш канал в Макс 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥1
Как избежать 7 критических ошибок при переходе на микросервисы

Микросервисы обещают масштабирование и независимость команд, но чаще ломают систему медленнее монолита. Почему?

В статье разбираем семь архитектурных ошибок, которые можно встретить в реальных системах: выбор по моде, shared database, игнорирование network latency, операционная сложность на потом, слишком мелкая декомпозиция, отсутствие стратегии consistency, недооценка сроков миграции.

Читать статью


Наш канал в Макс 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2
Как устроена транскрипция в Jitsi Meet: Jigasi, SIP и путь до EMR

Когда мы проектировали пайплайн автоматического заполнения EMR по итогам видеоконсультаций, исходная гипотеза была простой: Jitsi Meet — open source, документация есть, значит, подключить бота и получить транскрипт — задача на пару дней. На практике именно этот слой занял непропорционально много времени относительно своей "очевидности".

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

Читать статью


Наш канал в Макс 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Сердце облачной Java: проверяем Quarkus

Java уже какое-то время витает в облаках. Всё больше приложений и сервисов переходят на облачную архитектуру. Мы решили не отставать и проверить один из главных проектов для разработки производительных облачных приложений на Java — Quarkus.

Читать статью


Наш канал в Макс 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
HttpClient в Spring 7: замена FeignClient или нет?

Последние годы FeignClient и RestTemplate были де-факто стандартом для вызова внешних API в Spring. Но теперь появился нативный Http Interface Client — и я решил проверить, можно ли им заменить Feign без потери удобства.

Читать статью


Наш канал в Макс 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51🔥1
Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь

Стандартные алгоритмы даунсемплинга хорошо работают с линейными графиками. На scatter они теряют до 60% визуально значимых данных. Показываем, как двумерное прореживание решает задачу, которую одномерные методы фундаментально не могут.

Читать статью

Наш канал в MAX 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Вайб-код для настоящих инженеров: старые практики в новых реалиях

Итак, вопреки утверждениям скептиков (среди которых не так давно был и я) ИИ-разработка с двух ног влетела в настоящую промышленную эксплуатацию, и мем уже совсем не тот: не джун теперь роняет прод, а нейросеть убивает статистику доступности гитхаба, амазона, Cloudflare и даже самой мекки вайб-кодинга — сервисов Anthropic и OpenAI.

Читать статью

Наш канал в MAX 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise

Что делать, если синхронные REST-вызовы превращают ваши микросервисы в карточный домик? Пора вспомнить проверенные временем паттерны обмена сообщениями. В этой статье разбираем архитектуру Pipes and Filters, Content-Based Router и Idempotent Receiver — те самые кирпичики, на которых держатся надёжные системы. Схемы, best practices для проектирования устойчивых интеграций для Enterprise-разработки.

Читать статью

Наш канал в MAX 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
AI Gateway для микросервисов: гайд по интеграции LLM в 2026

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

В статье разбираем, как спроектировать AI Gateway — инфраструктурный слой для централизованной маршрутизации, кеширования, лимитов, observability и отказоустойчивости при работе с AI‑моделями.

Читать статью


Полезные ресурсы по Java 👩‍💻| Наш канал в MAX 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥21
WebFlux vs Virtual Threads: что происходит при 2000 RPS

Всем привет! Меня зовут Александр, и сегодня я расскажу о результатах перевода учебного проекта со Spring WebFlux и Netty на Spring MVC и Tomcat с виртуальными потоками и проверки обоих вариантов под нагрузкой в 2000rps.

Читать статью

Полезные ресурсы по Java 👩‍💻| Наш канал в MAX 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥51👍1
IDE понимает ваш код. AI-агент — нет. Это можно исправить

Ваша IDE знает о проекте всё — иерархии типов, ссылки между модулями, исходники библиотек, ошибки компиляции. AI-агент ничего из этого не видит и вынужден грепать код и логи. За один выходной можно написать плагин и CLI, которые выставят семантику IDE наружу — и агент получит те же суперсилы, что и вы. В статье — как это сделано на примере Eclipse и JDT, но подход переносим на любую IDE.

Читать статью


Полезные ресурсы по Java 👩‍💻| Наш канал в MAX 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
C4 для системного аналитика: как навести порядок в микросервисном хаосе

Когда вокруг десяток микросервисов, документация устарела, а на согласование архитектурного решения есть два дня, обсуждение быстро погружается в детали и теряет общую картину.

На примере внедрения кэширования в API‑шлюз разберём, как системному аналитику применять C4-модель: пройти от границ системы до зон ответственности внутри сервиса, зафиксировать сценарии сбоев и сохранить архитектуру в виде кода.

Читать статью


Полезные ресурсы по Java 👩‍💻| Наш канал в MAX 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
Проблема фантомной записи: почему ваша реализация идемпотентности незаметно теряет данные

В проде бывает так, что одна и та же операция часто повторяется: клиент не дождался ответа и ретраит, балансер порвал соединение, очередь переиграла сообщение. Вспоминаем про идемпотентность - это правило «повтор не должен создавать новый платёж/заказ».
Чтобы отличать повтор от новой операции, используют idempotency key (ключ идемпотентности). Это обычная уникальная строка-идентификатор, которую клиент или апстрим отправляет вместе с запросом (часто в заголовке Idempotency-Key). Сервис сохраняет этот ключ у себя и связывает с результатом операции.
Далее приходит запрос с тем же ключом - сервис не выполняет бизнес-действие второй раз, а дедуплицирует на основе ключа идемпотентности. Но так ли всё просто? Многолетний опыт анализа инцидентов показал, что на практике большое количество систем всё же регулярно допускают дублирования, хотя делали всё по методичке.

Читать статью


Полезные ресурсы по Java 👩‍💻| Наш канал в MAX 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2