<?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>Mon, 27 Apr 2026 03:16:00 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[Почему RBAC недостаточно: опыт построения тарифно-зависимой системы доступа в SaaS или о чём молчат в статьях компаний]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1028298/</guid>
      <link>https://habr.com/ru/articles/1028298/?utm_campaign=1028298&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Тема разграничения доступности действий в рамках конкретного тенанта выходит далеко за рамки ERP домена и требует особо пристальной реализации. Это особенно применимо для коммерческих систем (коей и является <a href="https://github.com/Kroncl" rel="noopener noreferrer nofollow">Kroncl</a> - название системы), в которых классический RBAC требует определённых доработок, включающих адаптацию к упрощённой features-based access control (в народе - FBAC, является своего рода реализацией ABAC). Кроме того, технологические компании крайне редко (уникальные случаи всё же есть) посвящают публичные статьи внутреннему устройству своих систем тарификации, что крайне печально, ведь это буквально могли быть рассказы о том, как архитектурные решения напрямую влияют на маркетинг и как следствие доходность компании.</p><p>Как же строить системы определения доступа не вокруг конкретных действий, а экономической модели платформы? Как легко переусложнить то, что переусложнять априори не стоит? Где заканчивается гибкость и начинается ад поддержки?</p> <a href="https://habr.com/ru/articles/1028298/?utm_campaign=1028298&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 27 Apr 2026 01:02:24 GMT</pubDate>
      <dc:creator><![CDATA[mainbotan]]></dc:creator>
      
      <category><![CDATA[go]]></category><category><![CDATA[архитектура]]></category><category><![CDATA[rbac]]></category><category><![CDATA[abac]]></category><category><![CDATA[тарификация]]></category><category><![CDATA[php]]></category><category><![CDATA[доступы]]></category><category><![CDATA[saas]]></category><category><![CDATA[erp]]></category><category><![CDATA[crm]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Kotlin — моя любовь, Java — моя судьба. История одного возвращения]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1027788/</guid>
      <link>https://habr.com/ru/articles/1027788/?utm_campaign=1027788&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/d3f/79a/92a/d3f79a92a6b003056a4ea98335702348.png" /><p>Всем привет! Меня зовут Михаил, я главный эксперт в ОТП банке.</p><p>Несколько лет я мечтал поработать на Kotlin. Мне это удалось - был большой проект РЖД, я вкатился, писал  код, радовался. Kotlin мне правда понравился.</p><p>Но давление менеджеров, нереальные сроки и просто выгорание вынудило меня выходить на рынок, и я пошёл искать работу… и тут меня ждал сюрприз. Вакансий, где нужен чисто Kotlin, в России - единицы. А те, что есть, чаще ищут Java/Kotlin с упором на первую.</p><p>В этой статье - моя история: как я вкатывался в Kotlin без подготовки, как мне понравилось, и почему я всё равно сейчас пишу на Java. Читайте, если думаете о переходе, - возможно, это поможет скорректировать ожидания.<br><br>Поехали!</p> <a href="https://habr.com/ru/articles/1027788/?utm_campaign=1027788&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 25 Apr 2026 13:35:02 GMT</pubDate>
      <dc:creator><![CDATA[MishaBucha]]></dc:creator>
      
      <category><![CDATA[java]]></category><category><![CDATA[kotlin]]></category><category><![CDATA[собеседование]]></category><category><![CDATA[кейс]]></category><category><![CDATA[рынок it]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[От регулярок к ANTLR4: три архитектурных решения на парсере бизнес-формул]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1027742/</guid>
      <link>https://habr.com/ru/articles/1027742/?utm_campaign=1027742&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/876/135/9ef/8761359ef33a65fe94f793d9fd273149.png" /><p>Три года назад я писал свой первый коммерческий парсер на ANTLR4 — для бизнес-формул аналитической системы. Несколько лет спустя я бы сделал его иначе в трёх центральных местах. Разбираю каждое: левая рекурсия для приоритета операторов, Listener vs Visitor, и почему&nbsp;<code>getText()</code>&nbsp;для повторного парсинга — антипаттерн.</p> <a href="https://habr.com/ru/articles/1027742/?utm_campaign=1027742&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 25 Apr 2026 00:03:56 GMT</pubDate>
      <dc:creator><![CDATA[zahaand]]></dc:creator>
      
      <category><![CDATA[antlr]]></category><category><![CDATA[antlr4]]></category><category><![CDATA[парсер]]></category><category><![CDATA[parser]]></category><category><![CDATA[грамматика]]></category><category><![CDATA[dsl]]></category><category><![CDATA[java]]></category><category><![CDATA[spring boot]]></category><category><![CDATA[compiler]]></category><category><![CDATA[code generation]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Оффлайн агент IDE Continue за 15 минут]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1027658/</guid>
      <link>https://habr.com/ru/articles/1027658/?utm_campaign=1027658&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/c9f/74c/210/c9f74c210d4247ca2f4f20086ce86836.png" /><p>Я расскажу, как реализовать локального LLM "Agent".</p><p><em>«Что вы получите:</em><br><em>— LLM, который индексирует ваш код и отвечает по контексту</em><br><em>— Генерацию и автоматическую вставку кода / тестов</em><br><em>— Полную работу без интернета и утечек данных</em><br><em>Показываю на примере IntelliJ IDEA, Ollama и Continue.»</em>  </p> <a href="https://habr.com/ru/articles/1027658/?utm_campaign=1027658&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 24 Apr 2026 15:50:04 GMT</pubDate>
      <dc:creator><![CDATA[SergeyRoot]]></dc:creator>
      
      <category><![CDATA[agent]]></category><category><![CDATA[llm]]></category><category><![CDATA[llm-агент]]></category><category><![CDATA[оффлайн]]></category><category><![CDATA[Offlline]]></category><category><![CDATA[continue]]></category><category><![CDATA[plugin]]></category><category><![CDATA[ollama]]></category><category><![CDATA[ollama tutorial]]></category><category><![CDATA[idea]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Разворачиваем RAG на Java без боли: практический гайд]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1027426/</guid>
      <link>https://habr.com/ru/articles/1027426/?utm_campaign=1027426&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/379/f8e/706/379f8e706c4d2c038cb8bbce6e1ca391.jpg" /><p>Всем привет! Недавно столкнулся с проблемой, что в&nbsp;настоящее время большая часть обучающих материалов по&nbsp;<strong>Retrieval‑Augmented Generation (RAG)</strong> сосредоточена на&nbsp;<strong>Python‑экосистеме</strong> (LangChain, LlamaIndex и тому подобное), а&nbsp;пошаговые руководства, которые показывают, как&nbsp;быстро собрать рабочее RAG‑приложение на&nbsp;чистом <strong>Java‑стеке</strong>, встречаются крайне редко. Эта статья представляет собой простое практическое руководство, где мы разберём весь процесс от&nbsp;настройки окружения до&nbsp;полного примера кода, чтобы даже начинающий Java‑разработчик мог развернуть RAG.</p> <a href="https://habr.com/ru/articles/1027426/?utm_campaign=1027426&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 24 Apr 2026 09:15:51 GMT</pubDate>
      <dc:creator><![CDATA[dimkanl]]></dc:creator>
      
      <category><![CDATA[RAG]]></category><category><![CDATA[Java]]></category><category><![CDATA[Spring AI]]></category><category><![CDATA[Qdrant]]></category><category><![CDATA[Ollama]]></category><category><![CDATA[LLM]]></category><category><![CDATA[bge-m3]]></category><category><![CDATA[embeddings]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Когда Java-разработка — это не только Spring]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/sberbank/articles/1025546/</guid>
      <link>https://habr.com/ru/companies/sberbank/articles/1025546/?utm_campaign=1025546&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/428/262/26c/42826226c088c52905d6e1a43c655f1a.jpeg" /><p>У тех, кто впервые столкнулся с Java-разработкой в последние пять лет, могло сложиться впечатление, что Spring всегда был доминирующим фреймворком, а сам язык предназначен для разработки backend в web-приложениях. Однако пока web-приложения были проще, специализация frontend-разработчика не была такой очевидной, интерфейс обновляли на сервере, а Java поддерживала ряд фреймворков, управляющих динамической HTML-версткой. </p><p>Эти фреймворки до сих пор живут в легаси, которое проще поддерживать, чем переписать. Они могут требовать обновлений, когда у регуляторов возникают новые требования или меняется корпоративный стиль оформления интерфейса. А если фреймворк живёт, то к нему желательно иметь подходящий инструмент. Поэтому сегодня мы расскажем сразу про четыре инструмента в <strong>GigaIDE PRO</strong>, поддерживающие уже не столь трендовые, но достаточно распространённые в среде «кровавого энтерпрайза» фреймворки.</p><p>&nbsp;Начнём наш обзор с рассказа про поддержку самых «древних». </p> <a href="https://habr.com/ru/articles/1025546/?utm_campaign=1025546&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 24 Apr 2026 07:33:58 GMT</pubDate>
      <dc:creator><![CDATA[GIGAIDECommunity (Сбер)]]></dc:creator>
      
      <category><![CDATA[gigaide]]></category><category><![CDATA[jsp]]></category><category><![CDATA[jsf]]></category><category><![CDATA[java]]></category><category><![CDATA[freemarker]]></category><category><![CDATA[aspectj]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Telegram-бот за вечер через Spec Kit: что AI-ассистированная разработка сделала с моим инженерным процессом]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1027250/</guid>
      <link>https://habr.com/ru/articles/1027250/?utm_campaign=1027250&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/5d8/b41/65e/5d8b4165efa4b0e77c38591c4fb46d9b.jpg" /><p>Я Java-разработчик: пишу на Java 5 лет. Последний месяц собираю портфолио через Spec-Driven Development — связку Spec Kit и Claude Code. Первый проект — Telegram-бот для задач. С шести вечера до двух ночи одного вторника я прошёл полный SDD-цикл от конституции до MVP с шестью командами. Восемь часов. Один вечер. Рабочий продукт. Но главное — что-то сдвинулось в моём инженерном процессе.</p> <a href="https://habr.com/ru/articles/1027250/?utm_campaign=1027250&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 23 Apr 2026 20:31:08 GMT</pubDate>
      <dc:creator><![CDATA[zahaand]]></dc:creator>
      
      <category><![CDATA[spec-driven development]]></category><category><![CDATA[spec kit]]></category><category><![CDATA[claude code]]></category><category><![CDATA[ai coding]]></category><category><![CDATA[ai-assisted development]]></category><category><![CDATA[telegram bot]]></category><category><![CDATA[spring boot]]></category><category><![CDATA[java]]></category><category><![CDATA[разработка]]></category><category><![CDATA[методология]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Kotlin vs Java: что выбрать для бэкенда?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/otus/articles/1022146/</guid>
      <link>https://habr.com/ru/companies/otus/articles/1022146/?utm_campaign=1022146&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/755/73d/77a/75573d77a3647309a683ff168a26acdc.png" /><p>В статье рассмотрим кто сегодня выигрывает битву за бэкенд: сравнение синтаксиса, разбор производительности, а главное — честный прогноз на 2-3 года. Если выбираете стек для нового проекта или думаете, учить ли Kotlin вдогонку к Java, — эта статья для вас!</p> <a href="https://habr.com/ru/articles/1022146/?utm_campaign=1022146&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 23 Apr 2026 18:51:18 GMT</pubDate>
      <dc:creator><![CDATA[sproshchaev (OTUS)]]></dc:creator>
      
      <category><![CDATA[программирование]]></category><category><![CDATA[java]]></category><category><![CDATA[kotlin]]></category><category><![CDATA[backend]]></category><category><![CDATA[сравнение языков]]></category><category><![CDATA[jvm]]></category><category><![CDATA[архитектура приложений]]></category>
    </item>
  

  

  

	
  

  

  

    
    <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[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>
  

  

      

      

      

    
  </channel>
</rss>
