<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Serverside Java on JAVAPRO International</title><link>https://javapro-en.svenruppert.com/categories/serverside-java/</link><description>Recent content in Serverside Java on JAVAPRO International</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Wed, 15 Jul 2026 07:00:02 +0000</lastBuildDate><atom:link href="https://javapro-en.svenruppert.com/categories/serverside-java/index.xml" rel="self" type="application/rss+xml"/><item><title>Serverless Functions Reimagined with Java 25</title><link>https://javapro-en.svenruppert.com/serverless-functions-reimagined-with-java-25/</link><pubDate>Wed, 15 Jul 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/serverless-functions-reimagined-with-java-25/</guid><description>&lt;p&gt;Serverless computing whether on AWS Lambda, Azure Functions, or Google Cloud Functions plays a vital role in modern distributed systems. By abstracting infrastructure away from application code, serverless platforms allow developers to focus on business logic. These functions scale automatically and can be highly cost-efficient when applied to the right use cases.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;
In serverless platforms, applications may be started many times a day and often run only for a few seconds. They are scaled up and down automatically and may be paused or frozen between requests. This behavior does not only affect performance; it also directly impacts cost, since billing is often based on execution time and allocated memory.&lt;/p&gt;</description></item><item><title>API Development: Implementing an HTTP POST/SSE event in Jakarta REST</title><link>https://javapro-en.svenruppert.com/api-development-implementing-an-http-post-sse-event-in-jakarta-rest/</link><pubDate>Tue, 30 Jun 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/api-development-implementing-an-http-post-sse-event-in-jakarta-rest/</guid><description>&lt;p&gt;In this article, we’ll learn how to send messages to a client using Server-Sent Events (SSE) initiated by a client&amp;rsquo;s persistent HTTP POST connection.&lt;/p&gt;
&lt;h2 id="1-what-is-server-sent-events-sse"&gt;1. What is Server-Sent Events (SSE)?&lt;/h2&gt;
&lt;p&gt;Server-Sent Events (SSE) is a web push technology, based on the HTTP protocol, that allows clients to subscribe to a stream of events, pushed by the servers over a persistent HTTP connection. The server sends chunks of data (as data event streams) asynchronously to the client, once the client connection is established.&lt;/p&gt;</description></item><item><title>2: The Jakarta Cliff: Why Modern Java Leaves Struts 1 Behind</title><link>https://javapro-en.svenruppert.com/2-the-jakarta-cliff-why-modern-java-leaves-struts-1-behind/</link><pubDate>Thu, 18 Jun 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/2-the-jakarta-cliff-why-modern-java-leaves-struts-1-behind/</guid><description>&lt;p&gt;This is the second in a series of articles exploring the realities of modernisation. In this article, you&amp;rsquo;ll learn about:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The Modern Java Breakpoint:&lt;/strong&gt; Why the shift from &lt;code&gt;javax&lt;/code&gt; to &lt;code&gt;jakarta&lt;/code&gt; creates an unfixable compatibility break for Struts 1 on modern containers like Tomcat 10 and Jetty 11.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The External Pressure Cooker:&lt;/strong&gt; How platform baselines, security policies, and cloud migrations force the issue, even if the application code itself hasn&amp;rsquo;t changed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Why &amp;ldquo;Shims&amp;rdquo; Fail:&lt;/strong&gt; A look at why attempting to patch compatibility with shims is not a viable long-term solution for production environments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safe Operation Strategies:&lt;/strong&gt; What it practically means to run Struts securely on older containers without exposing the rest of your infrastructure to risk.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Path to Modernisation:&lt;/strong&gt; How to use incremental migration patterns and extended support to modernise on your own terms, avoiding risky &amp;ldquo;big-bang&amp;rdquo; rewrites.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/12/struts1-banner-1024x358.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>1: Why Struts 1.3 Still Matters in 2026</title><link>https://javapro-en.svenruppert.com/1-why-struts-1-3-still-matters-in-2026/</link><pubDate>Tue, 16 Jun 2026 16:41:08 +0000</pubDate><guid>https://javapro-en.svenruppert.com/1-why-struts-1-3-still-matters-in-2026/</guid><description>&lt;p&gt;What You’ll Learn&lt;/p&gt;
&lt;p&gt;&lt;br&gt;
This article is the first in a series that explores why Struts 1 still shows up (quietly but persistently) in enterprise systems in 2026, and what that means for teams trying to keep the lights on.&lt;/p&gt;
&lt;p&gt;We look at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The Discovery Effect&lt;/strong&gt;: How stable, forgotten Struts apps resurface during audits, migrations, and security scans.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Where the Friction Really Is&lt;/strong&gt;: The talent shortage, the tooling disconnect, and the Jakarta EE shift: all colliding to make legacy upkeep harder than it should be.&lt;/li&gt;
&lt;li&gt;Modernisation Without the Fantasy: Why the rewrite-or-risk framing misleads teams, and how approaches like embedding Struts in Spring Boot create workable transition paths.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Buying Breathing Room&lt;/strong&gt;: How extended support gives organisations time to avoid crisis-driven decision-making.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/12/struts1-banner-1024x358.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>BoxLang v1.13.0: Compatibility, Concurrency, and Formatter Maturity</title><link>https://javapro-en.svenruppert.com/boxlang-v1-13-0-compatibility-concurrency-and-formatter-maturity/</link><pubDate>Mon, 15 Jun 2026 12:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-v1-13-0-compatibility-concurrency-and-formatter-maturity/</guid><description>&lt;p&gt;&lt;strong&gt;BoxLang 1.13.0&lt;/strong&gt; is a stability-first release with deep compatibility work and runtime hardening. This build closes 48 issues, with the majority focused on CFML compatibility edge cases, concurrency correctness, formatting parity, and miniserver/runtime reliability under real production loads.&lt;/p&gt;
&lt;p&gt;While this release is bug-fix heavy, it still introduces several meaningful features and quality-of-life improvements: character-aware trimming, class metadata lookup by absolute path, process environment control in SystemExecute(), SOAP headers, new query column rename capabilities, and safer miniserver routing/security defaults.&lt;/p&gt;</description></item><item><title>Open-Core with Core Java and Vaadin — Part 2</title><link>https://javapro-en.svenruppert.com/open-core-with-core-java-and-vaadin-part-2/</link><pubDate>Sat, 23 May 2026 11:33:42 +0000</pubDate><guid>https://javapro-en.svenruppert.com/open-core-with-core-java-and-vaadin-part-2/</guid><description>&lt;p&gt;&lt;em&gt;Editions, runtime, and quality assurance.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;All source code presented here is published on GitHub and available at &lt;strong&gt;&lt;a href="https://3g3.eu/naityh"&gt;https://3g3.eu/naityh&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="recap-of-part-one"&gt;Recap of part one&lt;/h2&gt;
&lt;p&gt;The first part of this article developed the abstract mechanics of the open-core application. From two independent Maven projects with strictly asymmetric dependency direction, a deliberately slim extension API with the contribution types &lt;code&gt;RouteContribution&lt;/code&gt;, &lt;code&gt;MenuContribution&lt;/code&gt;, &lt;code&gt;NavbarContribution&lt;/code&gt;, and &lt;code&gt;CounterEventListener&lt;/code&gt;, a &lt;code&gt;FeatureRegistry&lt;/code&gt; that discovers its contributions via the Java standard library&amp;rsquo;s &lt;code&gt;ServiceLoader&lt;/code&gt;, and a Vaadin integration consisting of &lt;code&gt;MainLayout&lt;/code&gt; and &lt;code&gt;OpenCoreRouteInitializer&lt;/code&gt;, an apparatus is now in place that can accept arbitrary contributions in ordered form, without the core needing to know their identity.&lt;/p&gt;</description></item><item><title>Petabyte-Scale AI Memory with Serverless Java</title><link>https://javapro-en.svenruppert.com/petabyte-scale-ai-memory-with-serverless-java/</link><pubDate>Wed, 15 Apr 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/petabyte-scale-ai-memory-with-serverless-java/</guid><description>&lt;p&gt;&lt;a href="https://youtu.be/KfXn6v_DmTo"&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2026/03/2026-Magazin-Artikel-Banner-1024x213.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The current wave of Generative AI innovation is built on a paradox. While models are becoming more powerful and efficient, the infrastructure required to operate them at scale is becoming increasingly wasteful. Enterprises are investing millions into compute, storage, and energy, yet a significant portion of these resources remains idle. Modern vector databases, graph systems, and caching layers are based on a monolithic architecture run as always-on clusters, consuming CPU and RAM regardless of whether data is actively accessed. Studies and industry analyses consistently show that up to 80% of compute resources in such systems are effectively wasted on idle workloads.&lt;/p&gt;</description></item><item><title>Build Vector Database Apps with Pure Java</title><link>https://javapro-en.svenruppert.com/build-vector-database-apps-with-pure-java/</link><pubDate>Thu, 02 Apr 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/build-vector-database-apps-with-pure-java/</guid><description>&lt;p&gt;&lt;a href="https://youtu.be/MRSdUfnXgQE"&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2026/03/2026-Magazin-Artikel-Banner-1024x213.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Java ecosystem is entering a new phase. Generative AI is no longer experimental; it is becoming a foundational capability in enterprise systems. Yet while frameworks for inference and orchestration have matured, one critical bottleneck continues to slow down adoption: data access for semantic retrieval.&lt;/p&gt;
&lt;p&gt;At the heart of modern GenAI systems lies Retrieval-Augmented Generation (RAG). This paradigm depends on fast access to embeddings - high-dimensional vectors that represent meaning. For Java developers, integrating this capability has historically meant introducing an external vector database into the architecture. What appears to be a straightforward design decision quickly becomes a source of complexity, inefficiency, and architectural friction.&lt;/p&gt;</description></item><item><title>Testing Spring BOOT Applications DEMYSTIFIED</title><link>https://javapro-en.svenruppert.com/testing-spring-boot-applications-demystified/</link><pubDate>Wed, 11 Mar 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/testing-spring-boot-applications-demystified/</guid><description>&lt;p&gt;&lt;a href="https://youtu.be/Tr24w--ZXgU"&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2026/03/2026-Magazin-Artikel-Banner-1024x213.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Imagine it&amp;rsquo;s Friday, 5:00 PM. A pull request appears: a major update to Spring Boot 4.&lt;/p&gt;
&lt;p&gt;Your CI/CD pipeline turns green.&lt;/p&gt;
&lt;p&gt;Do you click &amp;ldquo;Merge&amp;rdquo; and head home for the weekend, confident that production will survive?&lt;/p&gt;
&lt;p&gt;For many developers, this &amp;ldquo;Friday Afternoon Deployment&amp;rdquo; is less of a goal and more of a gamble.&lt;/p&gt;
&lt;p&gt;Developers often treat testing as a chore - a box to tick for code coverage metrics - rather than a source of confidence. Writing tests in Spring Boot can feel like entering a labyrinth blindfolded: dozens of annotations, confusing configurations, and the looming threat of build times that stretch into coffee-break territory.&lt;/p&gt;</description></item><item><title>Jakarta Data and NoSQL - Standardized Data Access for Jakarta EE</title><link>https://javapro-en.svenruppert.com/jakarta-data-and-nosql-standardized-data-access-for-jakarta-ee/</link><pubDate>Tue, 03 Mar 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/jakarta-data-and-nosql-standardized-data-access-for-jakarta-ee/</guid><description>&lt;p&gt;The amount of data collected by applications nowadays is growing rapidly. Many of them need to support both relational SQL and non-relational NoSQL databases. Jakarta Data provides an API to allow easy data access. Developers can split the persistence mechanism and the model using common features like the Repository pattern and seamlessly switch between SQL and NoSQL databases or even use both in the same application.&lt;/p&gt;
&lt;h2 id="what-are-nosql-databases"&gt;What are NoSQL Databases?&lt;/h2&gt;
&lt;p&gt;NoSQL databases, also called “not only SQL”, “non-Relational” or “non-SQL”, are a type of database management system, where storage and querying data are performed differently from traditional ways used in relational databases.&lt;/p&gt;</description></item><item><title>Bring AI into your Jakarta EE apps with LangChain4J-CDI (formerly SmallRye-LLM)</title><link>https://javapro-en.svenruppert.com/bring-ai-into-your-jakarta-ee-apps-with-langchain4j-cdi-formerly-smallrye-llm/</link><pubDate>Wed, 25 Feb 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/bring-ai-into-your-jakarta-ee-apps-with-langchain4j-cdi-formerly-smallrye-llm/</guid><description>&lt;p&gt;&lt;strong&gt;Goal&lt;/strong&gt;: This article will demonstrate how to add AI features to a Jakarta EE / MicroProfile application using &lt;strong&gt;LangChain4J‑CDI&lt;/strong&gt;, with simple to implement examples that runs on Payara, WildFly, Open Liberty, Helidon, Quarkus or any CDI 4.x compatible runtime.&lt;/p&gt;
&lt;h2 id="what-is-langchain4j-cdi"&gt;What is LangChain4J-CDI?&lt;/h2&gt;
&lt;p&gt;Langchain4J is a Java library that simplifies the integration of AI and LLMs easier, and with their feature of AI services it provides a declarative and type-safe API for developers to define interfaces that represent AI services, abstracting away the complexities of direct LLM communication&lt;/p&gt;</description></item><item><title>Build your custom plugins for your enterprise java applications with jakarta ee CDI</title><link>https://javapro-en.svenruppert.com/build-your-custom-plugins-for-your-enterprise-java-applications-with-jakarta-ee-cdi/</link><pubDate>Tue, 03 Feb 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/build-your-custom-plugins-for-your-enterprise-java-applications-with-jakarta-ee-cdi/</guid><description>&lt;p&gt;One fundamental feature of CDI is the integration of third-party libraries and frameworks into the CDI container of choice, providing the full benefits of CDI.&lt;/p&gt;
&lt;p&gt;In this article we’ll showcase how you can integrate your own custom or any third-party Java library into the CDI container, thus leveraging the power and behaviour of CDI, to provide new functionality to your application, by implementing your own CDI Portable extension.&lt;/p&gt;
&lt;p&gt;This article references the CDI 4.0 specification, leveraging the CDI Full scope. It will exclude the CDI Build Compatible Extension (introduced in CDI 4.0) entirely.&lt;/p&gt;</description></item><item><title>Apache Causeway - GOING FURTHER</title><link>https://javapro-en.svenruppert.com/apache-causeway-going-further/</link><pubDate>Thu, 01 Jan 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/apache-causeway-going-further/</guid><description>In this article we&amp;rsquo;ll continue our exploration of the Apache Causeway, a Spring Boot framework for domain-driven apps following the naked objects pattern. Our focus this time is the framework&amp;rsquo;s support for validation, on testing, and we&amp;rsquo;ll also look at some additional UI hints.</description></item><item><title>High Speed JPA</title><link>https://javapro-en.svenruppert.com/high-speed-jpa/</link><pubDate>Wed, 31 Dec 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/high-speed-jpa/</guid><description>&lt;p&gt;JPA sometimes carries the stigma of being “too slow for production.” Yet in countless projects, it has quietly powered reliable enterprise systems at scale. The truth is more nuanced: JPA itself is not the bottleneck — but the way we use it can turn convenience into catastrophe. In this article, we’ll explore why green tests can hide critical performance problems, and how a handful of practical techniques can transform JPA from a suspected culprit into a trusted high-speed partner.&lt;/p&gt;</description></item><item><title>Code. Collaboration. Community.</title><link>https://javapro-en.svenruppert.com/code-collaboration-community/</link><pubDate>Wed, 24 Dec 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/code-collaboration-community/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;JCON USA @ IBM TechXchange 2025 – where the spirit of Java found a new home in Orlando.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;When the JCON team announced they were bringing their renowned Java conference series across the Atlantic, expectations were high. Known for its lively spirit and deep technical content, JCON Europe has become a must-attend event for Java developers. Its first U.S. edition – &lt;strong&gt;JCON USA @ IBM TechXchange 2025&lt;/strong&gt; – not only met those expectations but exceeded them, uniting Java professionals from around the world under one roof in Orlando.&lt;/p&gt;</description></item><item><title>As Java EE 8 Runtimes Age, What Comes Next for Enterprise Java Applications?</title><link>https://javapro-en.svenruppert.com/as-java-ee-8-runtimes-age-what-comes-next-for-enterprise-java-applications/</link><pubDate>Wed, 03 Dec 2025 07:00:00 +0000</pubDate><guid>https://javapro-en.svenruppert.com/as-java-ee-8-runtimes-age-what-comes-next-for-enterprise-java-applications/</guid><description>The majority of mission-critical enterprise applications still run on Java EE 8. However, their middleware foundations are beginning to shift, leaving many Java developers and organizations wondering what to do.</description></item><item><title>Apache Causeway - An Introduction</title><link>https://javapro-en.svenruppert.com/apache-causeway-an-introduction/</link><pubDate>Tue, 30 Sep 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/apache-causeway-an-introduction/</guid><description>In this article we explore key concepts of the Apache Causeway framework, learning how it surfaces domain logic directly in the UI, with minimal boilerplate. You’ll gain a practical understanding of how Causeway supports rapid prototyping and domain-driven development.</description></item><item><title>Java at Eclipse: Honoring the Legacy, Securing the Future of Open Source Innovation</title><link>https://javapro-en.svenruppert.com/java-at-eclipse-honoring-the-legacy-securing-the-future-of-open-source-innovation/</link><pubDate>Wed, 03 Sep 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/java-at-eclipse-honoring-the-legacy-securing-the-future-of-open-source-innovation/</guid><description>&lt;p&gt;Java changed software development and reshaped open source innovation forever, but its future was uncertain for a while. Would it remain an innovative force, or would closed governance and slow progress relegate it to history? Enter the Eclipse Foundation, &lt;strong&gt;where the future of open source Java was reimagined.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Java’s journey famously began in the mid-1990s, revolutionising software development with its “write once, run anywhere” promise. Originally, Java, the language, was called &amp;ldquo;Oak,&amp;rdquo; a name chosen by its creator, James Gosling, after an oak tree outside his office. Oak trees are known for their deep roots and longevity, much like Java, which has remained a cornerstone of software development for decades. While the name was later changed due to trademark issues, its original symbolism reflects Java’s foundational role in modern computing: a language built to be powerful, adaptable, and enduring. Open-sourced by Oracle in 2007, it has become the backbone of enterprise applications, cloud computing, and mobile development.&lt;/p&gt;</description></item><item><title>Navigating the Waves of Concurrency: Exploring Jakarta Concurrency</title><link>https://javapro-en.svenruppert.com/navigating-the-waves-of-concurrency-exploring-jakarta-concurrency/</link><pubDate>Tue, 02 Sep 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/navigating-the-waves-of-concurrency-exploring-jakarta-concurrency/</guid><description>&lt;p&gt;&amp;ldquo;&lt;em&gt;In a concurrent world, imperative is the wrong default!&lt;/em&gt;&amp;rdquo;&lt;/p&gt;
&lt;p&gt;In the vast ocean of software development, concurrency stands as a formidable wave to be mastered. With the ever-increasing demand for high-performance, scalable applications, understanding and effectively implementing concurrency becomes crucial. Among the many tools and frameworks available, Jakarta Concurrency shines as a beacon, offering developers a robust set of tools to navigate the complexities of concurrent programming in Java. In this blog post, we’ll explore Jakarta Concurrency through practical code examples, demonstrating its key features and best practices.&lt;/p&gt;</description></item><item><title>Modernize Java Applications with Amazon EKS: A Cloud-Native Approach</title><link>https://javapro-en.svenruppert.com/modernize-java-applications-with-amazon-eks-a-cloud-native-approach/</link><pubDate>Tue, 19 Aug 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/modernize-java-applications-with-amazon-eks-a-cloud-native-approach/</guid><description>&lt;p&gt;Cloud-native development has become the cornerstone of modern application development, with containerization leading the charge in deployment strategies. For Java developers and enterprises with significant Java investments, the journey to cloud-native architecture presents both opportunities and challenges. This article explores how Amazon EKS, combined with cutting-edge technologies like &lt;a href="https://wiki.openjdk.org/display/crac"&gt;Coordinated Restore at Checkpoint (CRaC)&lt;/a&gt; and &lt;a href="https://quarkus.io/"&gt;Quarkus&lt;/a&gt;, is revolutionizing Java application deployment in the cloud.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://aws.amazon.com/eks/"&gt;Amazon Elastic Kubernetes Service (Amazon EKS)&lt;/a&gt; is a fully managed Kubernetes service that enables customers to run Kubernetes seamlessly in both AWS Cloud and on-premises data centers. In the cloud, Amazon EKS automates Kubernetes cluster infrastructure management. This is essential for scheduling containers, managing application availability, dynamically scaling resources, optimizing compute, storing cluster data, and performing other critical functions. With Amazon EKS, customers can leverage the robust performance, scalability, reliability, and availability of AWS infrastructure, as well as natively integrate with AWS networking, security, and storage services. To simplify running Kubernetes in on-premises environments, customers can use the same Amazon EKS clusters, features, and tools to run nodes on &lt;a href="https://aws.amazon.com/outposts/"&gt;AWS Outposts&lt;/a&gt; or their own infrastructure, or customers can use &lt;a href="https://aws.amazon.com/eks/eks-anywhere"&gt;Amazon EKS Anywhere&lt;/a&gt; for self-contained, air-gapped environments.&lt;/p&gt;</description></item><item><title>Is Java Cloud Native?</title><link>https://javapro-en.svenruppert.com/is-java-cloud-native/</link><pubDate>Tue, 29 Jul 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/is-java-cloud-native/</guid><description>&lt;p&gt;With the 30th anniversary just around the corner, Java is still going strong. Backward compatibility, active community, and numerous tools facilitate Java development and make the platform a natural choice for enterprise applications.&lt;/p&gt;
&lt;p&gt;And yet, when it comes to the cloud, Go, JavaScript, Ruby, Kotlin, or Rust tend to be a preferred choice for their speed, concurrency, and ease-of-use. WebAssembly or Wasm is also gaining popularity when it comes to web development. But IT teams often take Java’s ability to produce cloud-native programs with a grain of salt.&lt;/p&gt;</description></item><item><title>Mastering the Basics of Domain-Driven Design with Java</title><link>https://javapro-en.svenruppert.com/mastering-the-basics-of-domain-driven-design-with-java/</link><pubDate>Tue, 01 Jul 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/mastering-the-basics-of-domain-driven-design-with-java/</guid><description>&lt;p&gt;Domain-driven design (DDD) is a critical approach in software development, yet its essence often gets buried under layers of complexity and misunderstanding. At its core, DDD aims to align software design with the needs of the business or stakeholders, ensuring that what we build addresses real problems. Even that sounds like a cliche in software development, and obviously, it is still a challenge to most organizations.&lt;/p&gt;
&lt;p&gt;One standout example is &lt;em&gt;Forbes&amp;rsquo; 16 Obstacles to a Successful Software Project&lt;/em&gt;, which emphasizes challenges such as hyper-focused planning, unclear expectations, and poor collaboration. These issues often lead to scenarios where software is more about managing complexity than solving problems.&lt;/p&gt;</description></item><item><title>Revitalizing Legacy Code</title><link>https://javapro-en.svenruppert.com/revitalizing-legacy-code/</link><pubDate>Thu, 26 Jun 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/revitalizing-legacy-code/</guid><description>Java has been the backbone of web and enterprise applications for 30 years, powering everything from banking systems to large-scale logistics platforms. Not only is the technology still widely used, but some of the earliest enterprise Java applications developed in the 1990s and early 2000s are still running, playing a key role in business operations. So, how can developers bring these essential 3</description></item><item><title>Java in Critical Operations: How Custom Development Ensures Control and Secures Mission-Critical Systems</title><link>https://javapro-en.svenruppert.com/java-in-critical-operations-how-custom-development-ensures-control-and-secures-mission-critical-systems/</link><pubDate>Mon, 02 Jun 2025 08:15:19 +0000</pubDate><guid>https://javapro-en.svenruppert.com/java-in-critical-operations-how-custom-development-ensures-control-and-secures-mission-critical-systems/</guid><description>&lt;p&gt;When IT fails, no one notices—until everyone does.&lt;br&gt;
Whether in hospitals, energy grids, or airports, stable operation of digital systems in safety-critical environments is not an option, but a strict requirement. This is where infrastructure must prove its resilience, scalability, and independence in the face of real-world crises.&lt;/p&gt;
&lt;p&gt;A prime example is Fraport AG, operator of one of Europe’s largest aviation hubs. When baggage goes missing or safety-critical information is delayed, it’s not just individual passengers’ vacations that are at risk—the operational stability of the entire airport is on the line. Behind the scenes of such a hub runs an extremely complex digital infrastructure that must operate reliably 24/7, despite increasing demands, ageing legacy systems, and tightening security regulations.&lt;/p&gt;</description></item><item><title>A Look Back at Java's 30-year Journey with Databases</title><link>https://javapro-en.svenruppert.com/a-look-back-at-javas-30-year-journey-with-databases/</link><pubDate>Wed, 21 May 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/a-look-back-at-javas-30-year-journey-with-databases/</guid><description>&lt;p&gt;Written by &lt;a href="https://www.linkedin.com/in/sambodden/"&gt;Brian Sam-Bodden&lt;/a&gt; &amp;amp; &lt;a href="https://www.linkedin.com/in/raphaeldelio/"&gt;Raphael De Lio&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When Java 1.0 launched in 1996, both the language and the internet were very different from today. At the time, the web was mostly static, and Java’s promise to “caffeinate” the web by supercharging it with interactive games and animations was promising. According to David Banks, who wrote to Wired in 1995, Java was the hottest thing since Netscape.&lt;/p&gt;
&lt;p&gt;To put it in a better perspective, Java’s origins date back to 1990 when Sun Microsystems struggled to find its place in the consumer market. At the time, they developed Oak, a new programming language designed to be platform-independent, lightweight, and ideal for networked environments. Their first attempt was to commercialize Oak for interactive televisions. &lt;/p&gt;</description></item><item><title>30 Years of Java, 25 Years of Enterprise Java</title><link>https://javapro-en.svenruppert.com/30-year-of-java-25-years-of-enterprise-java/</link><pubDate>Thu, 15 May 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/30-year-of-java-25-years-of-enterprise-java/</guid><description>Over the last three decades, technology has been evolving at a breakneck pace, with innovations constantly redefining every aspect of application development. In such a fast-moving and dynamic landscape, few technologies stand the test of time, especially in computer science. Yet, Java has done just that. As we celebrate 30 years of Java and 25 years of enterprise Java, it’s clear that these solut</description></item><item><title>AI Tools for Jakarta EE</title><link>https://javapro-en.svenruppert.com/ai-tools-for-jakarta-ee/</link><pubDate>Thu, 24 Apr 2025 23:42:38 +0000</pubDate><guid>https://javapro-en.svenruppert.com/ai-tools-for-jakarta-ee/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=sdppIrhwbKk&amp;amp;list=PLFeSAZzYdUodZjQy6a3pCBl43UUem8_E3&amp;amp;index=16"&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/03/Magazin-Artikel-Banner-2-1024x214.jpg" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Artificial Intelligence (AI) is transforming the world of software development, including Jakarta EE. Traditionally, developers relied on project generators, visual designers, and IDE auto-completion to build applications. However, these tools often lacked adaptability, context awareness, and efficiency. AI-powered tools such as &lt;strong&gt;Payara Starter&lt;/strong&gt; and &lt;strong&gt;Jeddict AI Assistant&lt;/strong&gt; are now addressing these limitations, accelerating development workflows, and empowering developers to focus on innovation. This article explores how these tools enhance Jakarta EE development, using a conference application as a practical example. Additionally, it discusses future possibilities, including AI assistants integrated with Payara Server for server setup and diagnostics.&lt;/p&gt;</description></item><item><title>Structured concurrency</title><link>https://javapro-en.svenruppert.com/structured-concurrency/</link><pubDate>Fri, 18 Apr 2025 07:00:03 +0000</pubDate><guid>https://javapro-en.svenruppert.com/structured-concurrency/</guid><description>&lt;p&gt;Structured Concurrency was the second delivery that came out of Project Loom. It was first introduced in Java 19 as a preview API. It aimed to simplify multithreaded programming by treating multiple tasks running in different threads as a single unit of work, thereby streamlining makes the code more readable, streamlining error handling, improving reliability, and enhancing observerability.&lt;/p&gt;
&lt;p&gt;In this article, we will look at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Look at what structured concurrency is.&lt;/li&gt;
&lt;li&gt;Look at an example using structured concurrency.&lt;/li&gt;
&lt;li&gt;Dive into the underlying API with StructuredTaskScope.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-is-structured-concurrency"&gt;&lt;strong&gt;What is Structured Concurrency&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Structured concurrency allows developers to reason about concurrent code by defining precise points where execution splits into multiple tasks and where those tasks subsequently merge. It brings the same level of organization to concurrency that &lt;code&gt;for&lt;/code&gt; loops and &lt;code&gt;if&lt;/code&gt; branches bring to structured programming. It achieves this by restricting the lifespan of concurrent operations to specific scopes. Similar to how variables within a &lt;code&gt;if&lt;/code&gt; statement in structured programming are bound to that block, concurrent operations within a structured scope are terminated upon exiting that scope. This ensures that threads do not linger, preventing memory leaks and wasted CPU resources.&lt;/p&gt;</description></item><item><title>Speed Up Existing Deployments with the Right JVM Features</title><link>https://javapro-en.svenruppert.com/speed-up-existing-deployments-with-the-right-jvm-features/</link><pubDate>Thu, 17 Apr 2025 09:33:21 +0000</pubDate><guid>https://javapro-en.svenruppert.com/speed-up-existing-deployments-with-the-right-jvm-features/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=6628huqjF9s&amp;amp;list=PLFeSAZzYdUodZjQy6a3pCBl43UUem8_E3&amp;amp;index=14"&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/04/Magazin-Artikel-Banner-2-1024x214.jpg" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In today&amp;rsquo;s tech landscape, Java applications face a critical challenge. Organizations need to meet growing performance demands while keeping infrastructure costs under control, without costly redevelopment efforts.&lt;/p&gt;
&lt;p&gt;This challenge has intensified with cloud computing adoption. Every millisecond of latency and every megabyte of memory now directly impacts ongoing expenses. The numbers are striking: based on my experience, poorly configured JVMs typically can increase cloud costs by 30-50%. For large enterprises, this represents millions in avoidable expenses.&lt;/p&gt;</description></item><item><title>Hitchhiker's Guide to Java Performance</title><link>https://javapro-en.svenruppert.com/hitchhikers-guide-to-java-performance/</link><pubDate>Mon, 07 Apr 2025 11:43:20 +0000</pubDate><guid>https://javapro-en.svenruppert.com/hitchhikers-guide-to-java-performance/</guid><description>&lt;h2 id="the-past-the-present-and-the-future"&gt;The Past, The Present and The Future&lt;/h2&gt;
&lt;p&gt;Over the last 30 years, Java has evolved from an exotic “write once, run anywhere” language to one of the dominant platforms for software development worldwide. In the early years, Java was justifiably considered slow compared to languages such as C/C++, which was mainly due to the initial interpreter approach. However, the last three decades have shown that the VM concept with HotSpot’s adaptive optimization is clearly the superior approach.&lt;br&gt;
&lt;strong&gt;by Ingo Düppe&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>The quick check for your software - the Software Coma Scale (SCS)</title><link>https://javapro-en.svenruppert.com/the-quick-check-for-your-software-the-software-coma-scale-scs/</link><pubDate>Mon, 07 Apr 2025 11:22:49 +0000</pubDate><guid>https://javapro-en.svenruppert.com/the-quick-check-for-your-software-the-software-coma-scale-scs/</guid><description>&lt;p&gt;Do you know this situation: You have are sitting on your desk when your boss asks you to “just have a look at an old software-system” at its current status? Since he doesn&amp;rsquo;t know much about your job (IT), you have to use a system that&lt;/p&gt;
&lt;p&gt;a) he understands and&lt;/p&gt;
&lt;p&gt;b) allows you to make an informed assessment relatively quickly.&lt;/p&gt;
&lt;p&gt;Or a customer asks whether you could change this or that thing in a system you don&amp;rsquo;t know - or even take over the maintenance for it. And just like your boss, he is not an IT specialist!&lt;/p&gt;</description></item><item><title>From Reactive Streams to Virtual Threads</title><link>https://javapro-en.svenruppert.com/from-reactive-streams-to-virtual-threads/</link><pubDate>Fri, 04 Apr 2025 12:27:42 +0000</pubDate><guid>https://javapro-en.svenruppert.com/from-reactive-streams-to-virtual-threads/</guid><description>&lt;p&gt;Virtual Threads deliver a fast, cheap (in terms of memory &amp;amp; switching speed) threading solution for the JVM. They promise the return of a direct-style, synchronous programming model. But is that enough to challenge the status quo regarding data streaming? Can we have the best of both worlds: the simplicity that Virtual Threads promise and the resilience and safety of Reactive Streams? Let&amp;rsquo;s find out!&lt;/p&gt;
&lt;p&gt;First, a little bit of history. Virtual Threads were released with Java 21 in September 2023, after 6 years of development. Some final limitations of that implementation will be fully lifted with the release of Java 24 in March 2025. &lt;/p&gt;</description></item><item><title>Building a better Mouse Trap - web crawling with Temporal</title><link>https://javapro-en.svenruppert.com/building-a-better-mouse-trap-web-crawling-with-temporal/</link><pubDate>Thu, 03 Oct 2024 14:26:30 +0000</pubDate><guid>https://javapro-en.svenruppert.com/building-a-better-mouse-trap-web-crawling-with-temporal/</guid><description>&lt;p&gt;For various reasons, I’ve been looking at &lt;a href="https://github.com/temporalio"&gt;Temporal&lt;/a&gt; lately. It’s one of those open-source projects with some great users - think Netflix, Uber, etc.- yet has less visibility in the Java community than expected. &lt;/p&gt;
&lt;p&gt;I hope to raise its profile here.&lt;/p&gt;
&lt;p&gt;Before I talk about Temporal, I’ll cover my particular use case.  &lt;em&gt;Stay with me; this needs to be detailed.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="background"&gt;Background&lt;/h3&gt;
&lt;p&gt;A side project I have is to create a Java API comparison tool that can be used to check if moving from version A to version B of a dependency will have issues.  I’m looking beyond the simple class-to-class comparison, I intend to check for a more holistic view to find runtime and compile time problems that might occur within the dependency tree if you upgrade something. &lt;/p&gt;</description></item></channel></rss>