<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Все статьи подряд / Java / Хабр]]></title>
    <link>https://habr.com/ru/hubs/java/articles/</link>
    <description><![CDATA[Java – объектно-ориентированный язык программирования]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Thu, 23 Apr 2026 11:01:13 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Проектирование иерархии моделей данных в многослойном приложении]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1026944/</guid>
      <link>https://habr.com/ru/articles/1026944/?utm_campaign=1026944&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/9d2/dc5/46f/9d2dc546f7057500c09f84e5116e71e7.png" /><p>При проектировании многослойной архитектуры приложения одной из главных задач является формирование набора моделей данных каждого слоя и определение порядка взаимодействия моделей данных между собой. Под взаимодействием понимаются потоки данных, передаваемые из одной модели данных в другую. В общем случае взаимодействие между моделями данных двунаправленное.</p><p>Рассмотрим модель данных application model, которая потребуется в дальнейшем изложении и которая используется в паттерне CQRS.</p><p>Реализация архитектурного паттерна CQRS, используемого в приложении для  функционала application logic, представляет собой набор классов наследников базовых классов QueryHandler / CommandHandler и набор классов данных, которые являются наследниками базовых классов Query / Command. Классы наследники Query / Command представляют собой модель данных application logic. Такую модель данных логично назвать application model.</p><p>Используя application model и другие известные модели данных слоёв приложения можно построить полную схему моделей данных многослойной архитектуры приложения.</p> <a href="https://habr.com/ru/articles/1026944/?utm_campaign=1026944&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 23 Apr 2026 09:18:11 GMT</pubDate>
      <dc:creator><![CDATA[AlexViolin]]></dc:creator>
      
      <category><![CDATA[многослойная архитектура приложения]]></category><category><![CDATA[модель данных]]></category><category><![CDATA[mvvm]]></category><category><![CDATA[c#]]></category><category><![CDATA[java]]></category><category><![CDATA[c++]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Нагрузочное тестирование с Apache JMeter: Best Practices]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/otus/articles/1022194/</guid>
      <link>https://habr.com/ru/companies/otus/articles/1022194/?utm_campaign=1022194&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/222/b43/af1/222b43af1a385fe518ea2c98225ba9ef.png" /><p>Apache JMeter — не просто инструмент. В этой статье разберем, как получать от него реальную пользу. Вы узнаете, почему 80% отчётов о нагрузке бесполезны, как настроить распределённый тест и анализировать не среднее значение, а процентили. Полный гайд от первого HTTPS-скрипта до информативного HTML-отчёта и Best Practices.</p> <a href="https://habr.com/ru/articles/1022194/?utm_campaign=1022194&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 23 Apr 2026 06:15:53 GMT</pubDate>
      <dc:creator><![CDATA[sproshchaev (OTUS)]]></dc:creator>
      
      <category><![CDATA[java]]></category><category><![CDATA[Нагрузочное тестирование]]></category><category><![CDATA[Apache JMeter]]></category><category><![CDATA[Тестирование производительности]]></category><category><![CDATA[Highload]]></category><category><![CDATA[devops]]></category><category><![CDATA[Best Practices]]></category><category><![CDATA[Performance Testing]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Kotlin для новичков: строки и коллекции — полный гайд]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/otus/articles/1022148/</guid>
      <link>https://habr.com/ru/companies/otus/articles/1022148/?utm_campaign=1022148&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/cec/c4f/f0e/cecc4ff0efa762f90c452d1f5ad60a32.png" /><p>Продолжаем серию «Kotlin для новичков». Сегодня разбираем фундамент, без которого не обходится ни одно приложение: строки и коллекции. Как правильно резать подстроки, форматировать JSON, чем&nbsp;<code>List</code>&nbsp;отличается от&nbsp;<code>MutableList</code>&nbsp;и зачем&nbsp;<code>enum</code>&nbsp;в Kotlin круче, чем в Java. Заглядывайте, будет полезно!</p> <a href="https://habr.com/ru/articles/1022148/?utm_campaign=1022148&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Открыть гайд</a>]]></description>
      
      <pubDate>Wed, 22 Apr 2026 18:20:36 GMT</pubDate>
      <dc:creator><![CDATA[sproshchaev (OTUS)]]></dc:creator>
      
      <category><![CDATA[kotlin]]></category><category><![CDATA[коллекции Kotlin]]></category><category><![CDATA[строки Kotlin]]></category><category><![CDATA[List MutableList]]></category><category><![CDATA[enum Kotlin]]></category><category><![CDATA[основы программирования]]></category><category><![CDATA[туториал Kotlin]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Circuit Breaker в микросервисах: как защитить систему от каскадных отказов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1025394/</guid>
      <link>https://habr.com/ru/articles/1025394/?utm_campaign=1025394&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/231/d86/e28/231d86e28badc8ee2e7eaf42a6d46fcc.png" /><p><strong>Представьте: сервис А звонит сервису Б, а тот зависает. Сервис А ждёт, занимает потоки, не освобождает ресурсы. Потом к нему приходит другой сервис — и тоже встаёт в очередь. Так один сбой разрастается по всей системе, как снежный ком. Этот эффект называется каскадным отказом.</strong></p><p><strong>Паттерн Circuit Breaker (предохранитель) решает эту проблему. В статье разбираем его на примере ассистента HR с зонтиком, показываем, как настроить Resilience4j, и делимся, какие ошибки стоит (а какие не стоит) учитывать в статистике.</strong></p><p>&nbsp;<strong>Описание</strong></p><p>Паттерн Circuit Breaker (предохранитель) занимает важное место среди паттернов архитектуры приложений, особенно в микросервисных системах.</p><p><strong>В чем его суть</strong>. Представим сервис <strong>А</strong>, который обращается к сервису <strong>Б</strong>. Сервис Б по каким-то причинам начинает плохо себя вести: долго отвечать на запросы или отвечать ошибкой — например, потерял соединение с базой данных. Тогда начинает «страдать» сервис <strong>А:</strong> он вынужден долго ждать на каждом запросе, занимая ресурсы — свободные потоки, соединения с БД, удерживая транзакции открытыми.</p><p>Проблема распространяется и умножается на всю систему. У сервиса <strong>А</strong> занимается всё больше потоков, которые ничего не делают, а просто ждут. Если будут заняты все потоки, сервис <strong>А</strong> станет полностью неработоспособен. Так проблема разрастается по цепочке — этот эффект называется каскадным отказом (cascading failure).</p><p>Чтобы решить проблему, сервис <strong>А</strong> должен иметь защитный механизм, который определяет, что сервис <strong>Б</strong> сейчас в аварийном состоянии, и временно не обращаться к нему. Этот механизм и называется Circuit Breaker (предохранитель).<br>&nbsp;</p> <a href="https://habr.com/ru/articles/1025394/?utm_campaign=1025394&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 22 Apr 2026 10:30:15 GMT</pubDate>
      <dc:creator><![CDATA[true_engineering]]></dc:creator>
      
      <category><![CDATA[circuit breaker]]></category><category><![CDATA[микросервисы]]></category><category><![CDATA[отказоустойчивость]]></category><category><![CDATA[java]]></category><category><![CDATA[Архитектура]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] REST умер? Почему Java-разработчики уходят в GraphQL]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/spring_aio/articles/1026130/</guid>
      <link>https://habr.com/ru/companies/spring_aio/articles/1026130/?utm_campaign=1026130&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/ab2/650/8d4/ab26508d43869a2e30055e6e501d63c5.png" /><p><strong>Один экран</strong> в приложении, а на бэкенде <strong>несколько REST-вызовов</strong>, куча эндпоинтов и ответы, где 90% полей не используются. Теряем в скорости, усложняется фронтенд и приходится версионировать контракт, когда меняется формат данных.</p><p><strong>GraphQL</strong> предлагает <strong>другой подход</strong>: один API-эндпоинт и запрос, в котором клиент сам указывает, какие поля ему нужны. Это <strong>снижает overfetching</strong>, <strong>уменьшает количество сетевых затрат и упрощает договоренности </strong>между фронтом и бэком за счет схемы как явного контракта и живой документации.</p><p>В новом переводе от команды <a href="https://t.me/+acrI2N6q080wZjM6">Spring АйО</a> разберем, где <strong>GraphQL реально помогает</strong>: как уйти от разрастания эндпоинтов, как держать контракт синхронизированным и что делать с типичными проблемами производительности и наблюдаемости, когда данные собираются из разных источников.</p> <a href="https://habr.com/ru/articles/1026130/?utm_campaign=1026130&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 21 Apr 2026 13:19:02 GMT</pubDate>
      <dc:creator><![CDATA[spring_aio (Spring АйО)]]></dc:creator>
      
      <category>java</category><category>kotlin</category><category>spring</category><category>graphql</category><category>api</category><category>query</category><category>database</category><category>системное программирование</category><category>backend</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Неизменяемая архитектура. Практическая проверка кодом. Версия 1, начало]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1026078/</guid>
      <link>https://habr.com/ru/articles/1026078/?utm_campaign=1026078&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/943/22a/be9/94322abe9130c48f25fefedd34912f5f.jpeg" /><p>«<a href="https://lkml.org/lkml/2000/8/25/132" rel="noopener noreferrer nofollow">Talk is cheap. Show me the code.</a>»</p><p>Недавно мне в руки попала книга «Искусство неизменяемой архитектуры: теория и практика управления данными в распределенных системах». В ней описаны довольно радикальные, но логичные подходы к проектированию: полный отказ от UPDATE и DELETE в пользу INSERT, идентификация сущностей через хеш-суммы и построение распределенных систем без боли.</p><p>Чтобы не быть голословным и проверить, работают ли эти концепции в реальном коде, а не только в теории, я написал небольшой тестовый проект. Это <strong>не продакшен-решение</strong>, а скорее полигон для проверки идей.</p><p>В этой статье разберем, как выглядит REST-сервис на Kotlin + Spring Boot, живущий по законам неизменяемости, и к каким результатам это привело.</p> <a href="https://habr.com/ru/articles/1026078/?utm_campaign=1026078&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 21 Apr 2026 11:27:46 GMT</pubDate>
      <dc:creator><![CDATA[VOrlyanskiy]]></dc:creator>
      
      <category><![CDATA[неизменяемая архиектура]]></category><category><![CDATA[архитектура приложений]]></category><category><![CDATA[бизнес-процессы]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как (не) перевернуть строку, или Ох, уж этот Unicode]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/nspk/articles/1024668/</guid>
      <link>https://habr.com/ru/companies/nspk/articles/1024668/?utm_campaign=1024668&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/b1d/549/df0/b1d549df0664979de997db2905412f09.png" /><p>Это текстовая версия доклада с Java Rock Star Meetup, с которым выступал <a href="https://t.me/pro_grevy">Александр Ланцов</a> — ведущий разработчик Мир Plat.Form. Если вы больше любите смотреть видео, то смотрите запись доклада на <a href="https://youtu.be/adSJOCuN7Z4?si=39r5rcEsU8UTAMo7">YouTube</a> или <a href="https://vkvideo.ru/video-195063478_456239190">VK Видео</a>.</p> <a href="https://habr.com/ru/articles/1024668/?utm_campaign=1024668&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее 🔍</a>]]></description>
      
      <pubDate>Tue, 21 Apr 2026 11:11:30 GMT</pubDate>
      <dc:creator><![CDATA[mirplatform (Мир Plat.Form (НСПК), Axiom JDK)]]></dc:creator>
      
      <category><![CDATA[java]]></category><category><![CDATA[unicode]]></category><category><![CDATA[utf-8]]></category><category><![CDATA[utf-16]]></category><category><![CDATA[кодировки]]></category><category><![CDATA[обработка строк]]></category><category><![CDATA[emoji]]></category><category><![CDATA[суррогатные пары]]></category><category><![CDATA[графемные кластеры]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как упаковать React и три Java-сервиса в один .exe с помощью Electron и ничего не сломать]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/axenix/articles/1025966/</guid>
      <link>https://habr.com/ru/companies/axenix/articles/1025966/?utm_campaign=1025966&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/dd0/fe3/ca5/dd0fe3ca510f887cfa98b1088ba11981.png" /><p>Всем привет! Меня зовут Евгений Оселедец, я ведущий разработчик в компании Axenix. В этой статье расскажу, как мы упаковали <strong>React </strong>и <strong>Java </strong>в единое автономное desktop-приложение с помощью <strong>Electron </strong>для <strong>Windows</strong>, <strong>Linux </strong>и <strong>macOS </strong>— без <strong>Docker</strong>, без предустановленной <strong>Java </strong>у пользователя и без необходимости интернет-соединения. Расскажу, с какими техническими вызовами мы столкнулись и какие решения сработали на практике.</p> <a href="https://habr.com/ru/articles/1025966/?utm_campaign=1025966&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 21 Apr 2026 10:06:41 GMT</pubDate>
      <dc:creator><![CDATA[ojenya (Axenix (ex-Accenture))]]></dc:creator>
      
      <category><![CDATA[react]]></category><category><![CDATA[electron]]></category><category><![CDATA[java]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как организовать балансировку нагрузки Backend приложений Java Spring Cloud + Kubernetes]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/rshb/articles/1025716/</guid>
      <link>https://habr.com/ru/companies/rshb/articles/1025716/?utm_campaign=1025716&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f09/ee9/dcc/f09ee9dcc920c6b9801ff1d95c60fa9f.png" /><p>Привет, Хабр! Я Юрий Дергач, я возглавляю ЦК DevOps и релизного управления в РСХБ. Мы с командой развиваем инфраструктуру и автоматизируем разработку продуктов компании. При внедрении наших проектов группы «Экосистема Свое», основанных на стеке Java Spring, в Kubernetes, возникли вопросы, связанные с различными методами балансировки нагрузки между микросервисами.  </p><p>В этой статье мы обсудим два основных подхода к балансировке нагрузки между Backend-компонентами приложений на стеке Java Spring Cloud в Kubernetes. Мы также рассмотрим преимущества и недостатки каждого метода.</p> <a href="https://habr.com/ru/articles/1025716/?utm_campaign=1025716&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 21 Apr 2026 06:40:54 GMT</pubDate>
      <dc:creator><![CDATA[ydergach (РСХБ.Цифра (Россельхозбанк))]]></dc:creator>
      
      <category><![CDATA[Микросервисы]]></category><category><![CDATA[Java Spring]]></category><category><![CDATA[kubernetes]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Современный дата-стек: потоковая система из «LEGO»]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022970/</guid>
      <link>https://habr.com/ru/articles/1022970/?utm_campaign=1022970&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/bfd/cd7/e83/bfdcd7e830aed68720bdd15c28c0504e.png" /><p>Вы слышали о <strong>Kafka</strong>, <strong>MQTT</strong>, <strong>S3</strong>, <strong>Iceberg</strong>, <strong>Trino</strong>, <strong>PostgreSQL</strong>, <strong>Redis</strong> и <strong>Flink</strong>? А насколько хорошо вы знаете эти технологии? По каждой из них написаны огромные книги («Kafka: The Definitive Guide», около 800 страниц), и каждый день выходят новые публикации про тонкости.</p><p>Эта статья про другое.</p><p>Вместо внутренностей движков и законов распределённых систем посмотрим на эти технологии как на кубики LEGO: какую роль каждая из них играет в архитектуре и как они стыкуются друг с другом. Это будет практический туториал: начнём с минимальной конфигурации и постепенно соберём сложную систему. Статью можно просто читать как обзор архитектуры, а можно запускать каждую конфигурацию и изучать её в деталях. Для этого достаточно <strong>Git</strong>, <strong>Git LFS</strong> и <strong>Docker Compose</strong>. Всё запускается в контейнерах. Даже примеры на <strong>Java</strong> собираются через <em>Docker multi-stage build</em>.</p> <a href="https://habr.com/ru/articles/1022970/?utm_campaign=1022970&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 21 Apr 2026 01:37:48 GMT</pubDate>
      <dc:creator><![CDATA[mirongaskov]]></dc:creator>
      
      <category><![CDATA[Kafka]]></category><category><![CDATA[Flink]]></category><category><![CDATA[Redis]]></category><category><![CDATA[Iceberg]]></category><category><![CDATA[Java]]></category><category><![CDATA[Docker]]></category><category><![CDATA[docker-compse]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Echo Layer: как я пытался встроить приватность в обычную клавиатуру]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1025808/</guid>
      <link>https://habr.com/ru/articles/1025808/?utm_campaign=1025808&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/d23/3fc/86e/d233fc86e2e686978ed8efd503cfc7ea.png" /><p>Привет Хабр! Меня зовут Артур Валиев, и я разработчик небольшого мобильного приложения с&nbsp;названием «Echo Layer».</p><p>Меня давно не&nbsp;отпускала одна мысль: почти все разговоры о&nbsp;приватной переписке в&nbsp;какой‑то момент упираются не&nbsp;в&nbsp;шифрование, не&nbsp;в&nbsp;криптографию, не&nbsp;в&nbsp;архитектуру, а&nbsp;в&nbsp;банальную человеческую инерцию. Можно сколько угодно строить красивую систему, можно делать open source, end‑to‑end encryption, писать про&nbsp;zero knowledge и отсутствие серверных логов, но&nbsp;потом ты возвращаешься в&nbsp;реальную жизнь и видишь, что&nbsp;люди всё равно сидят там, где им удобно. В&nbsp;Telegram, в&nbsp;WhatsApp, в&nbsp;VK, сейчас уже и MAX, в&nbsp;корпоративных чатах, в&nbsp;почте, в&nbsp;комментариях, где угодно. И если для&nbsp;приватности нужно сначала всех пересадить в&nbsp;новое приложение, то задача почти обречена.</p><p>Именно в&nbsp;этот момент у&nbsp;меня и сместился фокус. Я перестал думать о&nbsp;мессенджере как&nbsp;о&nbsp;конечном продукте. Мне стало интереснее другое: а&nbsp;можно&nbsp;ли не&nbsp;строить новый канал связи, а&nbsp;встроить приватный слой поверх уже существующих каналов? Не&nbsp;просить человека менять привычки, не&nbsp;ломать его сценарий общения, не&nbsp;заставлять его уговаривать собеседника «перейти вот сюда», а&nbsp;аккуратно встать между пользователем и текстом. Потому что, если честно, в&nbsp;большинстве случаев мессенджер&nbsp;— это просто оболочка. Внутри всё равно есть текст, который пользователь написал, и текст, который приложение потом отправило. Значит, если контролировать текст до&nbsp;отправки, можно контролировать довольно много.</p><p>Так Echo Layer и появился. Не&nbsp;как «новый безопасный чат», а&nbsp;как&nbsp;попытка превратить сам ввод текста в&nbsp;место, где может жить приватность.</p> <a href="https://habr.com/ru/articles/1025808/?utm_campaign=1025808&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 20 Apr 2026 19:23:47 GMT</pubDate>
      <dc:creator><![CDATA[arturwise]]></dc:creator>
      
      <category><![CDATA[разработка приложений]]></category><category><![CDATA[java]]></category><category><![CDATA[криптография]]></category><category><![CDATA[мессенджеры]]></category><category><![CDATA[клавиатура]]></category><category><![CDATA[открытый исходный код]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Эксперименты с распараллеливанием Java-автотестов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/rostelecom/articles/1025746/</guid>
      <link>https://habr.com/ru/companies/rostelecom/articles/1025746/?utm_campaign=1025746&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/e1a/6fc/11d/e1a6fc11d2deefd52284c11ea6fb0d19.png" /><p>За годы работы сначала разработчиком, а потом автоматизатором сталкивался с необходимостью запускать тесты параллельно. Действовал в основном интуитивно и шёл строго по документации. Недавно закралась мысль поставить серию экспериментов и посмотреть фактам в глаза. Результаты оказались предсказуемые, но тем не менее интересными.</p><p>Эта статья для тех, кто делает первые шаги в распараллеливании тестов на Java. Будет полезна как автотестерам, так и начинающим разработчикам.</p><p>Будем анализировать выводы полученные в ходе эксперимента, а не голую теорию из документации. После прочтения сможете повторить все самостоятельно как на готовом примере из статьи, так и на своих проектах.</p> <a href="https://habr.com/ru/articles/1025746/?utm_campaign=1025746&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 20 Apr 2026 16:08:10 GMT</pubDate>
      <dc:creator><![CDATA[ErikNas (Ростелеком)]]></dc:creator>
      
      <category><![CDATA[автотесты]]></category><category><![CDATA[параллельные тесты]]></category><category><![CDATA[ускорение тестирования]]></category><category><![CDATA[junit5]]></category><category><![CDATA[gradle]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Легаси и минус 99% времени: пошаговый разбор оптимизации]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1024814/</guid>
      <link>https://habr.com/ru/articles/1024814/?utm_campaign=1024814&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/736/54c/bf0/73654cbf01ea69a200650839eb044e61.png" /><p>Всем привет! Меня зовут Михаил, я главный эксперт в ОТП Банке.</p><p>Думаю, многие из вас сталкивались с легаси, которое нужно дорабатывать и оптимизировать. Сегодня хочу поделиться реальным кейсом как мы ускорили отправку данных в смежную систему.</p><p>Разберем всё по шагам, с замерами производительности. Поехали!</p> <a href="https://habr.com/ru/articles/1024814/?utm_campaign=1024814&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Смотрим вместе</a>]]></description>
      
      <pubDate>Mon, 20 Apr 2026 10:20:34 GMT</pubDate>
      <dc:creator><![CDATA[MishaBucha]]></dc:creator>
      
      <category><![CDATA[java]]></category><category><![CDATA[kotlin]]></category><category><![CDATA[spring]]></category><category><![CDATA[spring boot]]></category><category><![CDATA[оптимизация]]></category><category><![CDATA[оптимизация кода]]></category><category><![CDATA[многопоточность]]></category><category><![CDATA[postgresql]]></category><category><![CDATA[hibernate]]></category><category><![CDATA[legacy]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Playwright vs Selenium на Java: что выбрать для автотестов в 2026 году]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1020774/</guid>
      <link>https://habr.com/ru/articles/1020774/?utm_campaign=1020774&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/040/8b4/19d/0408b419d1e1202eb62ef233a1481b2e.png" /><p>Playwright или Selenium на Java — что выбрать для автотестов в 2026 году? Разбираю историю инструментов, различия в локаторах, ожиданиях, стабильности, стоимости поддержки и объясняю, в каких сценариях каждый из них лучше.</p> <a href="https://habr.com/ru/articles/1020774/?utm_campaign=1020774&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 20 Apr 2026 07:01:07 GMT</pubDate>
      <dc:creator><![CDATA[makurea]]></dc:creator>
      
      <category><![CDATA[тестирование]]></category><category><![CDATA[qa]]></category><category><![CDATA[qa automation]]></category><category><![CDATA[qa testing]]></category><category><![CDATA[qa engineer]]></category><category><![CDATA[qa automation engineer]]></category><category><![CDATA[java]]></category><category><![CDATA[selenium]]></category><category><![CDATA[playwright]]></category><category><![CDATA[web-testing]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Cказ о том, как мы с Oracle на PostgreSQL переехали]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1025336/</guid>
      <link>https://habr.com/ru/articles/1025336/?utm_campaign=1025336&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/3ea/498/b62/3ea498b6242a44cf74780f5d2272c533.png" /><p>Привет, Хабр! Меня зовут Даша Александрова, я Java‑разработчик. Хочу поделиться опытом миграции данных из&nbsp;Oracle в&nbsp;PostgreSQL без&nbsp;простоя сервисов. </p><p>Причина миграции&nbsp;— импортозамещение. </p><p>Теперь немного про&nbsp;сам проект. В&nbsp;его основе&nbsp;— микросервисная архитектура на&nbsp;Java 11/17&nbsp;и Spring Boot 2/3. В&nbsp;качестве основной базы данных использовалась Oracle с&nbsp;несколькими схемами. В&nbsp;коде сочетаются нативные SQL‑запросы и Hibernate, вся бизнес‑логика живет на&nbsp;уровне приложения&nbsp;— без&nbsp;процедур, триггеров и другой логики в&nbsp;базе. Идентификаторы генерируются через sequence. Проект активно развивается, регулярно выпускаются релизы. Система ориентирована на&nbsp;клиентские приложения&nbsp;— мобильное и веб, при&nbsp;этом нагрузка остается умеренной и не&nbsp;относится к&nbsp;highload‑сценариям.</p><p>Ключевое нефункциональное требование&nbsp;— <strong>выполнить миграцию без&nbsp;простоя системы и без&nbsp;заметного влияния на&nbsp;пользователей</strong>.</p><p>Может возникнуть логичный вопрос: если такие миграции уже делались не&nbsp;раз, почему просто не&nbsp;взять готовое решение?&nbsp;<strong>На&nbsp;практике универсального подхода не&nbsp;существует.</strong></p><p>Где‑то допустим простой на&nbsp;несколько часов, где‑то&nbsp;— нет. В&nbsp;одних системах хватает простого переноса, в&nbsp;других приходится использовать сложные стратегии вроде двойной записи. Многие статьи подробно разбирают инструменты, но&nbsp;их применение в&nbsp;конкретном проекте&nbsp;— это отдельная инженерная задача. К&nbsp;тому&nbsp;же у&nbsp;каждой системы есть свои ограничения и нюансы. Поэтому дальше я разберу конкретный кейс и те решения, которые&nbsp;были приняли по&nbsp;ходу миграции.</p> <a href="https://habr.com/ru/articles/1025336/?utm_campaign=1025336&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 19 Apr 2026 17:15:20 GMT</pubDate>
      <dc:creator><![CDATA[dashaalexandrova]]></dc:creator>
      
      <category><![CDATA[java]]></category><category><![CDATA[postgresql]]></category><category><![CDATA[debezium]]></category><category><![CDATA[cdc]]></category><category><![CDATA[oracle]]></category><category><![CDATA[kafkaconnect]]></category><category><![CDATA[миграция базы данных]]></category><category><![CDATA[миграция данных]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Скучный Рефакторинг: борьба с искушениями]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1025232/</guid>
      <link>https://habr.com/ru/articles/1025232/?utm_campaign=1025232&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/fb9/d96/e3e/fb9d96e3e3cc6314653611da59c2afad.jpg" /><p>Рефакторинг должен быть скучный и надежный. Надо держаться от искушения обновить библиотеку, починить баг, улучшить стиль. Под катом разбор почему именно такой путь сможет вытянуть тяжелый legacy рефакторинг, а шаг вправо и влево ведет к откату релиза.</p> <a href="https://habr.com/ru/articles/1025232/?utm_campaign=1025232&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 19 Apr 2026 12:15:39 GMT</pubDate>
      <dc:creator><![CDATA[rurikovich]]></dc:creator>
      
      <category><![CDATA[рефакторинг]]></category><category><![CDATA[legacy]]></category><category><![CDATA[монолит]]></category><category><![CDATA[микросервис]]></category><category><![CDATA[feature flag]]></category><category><![CDATA[откат]]></category><category><![CDATA[неявный контракт]]></category><category><![CDATA[unit-тесты]]></category><category><![CDATA[Scala]]></category><category><![CDATA[техдолг]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как я стал учителем за 5 минут: BAC в электронном дневнике]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1025016/</guid>
      <link>https://habr.com/ru/articles/1025016/?utm_campaign=1025016&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Что делать, если региональное приложение для школьников написано настолько лениво, что безопасность в нём — это просто декорация?</p><p>В этой статье я расскажу историю одного «многосерийного» исследования, в котором было всё:</p><p>Реверс-инжиниринг APK и поиск  ключей AES (спойлер: они лежат прямо в коде).</p><p>Бюрократический пинг-понг между Минцифры, Роскомнадзором и разработчиками, которые вместо реальных исправлений лепят костыли.</p><p>И финальный аккорд: как с помощью Arch Linux, Waydroid и одной правки в XML-конфиге превратить обычный аккаунт ученика в полноценный профиль учителя с доступом к журналам, оценкам и кнопкам редактирования всей школы.</p><p>Добро пожаловать под капот системы, где сервер верит клиенту на слово.</p> <a href="https://habr.com/ru/articles/1025016/?utm_campaign=1025016&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Разочароваться в госсофте для детей</a>]]></description>
      
      <pubDate>Sat, 18 Apr 2026 17:18:29 GMT</pubDate>
      <dc:creator><![CDATA[vodolaz338]]></dc:creator>
      
      <category><![CDATA[электронный дневник]]></category><category><![CDATA[госуслуги]]></category><category><![CDATA[реверс-инжиниринг]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[WebFlux vs Virtual Threads: что происходит при 2000 RPS]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1024936/</guid>
      <link>https://habr.com/ru/articles/1024936/?utm_campaign=1024936&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/d75/69e/075/d7569e075c82ec0f3379a8b3984dbdfc.png" /><p>Всем привет! Меня зовут Александр, и сегодня я расскажу о результатах перевода учебного проекта со Spring WebFlux и Netty на Spring MVC и Tomcat с виртуальными потоками и проверки обоих вариантов под нагрузкой в 2000rps. В качестве подопытного будет выступать система микросервисов, разработанная в рамках курса&nbsp;<a href="https://javaops.ru/view/cloudjava" rel="noopener noreferrer nofollow">CloudJava</a>. </p> <a href="https://habr.com/ru/articles/1024936/?utm_campaign=1024936&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 18 Apr 2026 13:38:32 GMT</pubDate>
      <dc:creator><![CDATA[aasmc]]></dc:creator>
      
      <category><![CDATA[Java]]></category><category><![CDATA[virtual threads]]></category><category><![CDATA[webflux]]></category><category><![CDATA[spring-boot]]></category><category><![CDATA[netty]]></category><category><![CDATA[tomcat]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Опыт разработчика как экономика внимания]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/axiomjdk/articles/1023926/</guid>
      <link>https://habr.com/ru/companies/axiomjdk/articles/1023926/?utm_campaign=1023926&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f21/fc0/d64/f21fc0d64aa05a672e4b3ab28cce71d1.jpg" /><p>Привет, Хабр! <br><br>Почему инженеры хотят делать новое, а неделя уходит на сопровождение, алерты и переключение контекстов? Поводом для этой статьи стали два материала, которые неожиданно сошлись в одной точке: доклад Романа Елизарова про опыт разработчика и отчет Chainguard Engineering Reality Report 2026. Мы сопоставили взгляд сильного практика и международные данные, чтобы понять, куда на самом деле утекает внимание инженерных команд и почему DX сегодня — это уже не про удобство, а про экономику внимания.</p> <a href="https://habr.com/ru/articles/1023926/?utm_campaign=1023926&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 16 Apr 2026 08:03:22 GMT</pubDate>
      <dc:creator><![CDATA[nejava (Axiom JDK)]]></dc:creator>
      
      <category><![CDATA[Axiom JDK]]></category><category><![CDATA[axiomjdk]]></category><category><![CDATA[chainguard]]></category><category><![CDATA[java]]></category><category><![CDATA[developer experience]]></category><category><![CDATA[dx]]></category><category><![CDATA[роман елизаров]]></category><category><![CDATA[митап]]></category><category><![CDATA[java rock star meetup]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Где хранить код? Сравнение GitHub, GitLab и Bitbucket]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/otus/articles/1022166/</guid>
      <link>https://habr.com/ru/companies/otus/articles/1022166/?utm_campaign=1022166&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/b8c/d63/960/b8cd63960fbae2c940d8441d879b2046.jpg" /><p>GitHub, GitLab или Bitbucket — куда податься начинающему разработчику в 2026? Казалось бы, какая разница — Git везде одинаковый. Но когда дело доходит до первого пет-проекта, портфолио или стартапа на троих, выбор платформы решает всё: от скорости сборки до шансов быть замеченным рекрутером.</p><p>В этой статье — сравнение лимитов, цен и скрытых фич. Разберём реальные сценарии, таблицу с актуальными данными на апрель 2026.</p> <a href="https://habr.com/ru/articles/1022166/?utm_campaign=1022166&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 16 Apr 2026 07:30:15 GMT</pubDate>
      <dc:creator><![CDATA[sproshchaev (OTUS)]]></dc:creator>
      
      <category><![CDATA[devops]]></category><category><![CDATA[github]]></category><category><![CDATA[gitlab]]></category><category><![CDATA[bitbucket]]></category><category><![CDATA[cicd]]></category><category><![CDATA[начинающим разработчикам]]></category><category><![CDATA[инфраструктура]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1024028/</guid>
      <link>https://habr.com/ru/articles/1024028/?utm_campaign=1024028&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Сегодня LLM — модный инструмент, завтра — обязательный компонент инфраструктуры. Мы разберём, какие уязвимости у языковых моделей есть уже сейчас, почему вокруг guardrails формируется целый стек технологий и как разработчикам влиться в эту волну, пока она только набирает высоту</p> <a href="https://habr.com/ru/articles/1024028/?utm_campaign=1024028&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 16 Apr 2026 06:48:00 GMT</pubDate>
      <dc:creator><![CDATA[Ratila]]></dc:creator>
      
      <category><![CDATA[llm]]></category><category><![CDATA[security]]></category><category><![CDATA[java]]></category><category><![CDATA[ai]]></category><category><![CDATA[open-source]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/otus/articles/1022190/</guid>
      <link>https://habr.com/ru/companies/otus/articles/1022190/?utm_campaign=1022190&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/3a4/2f0/833/3a42f08339fe4ece60063a103469d57a.png" /><p>Что делать, если синхронные REST-вызовы превращают ваши микросервисы в карточный домик? Пора вспомнить проверенные временем паттерны обмена сообщениями. В этой статье разбираем архитектуру Pipes and Filters, Content-Based Router и Idempotent Receiver — те самые кирпичики, на которых держатся надёжные системы. Схемы, best practices для проектирования устойчивых интеграций для Enterprise-разработки.</p> <a href="https://habr.com/ru/articles/1022190/?utm_campaign=1022190&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 15 Apr 2026 17:50:29 GMT</pubDate>
      <dc:creator><![CDATA[sproshchaev (OTUS)]]></dc:creator>
      
      <category><![CDATA[микросервисы]]></category><category><![CDATA[kafka]]></category><category><![CDATA[обмен-сообщениями]]></category><category><![CDATA[архитектура]]></category><category><![CDATA[интеграция приложений]]></category><category><![CDATA[идемпотентность]]></category><category><![CDATA[rabbitmq]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Разработка нового статического анализатора: PVS-Studio JavaScript]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/pvs-studio/articles/1023894/</guid>
      <link>https://habr.com/ru/companies/pvs-studio/articles/1023894/?utm_campaign=1023894&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/de3/e38/953/de3e389534d2b5572b4ce53ef4b88494.png" /><p>Вот уже 18 лет статический анализатор кода PVS-Studio находится на рынке. За это время он обзавёлся поддержкой языков C, C++, C# и Java. Разумеется, останавливаться на этих языках мы не планируем, и в этой статье расскажем про разработку нового JavaScript/TypeScript анализатора, который выйдет уже совсем скоро.</p> <a href="https://habr.com/ru/articles/1023894/?utm_campaign=1023894&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 15 Apr 2026 14:47:18 GMT</pubDate>
      <dc:creator><![CDATA[Volokhovskii (PVS-Studio)]]></dc:creator>
      
      <category><![CDATA[pvs-studio]]></category><category><![CDATA[open-source]]></category><category><![CDATA[javascript]]></category><category><![CDATA[typescript]]></category><category><![CDATA[java]]></category><category><![CDATA[gRPC]]></category><category><![CDATA[static analysis]]></category><category><![CDATA[статический анализ]]></category><category><![CDATA[AST]]></category><category><![CDATA[семантический анализ]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1023782/</guid>
      <link>https://habr.com/ru/articles/1023782/?utm_campaign=1023782&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Когда я впервые внедрял LLM в production-сервис, схема безопасности выглядела примерно так: написать хороший system prompt, поставить галочку «мы всё предусмотрели» и жить дальше. Жизнь не дала долго наслаждаться этим спокойствием — первый же тест показал, что пользователи довольно быстро находят способы заставить модель «забыть» всё, что мы написали в системном промпте.</p><p>Проблема фундаментальная: <strong>system prompt — это инструкция, которую LLM старается выполнить, но не обязан</strong>. Модель может её переинтерпретировать, «забыть» при длинном контексте или просто обойти через специальные конструкции. Guardrails — это другой уровень: они работают на уровне кода, до и после вызова LLM, и модель физически не может их обойти.</p> <a href="https://habr.com/ru/articles/1023782/?utm_campaign=1023782&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 15 Apr 2026 11:43:41 GMT</pubDate>
      <dc:creator><![CDATA[Ratila]]></dc:creator>
      
      <category><![CDATA[llm]]></category><category><![CDATA[guardrails]]></category><category><![CDATA[prompt injection]]></category><category><![CDATA[jailbreak]]></category><category><![CDATA[ai security]]></category><category><![CDATA[безопасность llm]]></category><category><![CDATA[java]]></category><category><![CDATA[spring ai]]></category><category><![CDATA[langchain4j]]></category><category><![CDATA[backend]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Мой 14-летний путь отказа от ORM: череда инсайтов, приведшая к созданию SQL-First кодогенератора для PostgreSQL]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1023704/</guid>
      <link>https://habr.com/ru/articles/1023704/?utm_campaign=1023704&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/84e/8cd/ff2/84e8cdff2ee343bf2f5c596195b6c6e5.png" /><p>История о том, как я выпустил популярный ORM в 2012 году… потом похоронил его… потом осознал, что база данных должна быть единственным источником правды. И к чему это привело.</p> <a href="https://habr.com/ru/articles/1023704/?utm_campaign=1023704&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 15 Apr 2026 09:36:01 GMT</pubDate>
      <dc:creator><![CDATA[mojojojo]]></dc:creator>
      
      <category>postgresql</category><category>rust</category><category>java</category><category>haskell</category><category>dbfirst</category><category>codegen</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Требования в Agile: полный гайд с работающими практиками]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/otus/articles/1022184/</guid>
      <link>https://habr.com/ru/companies/otus/articles/1022184/?utm_campaign=1022184&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/d4c/382/d00/d4c382d0058d70e5ea838316f9147b1e.png" /><p>Почему «собрать требования» невозможно, а итеративный подход — единственный рабочий вариант и чем Agile-требования на самом деле отличаются от классических. </p><p><strong>А также:</strong><br>▫️ Почему фраза «создайте мне систему» — это красный флаг.<br>▫️ Как постепенное уточнение спасает от «аналитического паралича» и переписывания кода.<br>▫️ User Story vs Use Case: в чём настоящая разница и что выбрать.<br>▫️ Схемы итеративного процесса и ролей в Agile-проекте.<br></p> <a href="https://habr.com/ru/articles/1022184/?utm_campaign=1022184&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Apr 2026 18:05:47 GMT</pubDate>
      <dc:creator><![CDATA[sproshchaev (OTUS)]]></dc:creator>
      
      <category><![CDATA[аналитика]]></category><category><![CDATA[требования]]></category><category><![CDATA[agile]]></category><category><![CDATA[системный аналитик]]></category><category><![CDATA[бизнес-анализ]]></category><category><![CDATA[разработка по]]></category><category><![CDATA[user stories]]></category><category><![CDATA[управление требованиями]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Claude Mythos, Java 26 и пещерный человек с 16 000 звёзд на GitHub]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/haulmont/articles/1023450/</guid>
      <link>https://habr.com/ru/companies/haulmont/articles/1023450/?utm_campaign=1023450&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/da6/bb7/de7/da6bb7de7841058ce751575dd8f58969.jpeg" /><p>Девятый выпуск еженедельных IT-новостей от OpenIDE. </p><p>Милла Йовович выложила свой проект в open-source, Claude Code нашел баг в Linux, которому 23 года, Anthropic показали Claude Mythos и сразу закрыли доступ.</p><p>А Skill Caveman внезапно оказался самым простым и самым эффективным инструментом недели.</p> <a href="https://habr.com/ru/articles/1023450/?utm_campaign=1023450&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Apr 2026 14:26:56 GMT</pubDate>
      <dc:creator><![CDATA[honest_niceman (Haulmont)]]></dc:creator>
      
      <category><![CDATA[Claude Mythos]]></category><category><![CDATA[Claude Code]]></category><category><![CDATA[Java 26]]></category><category><![CDATA[open-source]]></category><category><![CDATA[ИИ-агенты]]></category><category><![CDATA[токены]]></category><category><![CDATA[CaveMan]]></category><category><![CDATA[GPT-2]]></category><category><![CDATA[бенчмарки]]></category><category><![CDATA[vibe-coding]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как работает Stream api и в чем разница с Flux]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1023438/</guid>
      <link>https://habr.com/ru/articles/1023438/?utm_campaign=1023438&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/c84/fc6/db7/c84fc6db78abdd711cbff8ab705a2559.png" /><p>Когда я выбираю тему для исследования, я думаю о пользе для специалиста, особенно для тех, кто недавно в профессии.</p><p>Однако, если ты опытный специалист и постоянно используешь стримы в своей работе, возможно даже для тебя будет изюминка, ради которой тебе стоит прочитать статью. Я подпишу блок для тебя как <em>ИЗЮМИНКА</em>&nbsp;</p><p>Захотелось рассмотреть важную тему Stream API, но чтобы сделать статью интереснее, я решил сравнить его с инструментами реактивного программирования —&nbsp;Flux и Mono&nbsp;из Project Reactor.</p><p>Начнём с того, что такое Stream и в чём его схожесть с Flux.</p> <a href="https://habr.com/ru/articles/1023438/?utm_campaign=1023438&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Apr 2026 14:21:02 GMT</pubDate>
      <dc:creator><![CDATA[KarimAbushaev]]></dc:creator>
      
      <category><![CDATA[stream]]></category><category><![CDATA[stream api]]></category><category><![CDATA[flux]]></category><category><![CDATA[mono]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[БАЗЫ ДАННЫХ db. SQL, REDIS, СУБД]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1023194/</guid>
      <link>https://habr.com/ru/articles/1023194/?utm_campaign=1023194&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/39c/ed0/ff3/39ced0ff35a0f1c62a417e3ad289d30c.jpeg" /><p>Если серьезно, то сегодня мы поговорим про БАЗЫ данных. Как-то один мой друг разработчик сказал, что программирование можно понимать как</p> <a href="https://habr.com/ru/articles/1023194/?utm_campaign=1023194&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Apr 2026 08:31:28 GMT</pubDate>
      <dc:creator><![CDATA[KarimAbushaev]]></dc:creator>
      
      <category><![CDATA[redis]]></category><category><![CDATA[sql]]></category><category><![CDATA[sqlite]]></category><category><![CDATA[in memory]]></category><category><![CDATA[java]]></category><category><![CDATA[query]]></category><category><![CDATA[jdbc]]></category><category><![CDATA[jpa]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Database-клиент для GigaIDE]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/sberbank/articles/1015262/</guid>
      <link>https://habr.com/ru/companies/sberbank/articles/1015262/?utm_campaign=1015262&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/6fd/149/342/6fd149342f10fe3a6322a7f98a3b1cc4.png" /><p>Продолжая <a href="https://habr.com/ru/companies/sberbank/articles/1002768/">тему </a>инструментов, интегрированных в среду разработки, сегодня мы рассмотрим клиент для работы с базами данных, доступный пользователям GigaIDE. Для пользователей Community-версии доступен open source-плагин DB Navigator, который хорошо описан, например, <a href="https://habr.com/ru/companies/spring_aio/articles/866500/">здесь</a>. Пользователям PRO-версии доступна пара расширений:</p><p><strong>SQL</strong>&nbsp;— синтаксическая поддержка и форматирование SQL-кода;</p><p><strong>Database</strong>&nbsp;— клиент баз данных с широким набором возможностей.</p> <a href="https://habr.com/ru/articles/1015262/?utm_campaign=1015262&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Apr 2026 07:39:05 GMT</pubDate>
      <dc:creator><![CDATA[GIGAIDECommunity (Сбер)]]></dc:creator>
      
      <category><![CDATA[gigaide]]></category><category><![CDATA[java]]></category><category><![CDATA[database]]></category><category><![CDATA[django]]></category><category><![CDATA[spring]]></category><category><![CDATA[jakarta]]></category><category><![CDATA[sql]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как не выгорать и к чему я пришел]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1023162/</guid>
      <link>https://habr.com/ru/articles/1023162/?utm_campaign=1023162&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/1f0/6e3/e87/1f06e3e87c98847314793777223ff3e2.png" /><p>Я работаю программистом 15 лет. За это время чего я только не делал и у меня скопилась статистика. Если на первом месте я работал 5 лет на втором 3 года, то на последующих год полтора и я выгорал и менял работу. Я не мог понять почему так происходило. Только в одной фирме мне действительно нравилось работать. Хотя когда я там работал мне тоже хотелось в определенный моменты уйти, но все же сейчас я вспоминаю коллег и проекты с теплотой.   </p> <a href="https://habr.com/ru/articles/1023162/?utm_campaign=1023162&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Apr 2026 07:38:08 GMT</pubDate>
      <dc:creator><![CDATA[FilipLinx]]></dc:creator>
      
      <category><![CDATA[выгорание]]></category><category><![CDATA[сканер]]></category><category><![CDATA[карьера разработчика]]></category><category><![CDATA[Java]]></category><category><![CDATA[Spring Boot]]></category><category><![CDATA[Барбара Шер]]></category><category><![CDATA[типы личности]]></category><category><![CDATA[личная эффективность]]></category><category><![CDATA[многозадачность]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Вайб-код для настоящих инженеров: старые практики в новых реалиях]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1023094/</guid>
      <link>https://habr.com/ru/articles/1023094/?utm_campaign=1023094&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/7fa/b5d/81e/7fab5d81efcf3b803f502ea3c2fc5577.png" /><p>Итак,&nbsp;вопреки утверждениям скептиков&nbsp;(среди которых не так давно был и я)&nbsp;ИИ-разработка с двух ног влетела в настоящую промышленную эксплуатацию,&nbsp;и мем уже совсем не тот:&nbsp;не джун теперь роняет прод,&nbsp;а нейросеть убивает статистику доступности гитхаба,&nbsp;амазона, Cloudflare и даже самой мекки вайб-кодинга&nbsp;—&nbsp;сервисов Anthropic и OpenAI.&nbsp;</p> <a href="https://habr.com/ru/articles/1023094/?utm_campaign=1023094&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Apr 2026 05:01:21 GMT</pubDate>
      <dc:creator><![CDATA[RakovskyAlexander]]></dc:creator>
      
      <category><![CDATA[Вайб-код]]></category><category><![CDATA[чистая архитектура]]></category><category><![CDATA[tdd]]></category><category><![CDATA[разработка]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] JPA 4. Переосмысление Hibernate]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/spring_aio/articles/1022564/</guid>
      <link>https://habr.com/ru/companies/spring_aio/articles/1022564/?utm_campaign=1022564&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/2db/d9b/f73/2dbd9bf732fbc38f1ad67e42326732d3.jpg" /><p>Данная статья является переводом анонса Гевина Кингa о релизе первого milestone JPA 4 спецификации и общего вектора развития JPA.</p><p>Полноценная 4-ая версия JPA спецификации должна выйти чуть-чуть позже в этом году. Тем не менее, то, что сейчас в Milestone это основа, которая, возможно, с небольшими доработками, но уже пойдёт в релиз в этом году.</p><p>От себя скажу, что данное обновление будет довольно крупное. Я оставил свои комментарии там, где посчитал уместным.</p><p>P.S: У нас в рамках Spring АйО Академии как раз есть программа посвящённая Hibernate. В ней мы тоже затронем новую версию спецификации, в частности и работу со <code>StatelessSession</code> и <code>EntityAgent</code> на практике. Я думаю, что из всего апдейта, именно стандартизация работы без Persistence Context будет самым важным для прикладных разработчиков. Остальное тоже важно, но не так как работа с <code>EntityAgent</code>.</p><p>Приятного чтения!</p> <a href="https://habr.com/ru/articles/1022564/?utm_campaign=1022564&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 13 Apr 2026 15:27:00 GMT</pubDate>
      <dc:creator><![CDATA[mipo256 (Spring АйО)]]></dc:creator>
      
      <category>hibernate</category><category>orm</category><category>jpa</category><category>sql</category><category>spring-data</category><category>java</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Kafka. WebClient. Feign. WebSocket. Или как общаются микросервисы]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022974/</guid>
      <link>https://habr.com/ru/articles/1022974/?utm_campaign=1022974&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/cfc/26f/883/cfc26f883c81f1aa5a6320b187dd29a6.png" /><p>Начнем с того, как микросервисы могут общаться? На самом деле все просто, сложные приложения могут состоять из нескольких разных микросервисов.</p><p>Каждый сервис будет иметь свою логику, свою ответственность. Сервисы одной системы могут быть написаны на разных языках программирования. Однако это не будет мешать им общаться. Так вот общение это буквально - обмен информацией. Обмен сообщениями определенного формата, который смогут понять все сервисы. Это похоже на общение между нами. Я говорю что-то собеседник слушает информацию, дальше обрабатывает ее неким образом своим мыслительным аппаратом и формирует ответное сообщение и проговаривает его вслух адресуя голос в направлении оппонента. Для отправки сообщения нам людям, нужно знать адресата или видеть его, для того, чтобы обратиться к нему.</p><p>Адресату, нужно слышать и в идеале уметь понимать на каком языке говорит другой человек. Если вы знаете несколько языков, то вы сможете принять сообщение на одном языке обработать его и перевести в своей голове и выдать перевод другому человеку. Все эти модели общения похожим образом перекладывают на взаимодействие между сервисами.</p> <a href="https://habr.com/ru/articles/1022974/?utm_campaign=1022974&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 13 Apr 2026 15:08:06 GMT</pubDate>
      <dc:creator><![CDATA[KarimAbushaev]]></dc:creator>
      
      <category><![CDATA[kafka]]></category><category><![CDATA[websocket]]></category><category><![CDATA[java]]></category><category><![CDATA[apache kafka]]></category><category><![CDATA[webclient]]></category><category><![CDATA[feignclient]]></category><category><![CDATA[feign]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Многопоточная среда в разработке JAVA]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022934/</guid>
      <link>https://habr.com/ru/articles/1022934/?utm_campaign=1022934&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/414/73a/2ce/41473a2ce86032544136e7138b0af8e4.jpg" /><p>Если ты разработчик, то тебя это коснется. Спустя какое то время, кто-то раньше, кто-то позже, но каждый приходит к тому, что пора реально взять и разобраться в многопоточке. Я как то писал статью для себя, когда готовился к собесам и понял, что мне самому очень вкатывает такой формат обучения, когда ты пишешь статью на тему, которую исследуешь изучаешь. Так информация осваивается в разы лучше. Поэтому я собираюсь пропустить через себя огромный объем информации по многопоточности. Буду работать как супер компьютер обрабатывать сразу все возможные ветки в направлении освоения многопоточности.&nbsp;</p> <a href="https://habr.com/ru/articles/1022934/?utm_campaign=1022934&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 13 Apr 2026 13:45:39 GMT</pubDate>
      <dc:creator><![CDATA[KarimAbushaev]]></dc:creator>
      
      <category><![CDATA[многопоточность]]></category><category><![CDATA[многопоточное программирование]]></category><category><![CDATA[многопоточность на java]]></category><category><![CDATA[многопоточные приложения]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022894/</guid>
      <link>https://habr.com/ru/articles/1022894/?utm_campaign=1022894&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f61/867/ef8/f61867ef8457e1deb12a3694b11bfcdc.png" /><p>Стандартные алгоритмы даунсемплинга хорошо работают с линейными графиками. На scatter они теряют до 60% визуально значимых данных. Показываем, как двумерное прореживание решает задачу, которую одномерные методы фундаментально не могут.</p> <a href="https://habr.com/ru/articles/1022894/?utm_campaign=1022894&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 13 Apr 2026 12:45:22 GMT</pubDate>
      <dc:creator><![CDATA[gearquicker]]></dc:creator>
      
      <category><![CDATA[downsampling]]></category><category><![CDATA[time series]]></category><category><![CDATA[scatterplot]]></category><category><![CDATA[filtering]]></category><category><![CDATA[telemetry]]></category><category><![CDATA[algorithms]]></category><category><![CDATA[benchmark]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Большая распаковка Java 26. Что этот релиз значит для нас всех?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/haulmont/articles/1022864/</guid>
      <link>https://habr.com/ru/companies/haulmont/articles/1022864/?utm_campaign=1022864&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/807/0f1/cf1/8070f1cf14cda11099cffe81c88365dc.jpeg" /><p>Java 26 вышла 18 марта. В релизе 10 JEP-ов: Structured Concurrency получила шестое превью и API наконец стабилизировался, final-поля начинают путь к настоящей иммутабельности, G1 и ZGC получили улучшения производительности, примитивы заработали в паттернах, а HTTP/3 вошёл в стандартный HttpClient финальной фичей.</p><p>Разбираем каждое из изменений и смотрим, как перевести реальный проект на Java 26.</p> <a href="https://habr.com/ru/articles/1022864/?utm_campaign=1022864&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 13 Apr 2026 12:30:39 GMT</pubDate>
      <dc:creator><![CDATA[honest_niceman (Haulmont)]]></dc:creator>
      
      <category><![CDATA[Java 26]]></category><category><![CDATA[JEP]]></category><category><![CDATA[Structured Concurrency]]></category><category><![CDATA[final field]]></category><category><![CDATA[рефлексия]]></category><category><![CDATA[G1]]></category><category><![CDATA[ZGC]]></category><category><![CDATA[примитивы в паттернах]]></category><category><![CDATA[Spring Boot]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Моё путешествие в трёхмерное пространство: история о «программном» Франкенштейне и множестве открытий]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022594/</guid>
      <link>https://habr.com/ru/articles/1022594/?utm_campaign=1022594&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/bbc/fad/c75/bbcfadc75d08da56037647b1178f5978.jpg" /><p>Честно говоря, я долго не мог решиться написать и опубликовать эту статью. Зачем, думал я, возиться с не самой популярной технологией и изобретать велосипед — реализовывать функции, которые уже где‑то есть? На этот вопрос у меня нет универсального ответа — каждому своё.</p><p>Сначала мне казалось, что рассказывать о таких «подвигах» не слишком интересно. Все любят истории об успешном успехе. Потом я вспомнил: главное — не итог, а путь, опыт и знания, которые ты получаешь по дороге. Как только я начал смотреть на материал как на обучающий, делиться им стало намного проще.</p><p>Бывает так: с какой то технологией уже разобрался, а вот перейти к новой боязно. Учить новые движки непросто, да и текущий инструмент уже не справляется с задумкой… Сомнения часто мешают двигаться вперёд, но народная мудрость «глаза боятся, а руки делают» никогда не подводит.</p><p>В итоге я решился и попробовал <a href="https://github.com/AlmasB/FXGL" rel="noopener noreferrer nofollow">FXGL </a>для 3D‑рендеринга. Но не для того, чтобы сделать полноценную игру(хотя она и получилась), а чтобы соединить <a href="https://app.repeatlab.ru/" rel="noopener noreferrer nofollow">расчёты по системному моделированию</a> с элементами геймификации. Уточню: я не призываю использовать FXGL во всех случаях. Для серьёзных 3D‑проектов есть отличные инструменты — Unigine, jMonkeyEngine, Godot, Unreal Engine. Я попытался собрать и упорядочить знания, которые получил в ходе своего небольшого эксперимента.</p><p>&nbsp;</p> <a href="https://habr.com/ru/articles/1022594/?utm_campaign=1022594&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 12 Apr 2026 20:46:46 GMT</pubDate>
      <dc:creator><![CDATA[Sbukreev]]></dc:creator>
      
      <category><![CDATA[геймдев]]></category><category><![CDATA[хобби]]></category><category><![CDATA[3д графика и анимация]]></category><category><![CDATA[моделирование]]></category><category><![CDATA[интерфейсы]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[HttpClient в Spring 7: замена FeignClient или нет?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022466/</guid>
      <link>https://habr.com/ru/articles/1022466/?utm_campaign=1022466&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/e0a/305/4b2/e0a3054b268a81b7a1dacadfe3e8099d.jpg" /><p>Последние годы <strong>FeignClient</strong> и <strong>RestTemplate</strong> были де-факто стандартом для вызова внешних API в Spring. Но теперь появился нативный <strong>Http Interface Client</strong> — и я решил проверить, можно ли им заменить Feign без потери удобства.</p> <a href="https://habr.com/ru/articles/1022466/?utm_campaign=1022466&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Переходим на Spring 7 увереннее!</a>]]></description>
      
      <pubDate>Sun, 12 Apr 2026 10:15:57 GMT</pubDate>
      <dc:creator><![CDATA[ulllie21]]></dc:creator>
      
      <category><![CDATA[spring]]></category><category><![CDATA[spring boot]]></category><category><![CDATA[java]]></category><category><![CDATA[httpclient]]></category><category><![CDATA[feignclient]]></category><category><![CDATA[restclient]]></category><category><![CDATA[webclient]]></category><category><![CDATA[openapi]]></category><category><![CDATA[микросервисы]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Разработка реализации системы для Join таблиц в реальном времени на Apache Flink ( Часть 3 )]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1022368/</guid>
      <link>https://habr.com/ru/articles/1022368/?utm_campaign=1022368&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Скорее всего читатели знают, но контекста ради.<br>Flink имеет децентрализованный дизайн с распределенной архитектурой, где набор контейнеров ( Task Manager ) несут ответственность за свою локальную зону или не несут?<br>Эта зона в случае разбиения через keyBy размазывается исходя из хэша заданного ключа, посредством чего, Flink гарантирует попадание всех событий с этим ключом на тот же контейнер и также гарантирует сохранение того порядка событий, в котором они доехали до оператора, и, как следствие этот контейнер является мастером-владельцем ключа - отсюда понятие локальной зоны становится оправданным, ведь все хэш пространство размазывается на контейнеры равномерно. Однако, если не использовать keyBy и просто попробовать вызвать что угодно, то будет round-robin распределение и тогда снимается понятие локальной зоны ответственности.<br><br></p> <a href="https://habr.com/ru/articles/1022368/?utm_campaign=1022368&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 11 Apr 2026 19:40:03 GMT</pubDate>
      <dc:creator><![CDATA[Akhtem94]]></dc:creator>
      
      <category><![CDATA[apache flink]]></category><category><![CDATA[kafka]]></category><category><![CDATA[mysql]]></category><category><![CDATA[postgresql]]></category><category><![CDATA[distrubuted architecture]]></category><category><![CDATA[architecture]]></category><category><![CDATA[realtime]]></category><category><![CDATA[analytics]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
