<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~files/feed-premium.xsl"?>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedpress="https://feed.press/xmlns" xmlns:podcast="https://podcastindex.org/namespace/1.0" version="2.0">
  <channel>
    <feedpress:locale>en</feedpress:locale>
    <atom:link rel="self" href="https://feeds.dzone.com/frameworks"/>
    <atom:link rel="hub" href="https://feedpress.superfeedr.com/"/>
    <title>DZone Frameworks Zone</title>
    <link>https://dzone.com/frameworks</link>
    <description>Recent posts in Frameworks on DZone.com</description>
    <item>
      <title>The Startup Time Trick Hiding Inside Your Docker Build</title>
      <link>https://feeds.dzone.com/link/23563/17439260/docker-build-startup-time</link>
      <description><![CDATA[<p data-sourcepos="3:1-3:427;58-484" dir="ltr">Every Java developer who runs services on Kubernetes has watched this scene play out. Traffic spikes, the autoscaler adds a pod, and then everyone waits. The container is running in two seconds. The application is not ready for another twelve seconds. During those ten seconds, your existing pods absorb the extra load, latency climbs, and if things are bad enough, the autoscaler panics and adds even more pods that are also not ready.</p>
<p data-sourcepos="5:1-5:370;486-855" dir="ltr">I spent years treating Spring Boot startup time as a fact of life, the way you treat weather. Then I found out the JVM has had a fix for a big chunk of it since Java 12; it works beautifully inside Docker, and almost nobody bakes it into their images. It is called Class Data Sharing, CDS for short, and this article shows you how to make your Docker build do the work</p><img src="https://feeds.dzone.com/link/23563/17439260.gif" height="1" width="1"/>]]></description>
      <pubDate>Thu, 03 Sep 2026 18:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3669942</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19166206&amp;w=600"/>
      <dc:creator>Garima Agarwal</dc:creator>
    </item>
    <item>
      <title>Stop Hardcoding Database Checks: Building a Metadata-Driven Data Quality Framework</title>
      <link>https://feeds.dzone.com/link/23563/17436500/building-metadata-driven-quality-framework</link>
      <description><![CDATA[<p>In high-volume data platforms, hardcoding validation logic into individual processing pipelines creates significant operational drag. As an enterprise data asset footprint grows, maintaining manual checks for hundreds of tables inevitably leads to mounting technical debt, silent schema drift, and a fragmented audit trail.</p>
<p>To achieve data governance at scale, data architects must decouple validation rules from the execution engine. By utilizing a centralized metadata repository to dynamically generate validation suites, organizations can transform data quality from a reactive, script-based bottleneck into a configuration-driven infrastructure asset.</p><img src="https://feeds.dzone.com/link/23563/17436500.gif" height="1" width="1"/>]]></description>
      <pubDate>Tue, 01 Sep 2026 15:00:05 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3663212</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19160959&amp;w=600"/>
      <dc:creator>Kshitish Nath</dc:creator>
    </item>
    <item>
      <title>Pure Headless vs Hybrid Headless CMS: A Practical Decision Framework</title>
      <link>https://feeds.dzone.com/link/23563/17432375/pure-vs-hybrid-headless-cms</link>
      <description><![CDATA[<p><span>Headless&nbsp;</span><span>CMS architecture</span><span>&nbsp;solved a real development problem. It separated content from presentation, gave frontend teams control over frameworks and deployment, and made structured content available to websites, apps, and other channels through APIs.</span></p>
<p><span>The friction often appears later, when content operations become more complex. Routine publishing changes can still depend on engineering, especially when editors need more control over layout, preview, or page composition.</span></p><img src="https://feeds.dzone.com/link/23563/17432375.gif" height="1" width="1"/>]]></description>
      <pubDate>Wed, 26 Aug 2026 16:00:11 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3673251</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19149225&amp;w=600"/>
      <dc:creator>Alex Vakulov</dc:creator>
    </item>
    <item>
      <title>Understanding RabbitMQ Exchange Types in Spring Boot</title>
      <link>https://feeds.dzone.com/link/23563/17432246/rabbitmq-exchange-types-spring-boot</link>
      <description><![CDATA[<div>
 <p>In this blog, you will take a closer look at the different exchange types that can be used in RabbitMQ. All are demonstrated by means of examples in a Spring Boot application. Enjoy!</p>
 <h2>Introduction</h2>
 <p>In the <a href="https://dzone.com/articles/rabbitmq-spring-boot" rel="noopener noreferrer" target="_blank">previous blog,</a> you learned the basic concepts of RabbitMQ and how to use it in a Spring Boot application. However, you only scratched the surface of it, so now it is time to dig a bit deeper into the different exchange types.</p><img src="https://feeds.dzone.com/link/23563/17432246.gif" height="1" width="1"/>]]></description>
      <pubDate>Wed, 26 Aug 2026 13:00:01 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3673218</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19151339&amp;w=600"/>
      <dc:creator>Gunter Rotsaert</dc:creator>
    </item>
    <item>
      <title>Containerizing Spark and Lakehouse Development with Docker</title>
      <link>https://feeds.dzone.com/link/23563/17428447/containerize-development-with-docker</link>
      <description><![CDATA[<p>Most Docker content targets web developers shipping stateless services. However, data engineers, who represent a huge and growing population of Dockers users, are mostly left to figure things out alone, and it shows. The get pipelines that pass locally, but explode on clusters. They pit notebook-only development against expensive cloud workspaces, and more. This article applies six years of production data platform experience in financial services and healthcare to a question nobody answers well: How to you make a laptop behave like a lakehouse?&nbsp;</p>
<h2>A Familiar Routine</h2>
<p>If you build data pipelines for a living, you've lived this story. Your PySpark job runs perfectly in a cloud notebook. You productionize it, push it through CI, deploy it to the cluster, and it fails. A dependency mismatch. A different Spark minor version. A Delta Lake protocol feature your local wheel doesn't know about. A timezone default nobody set.</p><img src="https://feeds.dzone.com/link/23563/17428447.gif" height="1" width="1"/>]]></description>
      <pubDate>Tue, 25 Aug 2026 19:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3659665</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19124070&amp;w=600"/>
      <dc:creator>Aniket Abhishek Soni</dc:creator>
    </item>
    <item>
      <title>Demystifying Thread Hopping With Swift 6.2</title>
      <link>https://feeds.dzone.com/link/23563/17428213/swift-demystifies-tread-hopping</link>
      <description><![CDATA[<p>Ever since <a href="https://dzone.com/articles/swift-actors-executors-reentrancy" rel="noopener noreferrer" target="_blank">Swift Concurrency</a> was introduced, its main mission has been clear: keep memory safe without making us write callback hell. But if we’re being honest, context switching-specifically thread hopping-has always been a bit of a head-scratcher.</p>
<p>How many times have you marked an async function as <code>nonisolated</code> on a <code>@MainActor</code> class, only to watch it instantly jump off to the cooperative global pool for no obvious reason?</p><img src="https://feeds.dzone.com/link/23563/17428213.gif" height="1" width="1"/>]]></description>
      <pubDate>Tue, 25 Aug 2026 14:00:14 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3666637</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19111640&amp;w=600"/>
      <dc:creator>Nikita Vasilev</dc:creator>
    </item>
    <item>
      <title>Cutting AI Token Costs With MgntUtils Stack Trace Filtering</title>
      <link>https://feeds.dzone.com/link/23563/17427538/ai-token-costs-stack-traces</link>
      <description><![CDATA[<p><em>A live production integration case study.</em></p>
<h2><a name="introduction-and-purpose-of-this-article" href="https://dev.to/mgantman/cutting-ai-token-costs-with-mgntutils-stacktrace-filtering-52hc#introduction-and-purpose-of-this-article"></a>Introduction and Purpose of This Article</h2>
<p>This article is written for mid- and high-level managerial and technical decision-makers. I am the author of the open-source Java library <a href="https://dzone.com/articles/filter-java-stacktrace-mgntutils">MgntUtils</a>. The article presents an analysis of a <strong>real integration</strong> of the stack trace-filtering feature from that library into a live commercial production environment.</p><img src="https://feeds.dzone.com/link/23563/17427538.gif" height="1" width="1"/>]]></description>
      <pubDate>Mon, 24 Aug 2026 14:00:01 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3670070</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19148135&amp;w=600"/>
      <dc:creator>Michael Gantman</dc:creator>
    </item>
    <item>
      <title>Stop Hand-Rolling Chat UIs: Streaming LLM Tokens Into React Native Without the Jank</title>
      <link>https://feeds.dzone.com/link/23563/17424654/streaming-llm-tokens-into-react-native</link>
      <description><![CDATA[<p>A chat screen looks like a weekend project: a list of bubbles and a text input pinned to the bottom. In React Native, it is one of the hardest things to ship well, because it sits on top of the two most hostile surfaces in mobile development: the software keyboard and a scrolling list that changes size while you're looking at it.</p>
<p>We're putting LLMs into everything now, and there is still no good drop-in chat view for React Native. You glue together an aging library with strong opinions, or you hand-roll it. I hand-rolled it. Then I made the LLM stream its replies token by token, and the whole thing fell apart in a way that took a week to understand.</p><img src="https://feeds.dzone.com/link/23563/17424654.gif" height="1" width="1"/>]]></description>
      <pubDate>Thu, 20 Aug 2026 18:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3660826</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19146110&amp;w=600"/>
      <dc:creator>Tammo Ronke</dc:creator>
    </item>
    <item>
      <title>Benchmark LangGraph, Strands, OpenAI Agents, and Google ADK on the Same Agent Graph</title>
      <link>https://feeds.dzone.com/link/23563/17417415/agent-framework-benchmark</link>
      <description><![CDATA[<p>Agent framework debates are mostly vibes. One engineer swears LangGraph is faster, another prefers the OpenAI Agents SDK, someone wants Google ADK because it feels future-proof. The team picks one, wires the workflow into its SDK, and the choice is welded in. Changing frameworks later means tearing out the wiring for one SDK and rebuilding the workflow on another, an expensive rewrite few teams take on.</p>
<p>This tutorial makes that decision reversible and then settles it with data. You put the <a href="https://launchdarkly.com/docs/home/agentcontrol/agent-graphs" rel="noopener noreferrer" target="_blank">agent graph</a> in LaunchDarkly and run four frameworks (<a href="https://langchain-ai.github.io/langgraph/" rel="noopener noreferrer" target="_blank">LangGraph</a>, <a href="https://strandsagents.com/" rel="noopener noreferrer" target="_blank">Strands</a>, <a href="https://openai.github.io/openai-agents-python/" rel="noopener noreferrer" target="_blank">OpenAI Agents SDK</a>, and <a href="https://google.github.io/adk-docs/" rel="noopener noreferrer" target="_blank">Google ADK</a>) over the same topology, with the model pinned so the framework is the only variable. A LaunchDarkly <a href="https://launchdarkly.com/docs/home/agentcontrol/experimentation" rel="noopener noreferrer" target="_blank">experiment</a> ranks them on graph latency and token use, with an LLM judge guarding quality. The results table tells you which framework runs your graph fastest without degrading it.</p><img src="https://feeds.dzone.com/link/23563/17417415.gif" height="1" width="1"/>]]></description>
      <pubDate>Thu, 13 Aug 2026 16:00:01 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3661989</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19134892&amp;w=600"/>
      <dc:creator>Scarlett Attensil</dc:creator>
    </item>
    <item>
      <title>A Framework-Agnostic Approach to SSR for Microfrontends</title>
      <link>https://feeds.dzone.com/link/23563/17414852/ssr-for-microfrontends</link>
      <description><![CDATA[<p data-pm-slice="1 1 []">On one of our projects, we were building microfrontends, and at some point we wanted to add SSR. The reasons were the usual ones: better first paint, fewer layout shifts, real content for crawlers, less JS to load before something appears on screen.</p>
<p>Setting it up turned out to be harder than I expected. There was no obvious out-of-box path that fit our setup, and most of the approaches I found either assumed a shared build or asked us to add new infrastructure on top of what we already had.</p><img src="https://feeds.dzone.com/link/23563/17414852.gif" height="1" width="1"/>]]></description>
      <pubDate>Tue, 11 Aug 2026 13:00:01 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3665466</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19127538&amp;w=600"/>
      <dc:creator>Vitaly Zheltko</dc:creator>
    </item>
    <item>
      <title>A Zero-Trust Implementation Framework for Cloud Migrations: Lessons From Enterprise Deployments</title>
      <link>https://feeds.dzone.com/link/23563/17405064/a-zero-trust-implementation-framework-for-cloud-mi</link>
      <description><![CDATA[<p>Cloud migration projects almost always treat security as a downstream concern something to bolt on after workloads have already moved, once the “real” migration work is done. Across dozens of enterprise migrations spanning finance, healthcare, and manufacturing workloads, that ordering is consistently the source of the costliest rework: reopened firewall rules, retrofitted identity models, and access reviews that should have happened before a single virtual machine was provisioned.</p>
<p>The pattern holds regardless of which cloud provider is on the receiving end. What follows is a framework provider-agnostic by design for embedding <a href="https://dzone.com/articles/zero-trust-architecture-enterprise-infrastructure-1">zero-trust principles</a> into the migration process itself, rather than applying them after the fact.</p><img src="https://feeds.dzone.com/link/23563/17405064.gif" height="1" width="1"/>]]></description>
      <pubDate>Fri, 07 Aug 2026 13:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3666525</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19123739&amp;w=600"/>
      <dc:creator>Srinivasarao Thumala</dc:creator>
    </item>
    <item>
      <title>TensorFlow vs PyTorch: The Real Difference Isn’t Accuracy</title>
      <link>https://feeds.dzone.com/link/23563/17403974/tensorflow-vs-pytorch</link>
      <description><![CDATA[<p data-selectable-paragraph="">A few days ago, I set out to build a simple image classification model using convolutional neural networks (CNNs). The task itself wasn’t particularly complex, but choosing the right framework proved more challenging than expected. I found myself choosing between TensorFlow and PyTorch, two powerful frameworks for building high-performance CNNs.</p>
<p data-selectable-paragraph="">To explore this, I implemented the same <a href="https://dzone.com/articles/cnn-convolutional-neural-networks-guide">CNN</a> in both frameworks under identical conditions and compared them across key aspects like learning curve, flexibility, debugging, and performance.</p><img src="https://feeds.dzone.com/link/23563/17403974.gif" height="1" width="1"/>]]></description>
      <pubDate>Wed, 05 Aug 2026 17:00:04 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3656409</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19116379&amp;w=600"/>
      <dc:creator>Rakshath Naik</dc:creator>
    </item>
    <item>
      <title>Rethinking Java Design Patterns: From OOP to FP</title>
      <link>https://feeds.dzone.com/link/23563/17403171/rethinking-java-design-patterns</link>
      <description><![CDATA[<p>The functional programming answer, to those who wonder how to integrate or combine it with object-oriented programming, is usually: <em>Turtles all the way down</em>.</p>
<p>This is an aphorism whose origin is credited to Richard Feynman. In his book, <em>Surely You're Joking, Mr. Feynman !</em>, published in 1985, he tells the story of one of his conferences on the nature of the universe, where he was challenged by someone in the audience, saying that the universe rests on a turtle. Feynman asked then what the turtle is resting on, and the answer was: "another bigger turtle".</p><img src="https://feeds.dzone.com/link/23563/17403171.gif" height="1" width="1"/>]]></description>
      <pubDate>Tue, 04 Aug 2026 12:00:07 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3666595</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19111428&amp;w=600"/>
      <dc:creator>Nicolas Duminil</dc:creator>
    </item>
    <item>
      <title>The Tectonic AI Platform: A Framework for Taming App Sprawl and Data Fragmentation</title>
      <link>https://feeds.dzone.com/link/23563/17402569/tectonic-platform-tames-app-sprawl</link>
      <description><![CDATA[<p><span lang="">If you</span> ha<span lang="">ve spent any time inside a mid-to-large organization that has embraced AI-assisted development, you've probably seen the pattern already. Teams move fast. New apps get spun up in days. Business units that used to wait months for IT now have working tools in a week. On the surface, it looks like a win. But look a little deeper, and a different picture starts to emerge.</span></p>
<p><span lang="">I've seen this happen firsthand: within twelve months of an organization adopting AI-assisted development, the internal app count can double</span>, <span lang="">sometimes triple. And with every new app comes a fresh copy of the customer table, a slightly different definition of what a "transaction" means, and another team that has no idea what the team next door already built. The result is two compounding problems, and most organizations are treating them as if they're separate issues when they share the same root cause.</span></p><img src="https://feeds.dzone.com/link/23563/17402569.gif" height="1" width="1"/>]]></description>
      <pubDate>Mon, 03 Aug 2026 17:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3656703</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19108505&amp;w=600"/>
      <dc:creator>Saravanan Muniraj</dc:creator>
    </item>
    <item>
      <title>How to Break Up Swift Concurrency</title>
      <link>https://feeds.dzone.com/link/23563/17402473/break-up-swift-concurrency</link>
      <description><![CDATA[<p data-selectable-paragraph="">Need to perform asynchronous operations and support multitasking in your app? Async/await is at your service — simple and elegant. The cooperative thread pool efficiently switches threads between tasks, while the compiler ensures thread safety at the type level. You can even seamlessly bridge older parts of your codebase written in GCD!</p>
<p data-selectable-paragraph="">But then, for some reason, your app starts hanging in production…</p><img src="https://feeds.dzone.com/link/23563/17402473.gif" height="1" width="1"/>]]></description>
      <pubDate>Mon, 03 Aug 2026 13:00:05 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3665307</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19110340&amp;w=600"/>
      <dc:creator>Pavel Andreev</dc:creator>
    </item>
    <item>
      <title>FastAPI + Django in Production: Lessons From a Hybrid Stack</title>
      <link>https://feeds.dzone.com/link/23563/17397765/fastapi-django-hybrid-stack</link>
      <description><![CDATA[<p>Picture the scene: One of the services in your backend is a mature Django app that no one has the resources, time, or, frankly, the will to rewrite. The ORM, the admin panel, and the broader ecosystem all earn their keep.</p>
<p>But you’re looking for the best way to describe your API, and FastAPI catches your eye. It looks like a great fit: native typing, pydantic-based validation, <a href="https://dzone.com/articles/openapi-for-secure-and-robust-api-integration">OpenAPI</a> out of the box, and of course the support for async endpoints.</p><img src="https://feeds.dzone.com/link/23563/17397765.gif" height="1" width="1"/>]]></description>
      <pubDate>Fri, 31 Jul 2026 18:00:01 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3665395</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19110297&amp;w=600"/>
      <dc:creator>Evgeniia Chibisova</dc:creator>
    </item>
    <item>
      <title>Deploying a Spring Boot Microservice on AWS Fargate: Lessons From the Outage That Forced Me to Get It Right</title>
      <link>https://feeds.dzone.com/link/23563/17397480/spring-boot-aws-fargate</link>
      <description><![CDATA[<p>My first attempt to deploy a Spring Boot microservice on AWS Fargate didn’t fail loudly. It failed quietly — in a loop. ECS kept launching tasks, the Application Load Balancer kept marking them unhealthy, and the service never stabilized. The logs looked fine, the container looked fine, but the ALB replaced every task within seconds.</p>
<p>The root cause was painfully simple: <a href="https://dzone.com/articles/spring-h2-tutorial">Spring Boot</a> needed 45 seconds to start, and my ALB health‑check timeout was 5 seconds. The tasks never had a chance.</p><img src="https://feeds.dzone.com/link/23563/17397480.gif" height="1" width="1"/>]]></description>
      <pubDate>Fri, 31 Jul 2026 15:00:01 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3664376</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19110267&amp;w=600"/>
      <dc:creator>Vishal Rameshchandra Shah</dc:creator>
    </item>
    <item>
      <title>Spark Performance Deep Dive on Databricks: Shuffle Tuning, Skew Handling, and Z-Ordering With Delta Lake + Unity Catalog</title>
      <link>https://feeds.dzone.com/link/23563/17397446/spark-performance-databricks</link>
      <description><![CDATA[<h2>The Problem With "Just Add More Workers"</h2>
<p>Most Spark performance issues on Databricks aren't solved by scaling the cluster — they're caused by <strong>shuffle</strong> and <strong>skew</strong>, and no amount of extra nodes fixes a badly partitioned join. This post builds a realistic pipeline (order events joined against a small dimension table, aggregated, and written to Delta Lake) from the ground up, and uses it to work through:</p>
<ol>
 <li>How <a href="https://dzone.com/articles/apache-spark-all-you-need-to-know">Spark's</a> shuffle actually behaves during a wide transformation</li>
 <li>Diagnosing and fixing data skew with salting and adaptive query execution (AQE)</li>
 <li>Laying out the resulting Delta table with Z-Ordering so downstream queries skip irrelevant files</li>
 <li>Governing access to the whole pipeline with Unity Catalog</li>
</ol>
<h2><a name="architecture-overview" href="https://dev.to/jubinsoni/spark-performance-deep-dive-on-databricks-shuffle-tuning-skew-handling-and-z-ordering-with-delta-29ko#architecture-overview"></a>Architecture Overview</h2>
<p><strong>Pipeline shape</strong> – a batch job reading raw events, joining against a dimension table, aggregating, and writing to a governed Delta table:</p><img src="https://feeds.dzone.com/link/23563/17397446.gif" height="1" width="1"/>]]></description>
      <pubDate>Fri, 31 Jul 2026 14:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3665489</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19110260&amp;w=600"/>
      <dc:creator>Jubin Soni, FBCS</dc:creator>
    </item>
    <item>
      <title>Retrieval Augmented Generation With Spring AI 2.0, Claude, and PGvector</title>
      <link>https://feeds.dzone.com/link/23563/17397317/build-a-RAG-service</link>
      <description><![CDATA[<p data-sourcepos="7:1-7:356;287-642">Language models become much more useful when they can answer questions about information they were never trained on, including your internal documentation, product manuals, policies, and other proprietary data. Prompting alone cannot solve this, because the model simply does not have access to that knowledge. Retrieval-Augmented Generation, or RAG, is the most common way to bridge that gap.</p>
<p data-sourcepos="9:1-9:358;644-1001">Spring AI comes with solid support for building RAG systems. It has been almost three years since Spring AI showed up, and in that time it has grown from an experimental member of the Spring portfolio into a mature layer over chat models, embedding models, vector stores, and the plumbing that sits between them, which happen to be exactly the pieces a RAG system needs.</p><img src="https://feeds.dzone.com/link/23563/17397317.gif" height="1" width="1"/>]]></description>
      <pubDate>Fri, 31 Jul 2026 12:00:08 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3664111</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19108864&amp;w=600"/>
      <dc:creator>Murat Balkan</dc:creator>
    </item>
    <item>
      <title>This One Spring Data JPA Pattern Cleaned Up to 3 Years of Repository Debt</title>
      <link>https://feeds.dzone.com/link/23563/17393209/spring-data-jpa-repository-debt</link>
      <description><![CDATA[<p>If you've spent more than a year building enterprise Java apps, you've probably felt this specific kind of pain: a product manager asks for a new search filter, and you open your repository file to find it already has 18 methods. You write number 19, then 20, and somewhere around method 25 you start wondering if there's a better way.</p>
<p>There is. It's called <a href="https://dzone.com/articles/introduction-spring-data-jpa-inheritance-rest-app">Spring Data JPA Specifications</a>, and it's been sitting quietly in the framework the whole time.</p><img src="https://feeds.dzone.com/link/23563/17393209.gif" height="1" width="1"/>]]></description>
      <pubDate>Wed, 29 Jul 2026 18:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3662017</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19106847&amp;w=600"/>
      <dc:creator>Ramesh Bellamkonda</dc:creator>
    </item>
  </channel>
</rss>
