<?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>Building a Reusable Framework to Standardize API Ingestion in an On-Prem Lakehouse</title>
      <link>https://feeds.dzone.com/link/23563/17345842/reusable-api-ingestion-framework-lakehouse</link>
      <description><![CDATA[<p data-end="364" data-start="249">In many enterprise lakehouse environments, the biggest ingestion challenge is not data volume; it is inconsistency.</p>
<p data-end="724" data-start="366">As platforms grow, data starts arriving from many different systems through <a href="https://dzone.com/articles/rest-apis-simplicity-flexibility-and-adoption">REST APIs</a>, SOAP services, SFTP drops, database extracts, queues, and other interfaces. In many teams, these integrations are built one by one to solve immediate business needs. Over time, that creates a fragmented connector landscape where every source behaves a little differently.</p><img src="https://feeds.dzone.com/link/23563/17345842.gif" height="1" width="1"/>]]></description>
      <pubDate>Thu, 21 May 2026 16:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3650292</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=18991149&amp;w=600"/>
      <dc:creator>Kuladeep Sandra</dc:creator>
      <dc:creator>Ashwin Ramesh Kumar</dc:creator>
    </item>
    <item>
      <title>Zone-Free Angular: Unlocking High-Performance Change Detection With Signals and Modern Reactivity</title>
      <link>https://feeds.dzone.com/link/23563/17345144/zone-free-angular</link>
      <description><![CDATA[<p>Angular’s move toward zoneless change detection is a change in scheduling semantics rather than a removal of change detection. Instead of using Zone.js to infer that a render pass might be needed whenever certain asynchronous work completes, Angular schedules change detection from explicit framework notifications and from reactive state updates that Angular can track. The Angular performance guide states that zoneless is the default in Angular v21+, and it documents <code>provideZonelessChangeDetection()</code> as the bootstrapping hook used to enable zoneless scheduling in Angular v20.&nbsp;</p>
<h2>Why Zoneless Became the Default</h2>
<p><a href="https://dzone.com/articles/teach-yourself-angular-in-11-minutes-and-6-seconds">Angular’s</a> official guidance frames Zone.js as a source of unnecessary synchronization. Zone.js uses DOM events and async tasks as indicators that the application state might have updated and triggers application synchronization to run change detection, while lacking insight into whether the state actually changed, so synchronization is triggered more frequently than necessary. The same guidance connects Zone.js to payload and startup overhead, debugging friction, and ecosystem compatibility risks that arise from patching native APIs, including the explicit note that some APIs cannot be patched effectively, such as <code>async</code>/<code>await</code>, which must be downleveled to work with Zone.js.&nbsp;</p><img src="https://feeds.dzone.com/link/23563/17345144.gif" height="1" width="1"/>]]></description>
      <pubDate>Wed, 20 May 2026 20:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3650200</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=18990926&amp;w=600"/>
      <dc:creator>Bhanu Sekhar Guttikonda</dc:creator>
    </item>
    <item>
      <title>Ujorm3: A New Lightweight ORM for JavaBeans and Records</title>
      <link>https://feeds.dzone.com/link/23563/17344368/ujorm3-lightweight-orm-java</link>
      <description><![CDATA[<blockquote>
 <p>"Do the simplest thing that could possibly work."</p>
 <p>— Kent Beck, creator of Extreme Programming and pioneer of Test-Driven Development.</p><img src="https://feeds.dzone.com/link/23563/17344368.gif" height="1" width="1"/>]]></description>
      <pubDate>Tue, 19 May 2026 18:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3650248</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=18988005&amp;w=600"/>
      <dc:creator>Pavel Ponec</dc:creator>
    </item>
    <item>
      <title>OpenAPI From Code With Spring and Java: A Recipe for Your CI</title>
      <link>https://feeds.dzone.com/link/23563/17344197/openapi-ci-spring-java</link>
      <description><![CDATA[<p>This is not "just another article about Springdoc," I promise. This is a ready-to-use recipe I was struggling to find one day, and had to build it from scratch.</p>
<p>Have you ever needed to generate OpenAPI documentation directly from your code and, more importantly, do it in a way that fits cleanly into a CI pipeline? <a href="https://dzone.com/articles/test-a-web-service-using-swagger-ui">Swagger UI</a> is commonly used in Spring Boot applications to visualize and test APIs from the browser. It can also expose the generated OpenAPI definition through a configurable endpoint, and that endpoint is exactly what we will use in this article.</p><img src="https://feeds.dzone.com/link/23563/17344197.gif" height="1" width="1"/>]]></description>
      <pubDate>Tue, 19 May 2026 14:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3649980</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=18987750&amp;w=600"/>
      <dc:creator>Roman Dubinin</dc:creator>
    </item>
    <item>
      <title>Smart Deployment Strategies for Modern Applications</title>
      <link>https://feeds.dzone.com/link/23563/17343681/application-deployment-strategies</link>
      <description><![CDATA[<p>Modern application development has moved toward distributed, cloud-based, and even microservices-based applications, requiring scalability, reliability, and performance under different conditions. Therefore, deployment has become a part of application development, not merely a final activity.</p>
<p>Intelligent deployment patterns and practices are all about building applications that are not just easy to deploy, but also reliable, scalable, and efficient in production. This means moving away from traditional, manual deployment patterns and toward automated, container-based deployment practices.</p><img src="https://feeds.dzone.com/link/23563/17343681.gif" height="1" width="1"/>]]></description>
      <pubDate>Mon, 18 May 2026 18:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3644790</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=18985325&amp;w=600"/>
      <dc:creator>Manju George</dc:creator>
    </item>
    <item>
      <title>Optimizing High-Volume REST APIs Using Redis Caching and Spring Boot (With Load Testing Code)</title>
      <link>https://feeds.dzone.com/link/23563/17343650/optimizing-high-volume-rest-apis</link>
      <description><![CDATA[<p data-end="1077" data-start="114">High-volume REST APIs can easily become bottlenecked by database access, leading to high latency and poor throughput. Even after optimizing SQL queries and adding indexes, a database call might take hundreds of milliseconds, still far slower than a competitor’s 50 ms response that leverages caching. In-memory caching offers orders of magnitude faster data access. Traditional databases measure response times in milliseconds, while Redis operations complete in microseconds.&nbsp;</p>
<p data-end="1077" data-start="114">By storing frequently accessed data in memory, <a href="https://dzone.com/articles/everything-you-should-know-about-apis">APIs</a> can handle dramatically more requests per second with much lower latency. As an example, one test showed that using <a href="https://dzone.com/articles/using-redis-on-cloud-here-are-ten-things-you-shoul">Redis</a> cut an expensive request’s response time from over 10 seconds down to under 1 second.</p><img src="https://feeds.dzone.com/link/23563/17343650.gif" height="1" width="1"/>]]></description>
      <pubDate>Mon, 18 May 2026 17:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3642555</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=18985320&amp;w=600"/>
      <dc:creator>Mallikharjuna Manepalli</dc:creator>
    </item>
    <item>
      <title>Spring CRUD Generator v1.1.0 Updates</title>
      <link>https://feeds.dzone.com/link/23563/17343490/spring-crud-generator-v110-field-validation-redis</link>
      <description><![CDATA[<p>I’ve just released <strong>Spring CRUD Generator v1.1.0</strong> — an open-source generator that helps you bootstrap a <a href="https://dzone.com/articles/spring-boot-crud-operations-example-with-exception">Spring Boot CRUD</a> backend from a single YAML specification.</p>
<p data-end="1119" data-start="644">If you’ve built more than a couple of CRUD-heavy services, you’ve probably experienced the same pain points: repeating the same layers (entity, repository, service, controller), keeping consistent naming and structure across modules, and constantly adjusting boilerplate when requirements change. Spring CRUD Generator aims to reduce that overhead by letting you define your data model and project options once (in YAML) and generate a consistent project structure around it.</p><img src="https://feeds.dzone.com/link/23563/17343490.gif" height="1" width="1"/>]]></description>
      <pubDate>Mon, 18 May 2026 14:00:01 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3638294</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=18985237&amp;w=600"/>
      <dc:creator>Marko Zivkovic</dc:creator>
    </item>
    <item>
      <title>Swift Concurrency Part 4: Actors, Executors, and Reentrancy</title>
      <link>https://feeds.dzone.com/link/23563/17343414/swift-actors-executors-reentrancy</link>
      <description><![CDATA[<p>In this article, we will dive deep into actors, <code>nonisolated</code> methods, <code>@MainActor</code> and <code>@GlobalActors</code>, and the concept of actor reentrancy. We will also explore what happens behind the scenes in the Swift concurrency runtime, including jobs, executors, workers, and schedulers, so you can understand not just how to use these tools, but why they work the way they do.</p>
<p>Whether you’re already using Swift’s async/await features or just starting to explore concurrency, this guide will give you a solid understanding of the mechanisms that keep your concurrent code safe and efficient.</p><img src="https://feeds.dzone.com/link/23563/17343414.gif" height="1" width="1"/>]]></description>
      <pubDate>Mon, 18 May 2026 12:00:02 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3646964</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=18984925&amp;w=600"/>
      <dc:creator>Nikita Vasilev</dc:creator>
    </item>
    <item>
      <title>Building an Image Classification Pipeline With Apache Camel and Deep Java Library (DJL)</title>
      <link>https://feeds.dzone.com/link/23563/17342115/image-classification-pipeline-camel-djl</link>
      <description><![CDATA[<p>Image classification is now a key part of many applications. Whether you’re automating photo organization, filtering uploaded content, or enriching product catalogs with visual tags, knowing what’s in an image can be just as important as knowing what a user typed.</p>
<p>For Java developers, the challenge is familiar: most computer vision examples live in Python notebooks, while the systems that actually need image classification run on the JVM. Bridging that gap usually means standing up a separate Python microservice, managing REST calls, and dealing with serialization overhead. That’s a lot of ceremony for what should be a single processing step.</p><img src="https://feeds.dzone.com/link/23563/17342115.gif" height="1" width="1"/>]]></description>
      <pubDate>Fri, 15 May 2026 20:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3646826</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=18969280&amp;w=600"/>
      <dc:creator>Vignesh Durai</dc:creator>
    </item>
    <item>
      <title>Observability in Spring Boot 4</title>
      <link>https://feeds.dzone.com/link/23563/17342034/observability-in-spring-boot-4</link>
      <description><![CDATA[<p>In microservices, you’ve likely broken a cold sweat more than once when a request suddenly 'vanishes' the moment it hits a Database or a Message Broker. It is a true operational nightmare. However, with the release of <b data-index-in-node="232" data-path-to-node="1">Spring Boot 4</b> in early 2026, building a comprehensive Observability system has become easier than ever, thanks to the 'all-in' support from <a href="https://dzone.com/articles/opentelemetry-tracing-on-spring-boot-java-agent-vs-micrometer-testing">micrometer tracing</a>.</p>
<h2 data-path-to-node="1">The Problem: "Anonymous" Queries</h2>
<p data-path-to-node="2">When your database starts lagging (slow queries), you check the <code data-index-in-node="64" data-path-to-node="2">processlist</code> in <a href="https://dzone.com/refcardz/essential-mysql">MySQL</a> only to find a vague line:</p><img src="https://feeds.dzone.com/link/23563/17342034.gif" height="1" width="1"/>]]></description>
      <pubDate>Fri, 15 May 2026 17:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3637143</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=18984683&amp;w=600"/>
      <dc:creator>ha dinh thai</dc:creator>
    </item>
    <item>
      <title>The Update Problem REST Doesn't Solve</title>
      <link>https://feeds.dzone.com/link/23563/17341327/rest-update-problem</link>
      <description><![CDATA[<p>Consider the following two requests: &nbsp;</p>
<div class="codeMirror-wrapper" contenteditable="false">
 <div contenteditable="false">
  <div class="codeHeader">
   <div class="nameLanguage">
    JSON
   </div><i class="icon-cancel-circled-1 cm-remove">&nbsp;</i>
  </div>
  <div class="codeMirror-code--wrapper" data-code="{} &nbsp;

and &nbsp;

{ &quot;email&quot;: null }" data-lang="application/json">
   <pre><code lang="application/json">{} &nbsp;

and &nbsp;

{ "email": null }</code></pre>
  </div>
 </div>
</div>
<p><br></p><img src="https://feeds.dzone.com/link/23563/17341327.gif" height="1" width="1"/>]]></description>
      <pubDate>Thu, 14 May 2026 16:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3645722</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=18981814&amp;w=600"/>
      <dc:creator>Jan Nilsson</dc:creator>
    </item>
    <item>
      <title>Monitoring Spring Boot Applications with Prometheus and Grafana</title>
      <link>https://feeds.dzone.com/link/23563/17338666/monitoring-spring-boot-applications-with-prometheus</link>
      <description><![CDATA[<h2><strong>Monitoring Spring Boot Applications with Prometheus and Grafana</strong></h2>
<p data-end="509" data-start="216">Spring Boot’s Actuator and Micrometer provide rich metrics that can be scraped by <a href="https://dzone.com/articles/getting-started-with-prometheus-workshop-introduct">Prometheus</a> and visualized in <a href="https://dzone.com/articles/introduction-to-grafana-prometheus-and-zabbix">Grafana</a>. This guide covers configuring a Spring Boot application to expose Prometheus-formatted metrics, writing custom metrics, and setting up Prometheus and Grafana for monitoring.</p>
<p data-end="910" data-start="511">We cover installing Prometheus, writing a configuration to scrape your application, importing Grafana dashboards, and crafting PromQL queries and alerting rules. We also discuss Prometheus best practices, including metric naming conventions, label cardinality, and retention settings. Security considerations, troubleshooting tips, and the performance impact of metrics collection are also included.</p><img src="https://feeds.dzone.com/link/23563/17338666.gif" height="1" width="1"/>]]></description>
      <pubDate>Mon, 11 May 2026 18:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3639645</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=18978574&amp;w=600"/>
      <dc:creator>Ramya vani Rayala</dc:creator>
    </item>
    <item>
      <title>Stop Guessing, Start Seeing: A Five -Layer Framework for Monitoring Distributed Systems</title>
      <link>https://feeds.dzone.com/link/23563/17338515/five-layer-monitoring-framework</link>
      <description><![CDATA[<p>We had hundreds of microservices. Thousands of enterprise customers. And alerts firing constantly — CPU at 80%, memory at 75%, disk at 60%. Engineers were drowning in noise, and still, every few weeks, a customer would open a ticket before we knew anything was wrong.</p>
<p>The problem wasn't a lack of monitoring. It was a lack of <em>structure</em>.</p><img src="https://feeds.dzone.com/link/23563/17338515.gif" height="1" width="1"/>]]></description>
      <pubDate>Mon, 11 May 2026 15:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3641059</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=18974461&amp;w=600"/>
      <dc:creator>Prashant Pathak</dc:creator>
    </item>
    <item>
      <title>When Angular APIs Return 200 but the Frontend Is Already Failing Users</title>
      <link>https://feeds.dzone.com/link/23563/17337081/when-angular-apis-return-200-but-the-frontend</link>
      <description><![CDATA[<p>Successful HTTP requests have become a deceptively comforting metric in modern web systems. Dashboards show low latency, the network tab fills with green entries and the backend reports clean 2xx rates, yet users experience empty screens, contradictory state, stuck workflows or data that appears to randomly revert. This failure mode is common in <a href="https://dzone.com/articles/secure-angular-apps-end-to-end-encryption-api-calls">Angular applications</a> because the transport layer can succeed while the application layer has already violated a business contract and Angular’s default HTTP and reactive ergonomics are optimized around HTTP-level success versus domain-level correctness.&nbsp;</p>
<h2>How Angular Treats 200 as Success</h2>
<p>Angular’s HTTP layer is intentionally aligned with HTTP semantics a request is represented as an Observable and failures in the HTTP layer are emitted on the Observable error channel. Angular documents three broad categories of request failure network/connection failure, timeout and backend error responses and states that <code>HttpClient</code> captures these errors as an <code>HttpErrorResponse</code> returned through the Observable’s error channel. When an API responds with a non success HTTP status, the error channel is used and <code>HttpErrorResponse</code> provides the HTTP layer context.&nbsp;</p><img src="https://feeds.dzone.com/link/23563/17337081.gif" height="1" width="1"/>]]></description>
      <pubDate>Fri, 08 May 2026 18:00:01 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3646932</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=18973005&amp;w=600"/>
      <dc:creator>Bhanu Sekhar Guttikonda</dc:creator>
    </item>
    <item>
      <title>How AI Is Rewriting Full-Stack Java Systems: Practical Patterns with Spring Boot, Kafka and WebSockets</title>
      <link>https://feeds.dzone.com/link/23563/17336947/how-ai-is-rewriting-full-stack-java-systems-practi</link>
      <description><![CDATA[<p data-end="606" data-start="75">Building real-time applications means balancing user responsiveness with heavy backend processing. A proven solution is to <strong data-end="267" data-start="198">decouple heavy workloads using events and asynchronous processing</strong>. In this approach, a <a href="https://dzone.com/articles/spring-h2-tutorial">Spring Boot application</a> quickly publishes events to Kafka instead of processing requests inline. Then <strong data-end="410" data-start="391">Kafka consumers</strong> (with AI/ML logic) handle the data in the background, and the results are <strong data-end="534" data-start="485">pushed to clients in real time via WebSockets</strong>. This article highlights three key patterns enabling this architecture:</p>
<ol>
 <li data-end="660" data-start="611"><strong data-end="658" data-start="611">Event Production with Spring Boot and Kafka</strong></li>
 <li data-end="709" data-start="664"><strong data-end="707" data-start="664">AI-Driven Processing in Kafka Consumers</strong></li>
 <li data-end="761" data-start="713"><strong data-end="761" data-start="713">Real-Time WebSocket Delivery to the Frontend</strong></li>
</ol>
<h2 data-end="809" data-start="763">Event Production with Spring Boot and Kafka</h2>
<p data-end="1110" data-start="811">The first step is capturing an event and publishing it to Kafka. By offloading work to Kafka the application can respond immediately to the user without waiting for processing. Spring Boot’s integration with Apache Kafka provides a <code data-end="1082" data-start="1067">KafkaTemplate</code> to send messages to topics.</p><img src="https://feeds.dzone.com/link/23563/17336947.gif" height="1" width="1"/>]]></description>
      <pubDate>Fri, 08 May 2026 14:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3640373</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=18972871&amp;w=600"/>
      <dc:creator>Ramya vani Rayala</dc:creator>
    </item>
    <item>
      <title>Comparing Top Gen AI Frameworks for Java in 2026</title>
      <link>https://feeds.dzone.com/link/23563/17336160/top-genai-java-frameworks</link>
      <description><![CDATA[<p>Java has always been a serious language for production systems, and in 2026, the Generative AI ecosystem has finally caught up. For years, Java developers watched from the sidelines as Python and TypeScript accumulated framework after framework for building LLM-powered applications. Today, the picture is very different. Java has multiple mature, actively maintained AI frameworks, each with its own philosophy and trade-offs.</p>
<p>This article covers the four frameworks I have personally used to ship Java AI applications: <strong>Genkit Java</strong>, <strong>Spring AI</strong>, <strong>LangChain4j</strong>, and <strong>Google ADK Java</strong>. Each one represents a meaningfully different bet on what a Java AI framework should be, and understanding those differences will save you from picking the wrong tool.</p><img src="https://feeds.dzone.com/link/23563/17336160.gif" height="1" width="1"/>]]></description>
      <pubDate>Thu, 07 May 2026 12:30:01 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3653228</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19012055&amp;w=600"/>
      <dc:creator>Xavier Portilla Edo</dc:creator>
    </item>
    <item>
      <title>Top JavaScript/TypeScript Gen AI Frameworks for 2026</title>
      <link>https://feeds.dzone.com/link/23563/17335610/top-js-ts-genai-frameworks-2026</link>
      <description><![CDATA[<p>The generative AI tooling ecosystem has exploded over the past two years. What started as a handful of Python libraries has grown into a rich, opinionated landscape of frameworks spanning multiple languages, deployment targets, and philosophical bets. As a developer who has shipped production applications using all five of the frameworks covered in this article, <strong>Genkit</strong>, <strong>Vercel AI SDK</strong>, <strong>Mastra</strong>, <strong>LangChain</strong>, and <strong>Google ADK</strong>, I want to offer a practical, hands-on view of where each one excels, where each one falls short, and what I would reach for depending on the project I’m building.</p>
<p>This is not a benchmark post. Tokens per second and latency numbers go stale within weeks. Instead, this is a developer experience and architecture comparison, the kind of thing that matters when you’re deciding what framework will carry your product through 2026 and beyond.</p><img src="https://feeds.dzone.com/link/23563/17335610.gif" height="1" width="1"/>]]></description>
      <pubDate>Wed, 06 May 2026 16:30:02 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3653227</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19012038&amp;w=600"/>
      <dc:creator>Xavier Portilla Edo</dc:creator>
    </item>
    <item>
      <title>Difference Between EnvironmentObject, StateObject, ObservedObject and Observable</title>
      <link>https://feeds.dzone.com/link/23563/17335532/environmentobject-stateobject-observedobject</link>
      <description><![CDATA[<h2 data-selectable-paragraph="">@StateObject, @EnvironmentObject, and @ObservedObject</h2>
<p data-selectable-paragraph="">I’ve decided to dedicate this week to exploring <strong>data flow in SwiftUI</strong>. In this article, we’ll discuss the differences between the <code>@StateObject</code>, <code>@EnvironmentObject</code>, and <code>@ObservedObject</code> property wrappers. From my experience, this is often the most confusing topic for developers just starting out with <a href="https://dzone.com/articles/make-observable-wrapper-for-a-better-state-control">SwiftUI</a>.</p>
<h2 data-selectable-paragraph="">Why do we need property wrappers in SwiftUI?</h2>
<p data-selectable-paragraph="">SwiftUI uses <strong>immutable</strong> struct types to describe the view hierarchy. Every view provided by the framework is inherently immutable. This is why SwiftUI provides a specific set of property wrappers to handle data changes.</p><img src="https://feeds.dzone.com/link/23563/17335532.gif" height="1" width="1"/>]]></description>
      <pubDate>Wed, 06 May 2026 14:00:04 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3643679</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=18961225&amp;w=600"/>
      <dc:creator>Pavel Andreev</dc:creator>
    </item>
    <item>
      <title>Spring Boot Done Right: Lessons From a 400-Module Codebase</title>
      <link>https://feeds.dzone.com/link/23563/17334950/spring-boot-lessons-modules</link>
      <description><![CDATA[<p data-line="4" dir="auto">Most Spring Boot tutorials show you a controller, a service, a repository, and call it a day. That's fine for a TODO app. But what happens when your application grows to 400 modules, gets deployed at thousands of organizations worldwide, and needs to let operators swap out nearly any component without touching your source code?</p>
<p data-line="6" dir="auto">That's the problem Apereo CAS solves every day. CAS — the <a href="https://dzone.com/articles/installing-and-debugging-an-apereo-cas-application">Central Authentication Service</a> — is an identity and single sign-on platform that's been running in production for over 20 years. Its current incarnation is a Spring Boot 3.x application on Java 21+, and its codebase is one of the best real-world examples I've seen of Spring Boot engineering at scale.</p><img src="https://feeds.dzone.com/link/23563/17334950.gif" height="1" width="1"/>]]></description>
      <pubDate>Tue, 05 May 2026 17:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3643488</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=18953972&amp;w=600"/>
      <dc:creator>Dmitriy Kopylenko</dc:creator>
    </item>
    <item>
      <title>Setting Up Claude Code With Ollama: A Guide</title>
      <link>https://feeds.dzone.com/link/23563/17334925/claude-code-ollama-setup-guide</link>
      <description><![CDATA[<div>
 <p>Nowadays, there are quite a lot of AI coding assistants. In this blog, you will take a closer look at Claude Code, a terminal-based AI coding assistant. Since mid January 2026, Claude Code can also be used in combination with Ollama, a local inference engine. Enjoy!</p>
 <h2>Introduction</h2>
 <p>There are many AI models and also many AI coding assistants. Which one to choose is a hard question. It also depends on whether you run the models locally or in the cloud. When running locally, Qwen3-Coder is a very good AI model to be used for programming tasks. In previous posts, <a href="https://mydeveloperplanet.com/2024/10/08/devoxxgenie-your-ai-assistant-for-idea/" rel="noopener noreferrer" target="_blank">DevoxxGenie</a>, a JetBrains IDE plugin, was often used as an AI coding assistant. DevoxxGenie is nicely integrated within the JetBrains IDEs. But it is also a good thing to take a look at other AI coding assistants. In a <a href="https://mydeveloperplanet.com/2026/02/25/getting-started-with-qwen-code-for-coding-tasks/" rel="noopener noreferrer" target="_blank">previous blog</a>, Qwen Code was used; now it is time to take a look at Claude Code.</p><img src="https://feeds.dzone.com/link/23563/17334925.gif" height="1" width="1"/>]]></description>
      <pubDate>Tue, 05 May 2026 15:30:06 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3653316</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19007229&amp;w=600"/>
      <dc:creator>Gunter Rotsaert</dc:creator>
    </item>
  </channel>
</rss>
