<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Open Source on JAVAPRO International</title><link>https://javapro-en.svenruppert.com/categories/open-source/</link><description>Recent content in Open Source on JAVAPRO International</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Fri, 03 Jul 2026 12:00:01 +0000</lastBuildDate><atom:link href="https://javapro-en.svenruppert.com/categories/open-source/index.xml" rel="self" type="application/rss+xml"/><item><title>BoxLang’s First 11 Months: Explosive Growth, Developer Empowerment, and the Return of Dynamic Language!</title><link>https://javapro-en.svenruppert.com/boxlangs-first-11-months-explosive-growth-developer-empowerment-and-the-return-of-dynamic-language/</link><pubDate>Fri, 03 Jul 2026 12:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlangs-first-11-months-explosive-growth-developer-empowerment-and-the-return-of-dynamic-language/</guid><description>&lt;blockquote class="pullquote"&gt;
 &lt;span class="pullquote-mark" aria-hidden="true"&gt;“&lt;/span&gt;
 &lt;div class="pullquote-body"&gt;&lt;p&gt;&lt;em&gt;11 months. 13 releases. Production workloads already running. If you haven&amp;rsquo;t evaluated BoxLang yet, now is the time.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.ortussolutions.com/blog/boxlangs-first-11-months-explosive-growth-developer-empowerment-and-the-return-of-dynamic-languages"&gt;https://www.ortussolutions.com/blog/boxlangs-first-11-months-explosive-growth-developer-empowerment-and-the-return-of-dynamic-languages&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;hr&gt;
&lt;p&gt;At Into the Box 2026, &lt;a href="https://ai.ortussolutions.com"&gt;Ortus Solutions&lt;/a&gt; pulled back the curtain on something that deserves serious attention from every technical leader building on the JVM: &lt;a href="https://boxlang.io/"&gt;BoxLang&lt;/a&gt; is not a hobbyist language experiment. It is a production-grade, actively evolving development platform with enterprise adoption already underway and a runtime footprint that now reaches places Java simply cannot go.&lt;/p&gt;</description></item><item><title>BoxLang 1.14.0 : Query Transformers: Take Full Control of Your Query Results</title><link>https://javapro-en.svenruppert.com/boxlang-1-14-0-query-transformers-take-full-control-of-your-query-results/</link><pubDate>Wed, 01 Jul 2026 12:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-1-14-0-query-transformers-take-full-control-of-your-query-results/</guid><description>&lt;p&gt;BoxLang 1.14.0 ships a lot of exciting features &amp;ndash; Dynamic Sets, Ranges, Inner Classes, JSONPath navigation &amp;ndash; but one quietly powerful addition will change the way you think about every database call in your application: &lt;strong&gt;Query Transformers&lt;/strong&gt;, and this is just the start, we have plans for a whole lot more cool query features.&lt;/p&gt;
&lt;p&gt;If you have ever executed a query and then immediately written a loop to reshape the result into what you actually needed, this feature is for you.&lt;/p&gt;</description></item><item><title>BoxLang 1.14.0 : Introducing Inner Classes</title><link>https://javapro-en.svenruppert.com/boxlang-1-14-0-introducing-inner-classes/</link><pubDate>Mon, 29 Jun 2026 12:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-1-14-0-introducing-inner-classes/</guid><description>&lt;p&gt;BoxLang has always embraced a simple truth: the way you organize code shapes the way you think about problems. For a long time, if you needed a helper class, you needed a file. One class, one &lt;code&gt;.bx&lt;/code&gt; file, no exceptions. This also stemmed from the CFML days. That&amp;rsquo;s clean and predictable, but it creates real friction when a class is tightly coupled to exactly one caller and has no business existing anywhere else.&lt;/p&gt;</description></item><item><title>BoxLang 1.14.0 : BoxSet is Here: BoxLang's New First-Class Set Type</title><link>https://javapro-en.svenruppert.com/boxlang-1-14-0-boxset-is-here-boxlangs-new-first-class-set-type/</link><pubDate>Fri, 26 Jun 2026 12:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-1-14-0-boxset-is-here-boxlangs-new-first-class-set-type/</guid><description>&lt;p&gt;BoxLang 1.14.0 ships with a new &lt;strong&gt;dynamic first-class Set type&lt;/strong&gt; baked directly into the language. Not a wrapper you reach for manually, not a &lt;code&gt;createObject( &amp;quot;java&amp;quot;, &amp;quot;java.util.HashSet&amp;quot; )&lt;/code&gt; incantation you paste from a Stack Overflow answer years ago. A real &lt;code&gt;BoxSet&lt;/code&gt; with literal syntax, operator overloads, a full functional pipeline, change listeners, JSON serialization, and deep Java interop.&lt;/p&gt;
&lt;p&gt;If you have ever deduplicated an array with a loop, compared two collections element by element, or modeled a permission system on top of a struct &amp;ndash; Sets are the tool you were missing. Let&amp;rsquo;s dig in.&lt;/p&gt;</description></item><item><title>BoxLang 1.14.0 : Sets, Ranges, Inner Classes, and a Runtime That Talks Back</title><link>https://javapro-en.svenruppert.com/boxlang-1-14-0-sets-ranges-inner-classes-and-a-runtime-that-talks-back/</link><pubDate>Wed, 24 Jun 2026 12:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-1-14-0-sets-ranges-inner-classes-and-a-runtime-that-talks-back/</guid><description>&lt;p&gt;BoxLang has never stood still, but &lt;strong&gt;version 1.14.0&lt;/strong&gt; is something different. This is the release where the language stops filling gaps and starts defining what a modern dynamic JVM language looks like on its own terms. Sixty-five issues closed. Four innovative language features. A formatter that has grown up. And a companion module - &lt;code&gt;bx-mcp&lt;/code&gt; - that fundamentally changes how you operate a running BoxLang application with AI.&lt;/p&gt;
&lt;p&gt;This could have easily been a major release for the team. This has been a really amazing effort by everybody at Ortus, and we&amp;rsquo;ve received great feedback from our clients migrating to BoxLang and coming up with innovative ideas for this platform. We have only just begun!&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>Build Cross-Platform Desktop Apps with BoxLang</title><link>https://javapro-en.svenruppert.com/build-cross-platform-desktop-apps-with-boxlang/</link><pubDate>Mon, 08 Jun 2026 12:00:00 +0000</pubDate><guid>https://javapro-en.svenruppert.com/build-cross-platform-desktop-apps-with-boxlang/</guid><description>&lt;p&gt;Today we&amp;rsquo;re shipping the &lt;strong&gt;initial release of the BoxLang Desktop Runtime&lt;/strong&gt; — powered by Electron, BoxLang, and Vite. With one starter, one &lt;code&gt;npm run dev&lt;/code&gt;, and one packaging command, you can build and distribute professional desktop applications for &lt;strong&gt;macOS, Windows, and Linux&lt;/strong&gt; using the BoxLang you already know. 🎯&lt;/p&gt;
&lt;p&gt;This is BoxLang&amp;rsquo;s newest runtime joining a deliberately growing list — web servers, AWS Lambda, Google Cloud Functions, Android (in development), and now &lt;strong&gt;desktop&lt;/strong&gt;. Same language, same idioms, same modules — different shell. Write once, deploy where your users are. 🚀&lt;/p&gt;</description></item><item><title>JCON EUROPE 2026: Why the Java Community Still Meets in Person</title><link>https://javapro-en.svenruppert.com/jcon-europe-2026-why-the-java-community-still-meets-in-person/</link><pubDate>Mon, 01 Jun 2026 07:00:00 +0000</pubDate><guid>https://javapro-en.svenruppert.com/jcon-europe-2026-why-the-java-community-still-meets-in-person/</guid><description>&lt;p&gt;Every year, when we start planning JCON EUROPE, one question always guides us:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do we create a conference that developers genuinely enjoy attending?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Not just another event with slides and sponsor booths. Not a place where people passively consume information and leave. We wanted to create an environment where developers actively connect, discuss, challenge ideas, and solve real-world problems together.&lt;/p&gt;
&lt;p&gt;Looking back at JCON EUROPE 2026, I believe this spirit was visible everywhere.&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>Open-Core with Core Java and Vaadin — Part 1</title><link>https://javapro-en.svenruppert.com/open-core-with-core-java-and-vaadin-part-1/</link><pubDate>Fri, 22 May 2026 11:33:04 +0000</pubDate><guid>https://javapro-en.svenruppert.com/open-core-with-core-java-and-vaadin-part-1/</guid><description>&lt;p&gt;&lt;em&gt;Architecture, extension API, and Vaadin integration.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="1-introduction-and-motivation"&gt;1. Introduction and motivation&lt;/h2&gt;
&lt;p&gt;The open-core model is often reduced in discussion to questions of licensing or commercial positioning. An open-source variant of a piece of software is complemented by a commercially distributed variant that brings additional features. Anyone who actually wants to implement such a separation in an existing codebase quickly discovers that the real difficulty lies neither in the licence text nor in the choice of repository, but in the code&amp;rsquo;s architecture.&lt;/p&gt;</description></item><item><title>OpenJ9 GC Policies: How to Choose the Right Collector</title><link>https://javapro-en.svenruppert.com/openj9-gc-policies-how-to-choose-the-right-collector/</link><pubDate>Thu, 21 May 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/openj9-gc-policies-how-to-choose-the-right-collector/</guid><description>&lt;p&gt;For many OpenJ9 users, garbage collection tuning starts with the wrong question.&lt;/p&gt;
&lt;p&gt;They ask, &amp;ldquo;Which collector is the fastest?&amp;rdquo; or &amp;ldquo;Which one is best for cloud?&amp;rdquo; In practice, the better question is: &lt;strong&gt;what does my application actually need from the heap?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That is the right starting point because OpenJ9 gives you several distinct GC policies, each designed around a different balance of throughput, pause time, heap geometry, and operational behavior. The default is &lt;strong&gt;&lt;code&gt;gencon&lt;/code&gt;&lt;/strong&gt;, and for a broad spectrum of Java applications that is still the right place to start. But once heaps grow, pause spikes become operationally expensive, or throughput becomes the dominant goal, a different policy may be the better fit.&lt;/p&gt;</description></item><item><title>Stop Writing YAML: How to Define, Test, and Deploy Your Cloud in Pure Java</title><link>https://javapro-en.svenruppert.com/stop-writing-yaml-how-to-define-test-and-deploy-your-cloud-in-pure-java/</link><pubDate>Tue, 12 May 2026 07:00:00 +0000</pubDate><guid>https://javapro-en.svenruppert.com/stop-writing-yaml-how-to-define-test-and-deploy-your-cloud-in-pure-java/</guid><description>&lt;h2 id="1-introduction"&gt;&lt;strong&gt;1. Introduction&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;As Java developers, we apply rigorous engineering practices to application code: type safety, unit testing, refactoring, code review. Then we switch to deploying that code and write hundreds of lines of YAML, accepting the lack of expressiveness, missing abstractions, and missing flexibility as the cost of doing business. Or worse, we log into the cloud console and click our way through to the deployment.&lt;/p&gt;
&lt;p&gt;This article explores an alternative: defining cloud infrastructure in Java, with the same tools and practices we use for application code. We&amp;rsquo;ll build a working example, a Java service deployed on AWS, covering the full lifecycle from resource definition through testing to CI/CD. While this example uses Quarkus, the infrastructure patterns demonstrated here apply equally for Spring Boot, Jakarta EE, or any other containerized Java framework. The companion code is available at &lt;a href="https://github.com/wlami/stop-writing-yaml-javapro"&gt;github.com/wlami/stop-writing-yaml-javapro&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Zero Migration Java - Staying Current Without Breaking Your App</title><link>https://javapro-en.svenruppert.com/zero-migration-java-staying-current-without-breaking-your-app/</link><pubDate>Fri, 10 Apr 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/zero-migration-java-staying-current-without-breaking-your-app/</guid><description>Keeping enterprise Java applications secure and up-to-date is critical but traditional runtime upgrades often come with painful migrations, broken dependencies, and retesting cycles. What if developers could upgrade their runtime without touching their code? In this article, we explore the concept of zero migration — a runtime model that allows Java applications to stay current with the latest pat</description></item><item><title>Java Performance Optimization with Agentic AI: Autonomous Diagnostics and Actionable Recommendations</title><link>https://javapro-en.svenruppert.com/java-performance-optimization-with-agentic-ai-autonomous-diagnostics-and-actionable-recommendations/</link><pubDate>Tue, 07 Apr 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/java-performance-optimization-with-agentic-ai-autonomous-diagnostics-and-actionable-recommendations/</guid><description>&lt;p&gt;&lt;a href="https://schedule.jcon.one/2026/session/1050952"&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;Java performance diagnosis in production is manual, slow, and requires deep expertise. You get a Grafana alert, grab a thread dump, download a JFR recording, open it in JDK Mission Control, stare at flamegraphs, correlate with metrics — hours of work per incident. Most teams don&amp;rsquo;t have a dedicated performance engineer, so alerts get ignored or result in generic &amp;ldquo;add more replicas&amp;rdquo; responses.&lt;/p&gt;
&lt;p&gt;We built a system that does this autonomously. When a monitoring alert fires, it collects profiling data and thread dumps, extracts runtime metrics, generates flamegraphs, and sends everything to an AI model that produces a structured performance report — including root cause analysis and concrete code fixes with file paths and line numbers from the actual source repository. The pipeline runs on Kubernetes, triggered by Grafana webhooks, with results stored in Amazon S3.&lt;/p&gt;</description></item><item><title>BoxLang Spring Boot Starter: Dynamic JVM Templating for Spring</title><link>https://javapro-en.svenruppert.com/boxlang-spring-boot-starter-dynamic-jvm-templating-for-spring/</link><pubDate>Thu, 19 Mar 2026 12:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-spring-boot-starter-dynamic-jvm-templating-for-spring/</guid><description>&lt;p&gt;Spring Boot developers know the pain of evaluating view technologies. Thymeleaf is great — until you need more expressiveness. FreeMarker is powerful — until the syntax fights you. What if you could write templates in a dynamic JVM language that gives you the full power of the platform, feels natural, and requires zero setup to integrate?&lt;/p&gt;
&lt;p&gt;Meet the &lt;strong&gt;BoxLang Spring Boot Starter&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Drop one dependency into your Spring Boot 3 app and start writing dynamic &lt;code&gt;.bxm&lt;/code&gt; templates powered by BoxLang — a modern, expressive JVM language. Zero configuration. Full web scopes. 100% Java interoperable. Not only that, you get full access to BoxLang&amp;rsquo;s framework capabilities so you can integrate tons of features into your Spring Boot applications:&lt;/p&gt;</description></item><item><title>BoxLang v1.11.0 released</title><link>https://javapro-en.svenruppert.com/boxlang-v1-11-0-released/</link><pubDate>Tue, 10 Mar 2026 12:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-v1-11-0-released/</guid><description>&lt;p&gt;We&amp;rsquo;re proud to announce &lt;strong&gt;BoxLang 1.11.0&lt;/strong&gt;, a highly focused performance and stability release that delivers measurable speed improvements across every BoxLang application, with zero code changes required. The team invested deeply in bytecode generation, class loading, lock management, and type casting to produce one of the most impactful runtime optimization releases to date. Alongside the performance wave, this release resolves critical concurrency bugs, hardens DateTime handling, and ships powerful new developer tooling.&lt;/p&gt;</description></item><item><title>BoxLang AI v2.1.0 Released</title><link>https://javapro-en.svenruppert.com/boxlang-ai-v2-1-0-released/</link><pubDate>Mon, 09 Feb 2026 12:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-ai-v2-1-0-released/</guid><description>&lt;hr&gt;
&lt;p&gt;BoxLang AI v2.1.0 is here with powerful enterprise capabilities that make building production AI applications easier than ever. This release delivers multi-tenant usage tracking, OpenSearch vector memory, full AWS Bedrock support, Docker Desktop AI integration, and streamlined provider configuration.&lt;/p&gt;
&lt;h2 id="-highlights"&gt;🚀 Highlights&lt;/h2&gt;
&lt;p&gt;Complete release notes and migration guides are available at &lt;a href="https://ai.ortusbooks.com/readme/release-history/2.1.0"&gt;https://ai.ortusbooks.com/readme/release-history/2.1.0&lt;/a&gt;. Our documentation includes an integrated MCP server for agentic IDE support: &lt;a href="https://ai.ortusbooks.com/~gitbook/mcp"&gt;https://ai.ortusbooks.com/~gitbook/mcp&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="docker-desktop-ai-integration"&gt;Docker Desktop AI Integration&lt;/h3&gt;
&lt;p&gt;Develop and test AI features locally with Docker Desktop models—no internet required, no API costs, complete privacy.&lt;/p&gt;</description></item><item><title>Java 25 + GenAI: A New Era for Microservices in Finance</title><link>https://javapro-en.svenruppert.com/java-25-genai-a-new-era-for-microservices-in-finance/</link><pubDate>Thu, 22 Jan 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/java-25-genai-a-new-era-for-microservices-in-finance/</guid><description>Java 25 and GenAI combine to build explainable, scalable microservices for finance — blending performance, transparency, and open-source innovation in one architecture.</description></item><item><title>Elasticsearch Java SDK: No Magic, Just Solid Design Choices</title><link>https://javapro-en.svenruppert.com/elasticsearch-java-sdk-no-magic-just-solid-design-choices/</link><pubDate>Tue, 13 Jan 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/elasticsearch-java-sdk-no-magic-just-solid-design-choices/</guid><description>&lt;p&gt;Java&amp;rsquo;s API ecosystem is massive, but quality is not granted for free, and not necessarily widespread. Building a good API is not trivial, and focus is required. You need balanced abstractions, keep the threading model sane, and provide developers a satisfying experience.&lt;/p&gt;
&lt;p&gt;The Elasticsearch Java SDK caught my attention because it actually gets this stuff right. I dug into the design decisions that make it work, and the overall approach is worth understanding, even if there are trade-offs to consider.&lt;/p&gt;</description></item><item><title>The Myth of Stability: Java's Software Supply Chain After Log4Shell</title><link>https://javapro-en.svenruppert.com/the-myth-of-stability-javas-software-supply-chain-after-log4shell/</link><pubDate>Thu, 08 Jan 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/the-myth-of-stability-javas-software-supply-chain-after-log4shell/</guid><description>&lt;p&gt;For as long as most Java developers can remember, we’ve lived inside a comforting story about our ecosystem. It’s the idea that Maven Central, the Jakarta stack, the Spring universe, the vast Apache landscape, and all the independent libraries quietly carrying enterprise workloads together form a coherent, self-maintaining, self-healing whole. &lt;/p&gt;
&lt;p&gt;A world where problems are fixed upstream, where maintainers have time, where the dependencies we pull down are being actively watched by someone who knows exactly what they’re doing. It’s a lovely idea. It’s also never been completely real.&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>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>Maintaining the IntelliJ “Save Actions” Plugin: A Community Effort to Keep Development Tools Up to Date</title><link>https://javapro-en.svenruppert.com/maintaining-the-intellij-save-actions-plugin-a-community-effort-to-keep-development-tools-up-to-date/</link><pubDate>Wed, 12 Nov 2025 12:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/maintaining-the-intellij-save-actions-plugin-a-community-effort-to-keep-development-tools-up-to-date/</guid><description>&lt;p&gt;For many developers working with IntelliJ IDEA, the &lt;strong&gt;“Save Actions” plugin&lt;/strong&gt; has long been a trusted companion for maintaining consistent and clean codebases. By automatically performing configurable actions on file save—such as optimizing imports, reformatting code, rearranging members, or applying small quick fixes—the plugin helps ensure that projects stay uniform across entire teams.&lt;/p&gt;
&lt;p&gt;After the original development of “Save Actions” came to a halt several years ago, the plugin risked falling out of compatibility with newer IntelliJ versions. To prevent this, &lt;em&gt;XDEV Software&lt;/em&gt; stepped in as the dedicated maintainer and continues to provide updates and maintenance releases through the JetBrains Marketplace. The goal has remained simple: to keep the plugin functional, compatible, and stable for the growing developer community that relies on it.&lt;/p&gt;</description></item><item><title>Map your Code - Master your Architecture</title><link>https://javapro-en.svenruppert.com/map-your-code-master-your-architecture/</link><pubDate>Tue, 21 Oct 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/map-your-code-master-your-architecture/</guid><description>&lt;p&gt;In projects with hundreds of thousands of lines, it is easy to lose track of code, architecture and quality. Are we still on the right track, are we blocking ourselves with internal dependencies, or are we already stuck? Software is immaterial; we cannot see how it is doing.&lt;/p&gt;
&lt;p&gt;To know how our software is doing, we have systematically check if the mental models of the developers matches the written code. Spoiler, they do not, as software changes too fast to keep track, every developer has their own model and no one has the complete picture.&lt;/p&gt;</description></item><item><title>MockServer NeoLight: A Lightweight Alternative for API Testing with Testcontainers</title><link>https://javapro-en.svenruppert.com/mockserver-neolight-a-lightweight-alternative-for-api-testing-with-testcontainers/</link><pubDate>Fri, 17 Oct 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/mockserver-neolight-a-lightweight-alternative-for-api-testing-with-testcontainers/</guid><description>&lt;p&gt;The open-source project &lt;a href="https://github.com/xdev-software/mockserver-neolight"&gt;MockServer NeoLight&lt;/a&gt; has been released as a lightweight rewrite of the original &lt;a href="https://github.com/mock-server/mockserver"&gt;MockServer&lt;/a&gt;. Its primary focus lies on &lt;strong&gt;simplicity&lt;/strong&gt;, &lt;strong&gt;maintainability&lt;/strong&gt;, and seamless integration with &lt;a href="https://java.testcontainers.org/"&gt;&lt;strong&gt;Testcontainers&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The MockServer concept allows developers to mock HTTP and HTTPS requests in order to &lt;strong&gt;simulate APIs for testing purposes&lt;/strong&gt;. By setting expectations for incoming requests and defining responses, it creates controlled environments for integration testing. This isolates the system under test from real external dependencies, leading to predictable and repeatable results.&lt;/p&gt;</description></item><item><title>Supercruising with Testcontainers: Making Tests Faster and More Flexible</title><link>https://javapro-en.svenruppert.com/supercruising-with-testcontainers-making-tests-faster-and-more-flexible/</link><pubDate>Fri, 10 Oct 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/supercruising-with-testcontainers-making-tests-faster-and-more-flexible/</guid><description>&lt;p&gt;&lt;strong&gt;Testcontainers&lt;/strong&gt; has become an essential tool in many Java projects to run integration and system tests in realistic environments. However, when test scenarios grow complex, developers often run into limitations—especially around configuration, parallelization, and resource usage. An open-source framework built on top of Testcontainers addresses some of these challenges with powerful extensions.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/xdev-software/tci-base"&gt;&lt;strong&gt;Testcontainers Infrastructure (TCI) Framework&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="1-improve-customizability-and-parallelization"&gt;&lt;strong&gt;1. Improve customizability and parallelization&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;By using the factory pattern when creating containers, the goal is to make it easier for developers to adjust the containers as needed.&lt;/p&gt;</description></item><item><title>Put events in the driver seat to manage your Java anywhere</title><link>https://javapro-en.svenruppert.com/put-events-in-the-driver-seat-to-manage-your-java-anywhere/</link><pubDate>Wed, 08 Oct 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/put-events-in-the-driver-seat-to-manage-your-java-anywhere/</guid><description>&lt;p&gt;Managing a multi-datacenter VM based or an Edge server executing Java applications is not a simple task and can become even more challenging as the complexity of the hosted app grows. If a pristine installation runs without a hitch, after a while, recurring problems appear and what is called nowadays “Day One” operations take the front seat. Obviously, those are the struggles facing any modern IT infrastructure, and while the target could not be more clear and defined (a functional system with zero or minimum downtime), yet the crucible, how to achieve it, may not be evident. &lt;/p&gt;</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>Testing Done Right!</title><link>https://javapro-en.svenruppert.com/testing-done-right/</link><pubDate>Thu, 28 Aug 2025 07:00:00 +0000</pubDate><guid>https://javapro-en.svenruppert.com/testing-done-right/</guid><description>&lt;p&gt;Oh no! Not another article about testing! You can find a lot of publications about automated testing in software development, but there is a good reason for it. Testing your code is one of the most important aspects in software development!&lt;/p&gt;
&lt;p&gt;I’m not going to write yet another article about how you should write your tests. I’m also not covering the details of various types of tests. I will elaborate on some pitfalls you should be aware of when writing tests and how to solve them. This is not a scientific approach; it is just my opinion. What&amp;rsquo;s covered in this article? Let&amp;rsquo;s start with discussing why testing is so important in software development. Next, I’ll elaborate on some risks and how we can avoid them. I will also dive into sociable testing and test data generation.&lt;/p&gt;</description></item><item><title>Java Has Been Connecting Systems and Communities for 30 Years</title><link>https://javapro-en.svenruppert.com/java-has-been-connecting-systems-and-communities-for-30-years/</link><pubDate>Wed, 06 Aug 2025 07:00:00 +0000</pubDate><guid>https://javapro-en.svenruppert.com/java-has-been-connecting-systems-and-communities-for-30-years/</guid><description>&lt;p&gt;&lt;em&gt;From fulfilling the slogan The Network is the Computer, to the Java EE standard, to supporting both SOAP and RESTful Web Services, to creating a strong ecosystem and communities supporting microservices and cloud-native applications that can&amp;rsquo;t do without an emphasis on APIs. Intertwined with the Internet since its inception, Java supports existing as well as brings in its own vendor-neutral standards and de facto standards reflecting current challenges, such as MicroProfile or supporting integration with AI.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>From Breaches to Blackouts: The Human Consequences of Software Supply Chain Attacks</title><link>https://javapro-en.svenruppert.com/from-breaches-to-blackouts-the-human-consequences-of-software-supply-chain-attacks/</link><pubDate>Wed, 23 Jul 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/from-breaches-to-blackouts-the-human-consequences-of-software-supply-chain-attacks/</guid><description>&lt;p&gt;Have you ever considered the impact of Cybercrime? How do your choices in terms of applying good security practices matter? Given that the current estimate for the annual bill worldwide is 9 Trillion US Dollars, there is obviously a significant financial reward for the bad guys, but have you ever wondered how that breaks down or if there&amp;rsquo;s more to their motivations and actions than just money?&lt;/p&gt;
&lt;p&gt;This article will explore the financial element and broader human implications.&lt;/p&gt;</description></item><item><title>The long history of log4j</title><link>https://javapro-en.svenruppert.com/the-long-history-of-log4j/</link><pubDate>Tue, 10 Jun 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/the-long-history-of-log4j/</guid><description>&lt;p&gt;Logging is the art of making sense of a system.&lt;/p&gt;
&lt;p&gt;Software writes lines of information into log files, and developers sift through them, hoping to find what they need. The problem? Systems rarely log the right things. Yet without those files, we&amp;rsquo;d be flying blind, unaware that anything even went wrong.&lt;/p&gt;
&lt;p&gt;This is the story of Apache Log4j—one of the oldest pieces of Java code still in use today. A tool that gave developers a way to listen to their systems.&lt;/p&gt;</description></item><item><title>Java: let’s do a SWOT!</title><link>https://javapro-en.svenruppert.com/java-swot/</link><pubDate>Wed, 28 May 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/java-swot/</guid><description>&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/02/image-3.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote class="pullquote"&gt;
 &lt;span class="pullquote-mark" aria-hidden="true"&gt;“&lt;/span&gt;
 &lt;div class="pullquote-body"&gt;&lt;blockquote class="pullquote"&gt;
 &lt;span class="pullquote-mark" aria-hidden="true"&gt;“&lt;/span&gt;
 &lt;div class="pullquote-body"&gt;&lt;p&gt;&lt;em&gt;&amp;ldquo;Java is to enterprise what electricity is to civilisation&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;/div&gt;
&lt;/blockquote&gt;&lt;p&gt;Java has transcended “being just a programming language - it has become a cultural icon. From academic syllabuses to heated tech debates, and from &lt;a href="https://www.reddit.com/r/ProgrammerHumor/comments/g2xiqg/just_started_learning_java_and_ive_found_this/?utm_source=chatgpt.com"&gt;viral social media memes&lt;/a&gt; to &lt;a href="https://www.youtube.com/watch?v=RnqAXuLZlaE"&gt;pop culture references in movies&lt;/a&gt;, Java’s influence is everywhere. Few languages have had such an incredible run, shaping not just software but also conversations, careers, and even family.&lt;/p&gt;
&lt;p&gt;Java, a stalwart in the programming world, has not only stood the test of time but has also shaped the evolution of modern software development. To the casual observer, it may seem like just another language, yet over the past three decades, Java has cemented itself as an integral part of the technology ecosystem. It has been the foundation for groundbreaking innovations and a cornerstone of academic research.&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>The Simplest Way to Build Resilient Applications</title><link>https://javapro-en.svenruppert.com/the-simplest-way-to-build-resilient-applications/</link><pubDate>Thu, 08 May 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/the-simplest-way-to-build-resilient-applications/</guid><description>Restate is an open-source system that makes it easy to write resilient, consistent and scalable applications. Restate lets you write mission-critical applications, like payment workflows, user management, and AI agents, without worrying about resiliency.</description></item><item><title>Securing the Future of AI: Authorization for Java RAG Systems using LangChain4j and OpenFGA</title><link>https://javapro-en.svenruppert.com/securing-the-future-of-ai-authorization-for-java-rag-systems-using-langchain4j-and-openfga/</link><pubDate>Mon, 14 Apr 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/securing-the-future-of-ai-authorization-for-java-rag-systems-using-langchain4j-and-openfga/</guid><description>In this post, we explore how to build a robust Java-based RAG system by integrating LangChain4j with OpenFGA for fine-grained, relationship-based access control. Learn how to tackle the unique security challenges of RAG applications—from dynamic context and complex document relationships to real-time authorization checks—and follow step-by-step examples that show you how to implement a secure syst</description></item><item><title>Move Fast, Break Laws: AI, Open Source and Devs (Part 4)</title><link>https://javapro-en.svenruppert.com/move-fast-break-laws-ai-open-source-and-devs-part-4/</link><pubDate>Thu, 10 Apr 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/move-fast-break-laws-ai-open-source-and-devs-part-4/</guid><description>&lt;p&gt;The software development landscape is rapidly changing, with legislation emerging as a key driver of industry trends. As our reliance on software and AI grows, so does our vulnerability to cybercrime, which is now a multi-trillion-dollar problem. This has caught the attention of regulators worldwide. &lt;/p&gt;
&lt;p&gt;This article explains the various regulatory efforts in play and summarises actions that developers and executives should consider as they get to grips with 2025 - the year of software legislation&lt;/p&gt;</description></item><item><title>Move Fast, Break Laws: AI, Open Source and Devs (Part 3)</title><link>https://javapro-en.svenruppert.com/move-fast-break-laws-ai-open-source-and-devs-part-3/</link><pubDate>Tue, 08 Apr 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/move-fast-break-laws-ai-open-source-and-devs-part-3/</guid><description>&lt;h4 id="background"&gt;Background&lt;/h4&gt;
&lt;p&gt;The software development landscape is rapidly changing, with legislation emerging as a key driver of industry trends. As our reliance on software and AI grows, so does our vulnerability to cybercrime, which is now a multi-trillion-dollar problem. This has caught the attention of regulators worldwide. &lt;/p&gt;
&lt;p&gt;&lt;a href="https://javapro.io/2025/04/01/move-fast-break-laws-ai-open-source-and-devs-part-1/"&gt;Part 1&lt;/a&gt; covered the background, what a software supply chain is and thoughts on AI and open source.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://javapro.io/2025/04/03/move-fast-break-laws-ai-open-source-and-devs-part-2/"&gt;Part 2&lt;/a&gt; explored how governments are working to create legislation and what the current status is.&lt;/p&gt;</description></item><item><title>Move Fast, Break Laws: AI, Open Source and Devs (Part 2)</title><link>https://javapro-en.svenruppert.com/move-fast-break-laws-ai-open-source-and-devs-part-2/</link><pubDate>Thu, 03 Apr 2025 09:56:07 +0000</pubDate><guid>https://javapro-en.svenruppert.com/move-fast-break-laws-ai-open-source-and-devs-part-2/</guid><description>&lt;p&gt;The software development landscape is rapidly changing, with legislation emerging as a key driver of industry trends. As our reliance on software and AI grows, so does our vulnerability to cybercrime, which is now a multi-trillion-dollar problem. This has caught the attention of regulators worldwide. &lt;/p&gt;
&lt;p&gt;This article explains the various regulatory efforts in play and summarises actions that developers and executives should consider as they get to grips with 2025 - the year of software legislation&lt;/p&gt;</description></item><item><title>Move Fast, Break Laws: AI, Open Source and Devs (Part 1)</title><link>https://javapro-en.svenruppert.com/move-fast-break-laws-ai-open-source-and-devs-part-1/</link><pubDate>Tue, 01 Apr 2025 11:34:21 +0000</pubDate><guid>https://javapro-en.svenruppert.com/move-fast-break-laws-ai-open-source-and-devs-part-1/</guid><description>&lt;p&gt;The software development landscape is rapidly changing, with legislation emerging as a key driver of industry trends. As our reliance on software and AI grows, so does our vulnerability to cybercrime, which is now a multi-trillion-dollar problem. This has caught the attention of regulators worldwide. &lt;/p&gt;
&lt;p&gt;This article series explains the various regulatory efforts in play and summarises actions that developers and executives should consider as they prepare for 2025, the year of software legislation.&lt;/p&gt;</description></item><item><title>Minimize Costs by Utilizing Cloud Storage with Spring-Data-Eclipse-Store</title><link>https://javapro-en.svenruppert.com/minimize-costs-by-utilizing-cloud-storage-with-spring-data-eclipse-store/</link><pubDate>Mon, 29 Jul 2024 07:52:28 +0000</pubDate><guid>https://javapro-en.svenruppert.com/minimize-costs-by-utilizing-cloud-storage-with-spring-data-eclipse-store/</guid><description>How to save money storing data in Cloud blob-stores instead of expensive databases through the use of the open-source Spring-Data-Eclipse-Store library.</description></item></channel></rss>