<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>API &amp; Frameworks on JAVAPRO International</title><link>https://javapro-en.svenruppert.com/categories/api--frameworks/</link><description>Recent content in API &amp; Frameworks on JAVAPRO International</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Thu, 16 Jul 2026 07:00:01 +0000</lastBuildDate><atom:link href="https://javapro-en.svenruppert.com/categories/api--frameworks/index.xml" rel="self" type="application/rss+xml"/><item><title>Solving Spring AI's UI Challenge with AG-UI's Java SDK</title><link>https://javapro-en.svenruppert.com/solving-spring-ais-ui-challenge-with-ag-uis-java-sdk/</link><pubDate>Thu, 16 Jul 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/solving-spring-ais-ui-challenge-with-ag-uis-java-sdk/</guid><description>&lt;h2 id="introduction-the-missing-link-in-java-ai-development"&gt;Introduction: The Missing Link in Java AI Development&lt;/h2&gt;
&lt;p&gt;Ask any Java developer who has tried to build an AI feature in a production application and they&amp;rsquo;ll tell you the same thing: the backend isn&amp;rsquo;t the hard part anymore. Spring AI makes it easy to invoke an LLM, define prompts, and create tools. But turning these interactions into a smooth, interactive user experience? That&amp;rsquo;s where the struggle begins.&lt;/p&gt;
&lt;p&gt;Most developers solve this by inventing custom message formats, WebSocket events, and ad-hoc rules for how the UI should render tool calls. Each application reinvents the bridge between frontend interactions and agent intelligence. The result? A fragile, inconsistent layer that must be rebuilt for every project.&lt;/p&gt;</description></item><item><title>LangChain4j Agentic Workflows: From AI Calls to Multi-Agent Systems in Java</title><link>https://javapro-en.svenruppert.com/langchain4j-agentic-workflows-from-ai-calls-to-multi-agent-systems-in-java/</link><pubDate>Wed, 08 Jul 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/langchain4j-agentic-workflows-from-ai-calls-to-multi-agent-systems-in-java/</guid><description>&lt;p&gt;You have built AI features into your Java application. Your model is wrapped in a service, RAG is feeding it context, tools are wired, and calls are flowing. It works. Then requirements evolve. A single prompt-and-response is no longer enough. You need steps that follow each other, branches based on decisions, retries when things fail, and multiple actions running concurrently. The question shifts from &amp;ldquo;how do I call an LLM?&amp;rdquo; to &amp;ldquo;how do I orchestrate multiple LLM-driven tasks into a coherent system?&amp;rdquo;&lt;/p&gt;</description></item><item><title>Paketo Buildpacks: ready for Java 26 &amp; more!</title><link>https://javapro-en.svenruppert.com/paketo-buildpacks-ready-for-java-26-more/</link><pubDate>Thu, 02 Jul 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/paketo-buildpacks-ready-for-java-26-more/</guid><description>&lt;p&gt;Paketo Buildpacks, the default way to create container images with Spring Boot, will include support for Java 26 the same week it will be released in major OpenJDK distributions (Oracle, BellSoft Liberica, Azul Zulu, etc.)&lt;br&gt;
Let&amp;rsquo;s take this as an opportunity to (re)discover what Paketo Buildpacks are and what they allow you to do!&lt;/p&gt;
&lt;h2 id="paketo-buildpacks-not-the-only-buildpacks-around"&gt;Paketo Buildpacks: Not the Only Buildpacks Around!&lt;/h2&gt;
&lt;h3 id="a-world-of-buildpacks"&gt;A World of Buildpacks&lt;/h3&gt;
&lt;p&gt;My first memory of using buildpacks dates back to when I worked for a bank around 2020 (yes, that year!) and my team created and maintained a bunch of shell scripts that would copy a templated Dockerfile, add the public certificates from the corporate Certification Authority (CA), and then build the Dockerfile into an image (and even create a Helm chart!); but we soon learned that there were open-source buildpacks that supported most of our use cases!&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>Introducing bx-jwt: Enterprise-Grade JSON Web Tokens for BoxLang</title><link>https://javapro-en.svenruppert.com/introducing-bx-jwt-enterprise-grade-json-web-tokens-for-boxlang/</link><pubDate>Tue, 23 Jun 2026 12:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/introducing-bx-jwt-enterprise-grade-json-web-tokens-for-boxlang/</guid><description>&lt;p&gt;JWT authentication is everywhere. But rolling it correctly — with proper algorithm enforcement, key management, clock skew handling, JWE encryption, and zero security footguns — is anything but trivial. Today, we&amp;rsquo;re shipping &lt;strong&gt;bx-jwt&lt;/strong&gt;, a production-ready JWT/JWE module for BoxLang that handles all of it out of the box, so you can focus on building, not fighting cryptography.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;bx-jwt&lt;/strong&gt; is part of the &lt;a href="https://www.boxlang.io/plans"&gt;BoxLang+ and BoxLang++ subscription tiers&lt;/a&gt; — our enterprise-grade module collection built for teams that take security seriously.&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>Introducing BoxLings! An interactive teacher for BoxLang and TDD/BDD</title><link>https://javapro-en.svenruppert.com/introducing-boxlings-an-interactive-teacher-for-boxlang-and-tdd-bdd/</link><pubDate>Wed, 17 Jun 2026 12:00:03 +0000</pubDate><guid>https://javapro-en.svenruppert.com/introducing-boxlings-an-interactive-teacher-for-boxlang-and-tdd-bdd/</guid><description>&lt;p&gt;We believe the best way to learn a programming language is by writing code — real code, with real feedback, and real tests. That&amp;rsquo;s exactly why we built &lt;strong&gt;BoxLings&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Inspired by the beloved &lt;a href="https://github.com/rust-lang/rustlings"&gt;Rustlings&lt;/a&gt; project, &lt;strong&gt;BoxLings&lt;/strong&gt; is an interactive CLI tool that teaches you &lt;strong&gt;BoxLang&lt;/strong&gt; through hands-on exercises. You read failing tests, fix broken code, and level up — one exercise at a time.&lt;/p&gt;
&lt;p&gt;Oh, and the whole thing is written in BoxLang itself. 🥊 Dogfooding at its finest.&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>BoxLang Goes Serverless on Google Cloud</title><link>https://javapro-en.svenruppert.com/boxlang-goes-serverless-on-google-cloud/</link><pubDate>Wed, 10 Jun 2026 12:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-goes-serverless-on-google-cloud/</guid><description>&lt;p&gt;We just shipped the &lt;strong&gt;BoxLang Google Cloud Functions Runtime&lt;/strong&gt; — and it brings the same write-once-run-anywhere serverless experience you already know from our AWS Lambda runtime, now running natively on &lt;strong&gt;Google Cloud Functions Gen2&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The big idea is simple: the same &lt;code&gt;.bx&lt;/code&gt; handler file you deploy to AWS Lambda works on GCF without modification. One codebase. Two clouds. Zero rewrites.&lt;/p&gt;
&lt;h2 id="the-architecture"&gt;The Architecture&lt;/h2&gt;
&lt;p&gt;The GCF experience is intentionally split into two projects:&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>BoxLang AI 3.2.0 — Image Generation, Web Search, Fluent Audio, Agent Registry &amp; MCP Observability</title><link>https://javapro-en.svenruppert.com/boxlang-ai-3-2-0-image-generation-web-search-fluent-audio-agent-registry-mcp-observability/</link><pubDate>Fri, 05 Jun 2026 12:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-ai-3-2-0-image-generation-web-search-fluent-audio-agent-registry-mcp-observability/</guid><description>&lt;p&gt;BoxLang AI 3.2.0 is here, and it&amp;rsquo;s a landmark release. We&amp;rsquo;re shipping five major features: &lt;strong&gt;image generation, web search, a fluent audio builder API, a centralized agent registry, and deep MCP observability along with a suite of analytics improvements and a critical bug fix.&lt;/strong&gt; Let&amp;rsquo;s dig in. 🎉&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-image-generation--aiimage"&gt;🖼️ Image Generation — &lt;code&gt;aiImage()&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;You can now generate images directly from BoxLang using any provider that supports &lt;code&gt;text-to-image&lt;/code&gt; generation. The &lt;code&gt;aiImage()&lt;/code&gt; BIF follows the same &lt;strong&gt;fluent, chainable philosophy&lt;/strong&gt; as the rest of bx-ai then act on the result with expressive method calls.&lt;/p&gt;</description></item><item><title>Comparing transitive dependency version resolution in Rust and Java</title><link>https://javapro-en.svenruppert.com/comparing-transitive-dependency-version-resolution-in-rust-and-java/</link><pubDate>Thu, 04 Jun 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/comparing-transitive-dependency-version-resolution-in-rust-and-java/</guid><description>&lt;p&gt;You learn by comparing to what you already know. I was recently bitten by assuming Rust worked as Java regarding transitive dependency version resolution. In this post, I want to compare the two.&lt;/p&gt;
&lt;h2 id="dependencies-transitivity-and-version-resolution"&gt;Dependencies, transitivity, and version resolution&lt;/h2&gt;
&lt;p&gt;Before diving into the specifics of each stack, let&amp;rsquo;s describe the domain and the problems that come with it.&lt;/p&gt;
&lt;p&gt;When developing any project above Hello World level, chances are you&amp;rsquo;ll face problems that others have faced before. If the problem is widespread, the probability is high that somebody was kind and civic-minded enough to have packaged the code that solves it, for others to re-use. Now you can use the package and focus on solving your core problem. It&amp;rsquo;s how industry builds most projects today, even if it brings &lt;a href="https://en.wikipedia.org/wiki/Supply_chain_attack"&gt;other problems&lt;/a&gt;: you sit on the shoulders of giants.&lt;/p&gt;</description></item><item><title>The Gen AI Iceberg - Java Tooling Edition</title><link>https://javapro-en.svenruppert.com/the-gen-ai-iceberg-java-tooling-edition/</link><pubDate>Wed, 03 Jun 2026 07:00:03 +0000</pubDate><guid>https://javapro-en.svenruppert.com/the-gen-ai-iceberg-java-tooling-edition/</guid><description>&lt;h3 id="from-autowired-chatclient-to-compiling-gpu-kernels-from-pure-java-bytecode-a-lovecraftian-descent-through-everything-a-jvm-developer-needs-or-fears-to-build-ai-powered-applications"&gt;From &lt;code&gt;@Autowired ChatClient&lt;/code&gt; to Compiling GPU Kernels From Pure Java Bytecode: A Lovecraftian Descent Through Everything a JVM Developer Needs (or Fears) to Build AI-Powered Applications&lt;/h3&gt;
&lt;p&gt;The &amp;ldquo;Iceberg&amp;rdquo; meme is an internet phenomenon that humorously, and sometimes unsettlingly, illustrates levels of knowledge or initiation into a given topic – from simple, widely known facts at the tip of the iceberg to the dark, esoteric depths comprehensible only to the most battle-hardened veterans. Picture an iceberg floating on water: what&amp;rsquo;s visible on the surface is just the beginning, while the real magic (or nightmare) lurks beneath, in increasingly inaccessible layers.&lt;/p&gt;</description></item><item><title>Announcing MatchBox Open Beta: BoxLang, Now Running in New Places</title><link>https://javapro-en.svenruppert.com/announcing-matchbox-open-beta-boxlang-now-running-in-new-places/</link><pubDate>Mon, 01 Jun 2026 12:00:00 +0000</pubDate><guid>https://javapro-en.svenruppert.com/announcing-matchbox-open-beta-boxlang-now-running-in-new-places/</guid><description>&lt;p&gt;Ortus Solutions is excited to announce the open beta of &lt;strong&gt;&lt;a href="https://boxlang.ortusbooks.com/boxlang-framework/matchbox"&gt;MatchBox&lt;/a&gt;&lt;/strong&gt;, a new open source project in the BoxLang ecosystem. MatchBox is a custom BoxLang virtual machine written in Rust. It is built for the places where a full JVM runtime is not the right fit: small native command-line tools, compact web services, browser applications, WebAssembly containers, and even embedded hardware like ESP32 devices.&lt;/p&gt;
&lt;p&gt;The project started in early March and has been moving quickly - already at &lt;strong&gt;v0.5.0&lt;/strong&gt;. That speed is part of why we are opening the beta now. MatchBox is already capable enough to build real experiments, prototypes, and early applications, but it is still beta software. APIs will change. Some language features are still being implemented. Some deployment targets are intentionally limited while we harden the runtime. We want developers to try it, break it, ask questions, and help shape where it goes next.&lt;/p&gt;</description></item><item><title>Vaadin + Quarkus: The New Approach for Enterprise Apps</title><link>https://javapro-en.svenruppert.com/vaadin-quarkus-the-new-approach-for-enterprise-apps/</link><pubDate>Tue, 19 May 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/vaadin-quarkus-the-new-approach-for-enterprise-apps/</guid><description>&lt;p&gt;While Vaadin is commonly integrated with Spring, this article explores a powerful new full-stack solution: Vaadin with Quarkus. Quarkus provides a lightning-fast runtime and native images, complementing Vaadin’s Java-first UI, which eliminates JavaScript complexity. Readers will learn how to build scalable, reactive Vaadin Flow apps on Quarkus, covering simplified backend development, enhanced productivity with a unified Java stack, and superior deployment optimization compared to traditional approaches.&lt;/p&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Vaadin and Quarkus are both modern Java frameworks, each excelling in its domain: Vaadin for building rich web UIs in pure Java, and Quarkus for creating cloud-native, container-first Java applications. Together, they offer a compelling alternative to traditional full-stack Java development, especially for enterprise applications.&lt;/p&gt;</description></item><item><title>OpenFeature - one flag to rule them all!</title><link>https://javapro-en.svenruppert.com/openfeature-one-flag-to-rule-them-all/</link><pubDate>Thu, 14 May 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/openfeature-one-flag-to-rule-them-all/</guid><description>&lt;h2 id="feature-flags-and-where-to-find-them"&gt;Feature flags and where to find them&lt;/h2&gt;
&lt;p&gt;What are feature flags?&lt;/p&gt;
&lt;p&gt;To keep it simple it&amp;rsquo;s a way to change the system behaviour at runtime without hassle.&lt;/p&gt;
&lt;p&gt;Note: And if this &amp;ldquo;refresher&amp;rdquo; was the only theoretical thing you wanted to know or if you already use feature flags and want to jump straight to code/ OpenFeature demo, feel free to do so; otherwise, please bear with me for another couple of text pages.&lt;/p&gt;</description></item><item><title>Simpler JVM Project Setup with Mill</title><link>https://javapro-en.svenruppert.com/simpler-jvm-project-setup-with-mill/</link><pubDate>Wed, 13 May 2026 09:08:19 +0000</pubDate><guid>https://javapro-en.svenruppert.com/simpler-jvm-project-setup-with-mill/</guid><description>&lt;p&gt;Java and other JVM languages like Scala or Kotlin are often used for large enterprise codebases, but the friction of configuring their tooling means they are less often used for small programs or scripts. The Mill build tool contains two features that try to improve upon this pain point, allowing your projects to be configured via a compact  &lt;code&gt;build.mill.yaml&lt;/code&gt; file, rather than a verbose &lt;code&gt;pom.xml&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;build.mill.yaml&lt;/code&gt;&lt;/p&gt;
&lt;div class="code-block" data-lang=""&gt;
 &lt;div class="code-block-head"&gt;
 &lt;span class="code-block-lang"&gt;CODE&lt;/span&gt;
 &lt;button type="button" class="code-block-copy" aria-label="Copy code" data-code-copy&gt;
 &lt;span class="code-block-copy-icon" aria-hidden="true"&gt;⧉&lt;/span&gt;
 &lt;span class="code-block-copy-label"&gt;Copy&lt;/span&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;pre&gt;&lt;code&gt;extends: JavaModule
mvnDeps:
- org.jsoup:jsoup:1.7.2
- org.slf4j:slf4j-nop:2.0.7&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;And letting single-file programs be configured by a &lt;code&gt;//|&lt;/code&gt; build header comment at the top of the file:&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>Java Developers, You're Already Ready for Blockchain — You Just Don't Know It Yet</title><link>https://javapro-en.svenruppert.com/java-developers-youre-already-ready-for-blockchain-you-just-dont-know-it-yet/</link><pubDate>Fri, 08 May 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/java-developers-youre-already-ready-for-blockchain-you-just-dont-know-it-yet/</guid><description>&lt;p&gt;The Java ecosystem has a mature way of doing things. Pick your framework. Use Maven or Gradle. Write tests with JUnit. Run everything locally with Docker. These patterns have been stable for years exactly because they work.&lt;/p&gt;
&lt;p&gt;But most blockchain ecosystems were not built with Java developers in mind. Instead, Rust, JavaScript, and Go dominate. Cardano – my blockchain of choice – historically leaned on Haskell.&lt;/p&gt;
&lt;p&gt;At the end of the day, if you wanted to build on blockchain as a Java developer, you were largely on your own.&lt;br&gt;
&lt;br&gt;
&lt;a href="https://www.bloxbean.com/"&gt;BloxBean&lt;/a&gt; was built to fix this.&lt;br&gt;
&lt;br&gt;
No matter if you prefer Spring Boot, any other Java framework, or actually default to Maven,  Gradle, and writing clean Java services, you already have everything you need to start building on Cardano.&lt;/p&gt;</description></item><item><title>BoxLang AI v3.1 Released - Audio, Async, Parallel Pipelines, and More 🎤⚡🔀</title><link>https://javapro-en.svenruppert.com/boxlang-ai-v3-1-released-audio-async-parallel-pipelines-and-more-/</link><pubDate>Wed, 29 Apr 2026 12:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-ai-v3-1-released-audio-async-parallel-pipelines-and-more-/</guid><description>&lt;p&gt;&lt;strong&gt;BoxLang AI 3.1&lt;/strong&gt; is here, and it&amp;rsquo;s a release that makes your agents smarter, faster, and more capable than ever. 🎉&lt;/p&gt;
&lt;p&gt;While 3.0 rewrote the rules on multi-agent orchestration and skills, 3.1 fills in the gaps your production applications have been waiting for — full &lt;strong&gt;audio support&lt;/strong&gt;, &lt;strong&gt;non-blocking async execution&lt;/strong&gt;, &lt;strong&gt;concurrent multi-model pipelines&lt;/strong&gt;, a &lt;strong&gt;secure filesystem tool suite&lt;/strong&gt;, and the &lt;strong&gt;ElevenLabs&lt;/strong&gt; voice provider. Plus 21 bug fixes that make the entire stack more reliable under production load.&lt;/p&gt;</description></item><item><title>BoxLang v1.12.0 - Destructuring, Spread, Ranges, Watchers, Oh My!</title><link>https://javapro-en.svenruppert.com/boxlang-v1-12-0-destructuring-spread-ranges-watchers-oh-my/</link><pubDate>Mon, 27 Apr 2026 12:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-v1-12-0-destructuring-spread-ranges-watchers-oh-my/</guid><description>BoxLang 1.12.0 marks a meaningful turning point. After establishing a rock-solid foundation across runtime, compiler, CFML compatibility, and the module ecosystem, BoxLang has entered its innovation cycle. The language is maturing, battle-tested, and production-deployed across the industry now.</description></item><item><title>Kotlin kontra Java - Part 2 - MultiPlatform</title><link>https://javapro-en.svenruppert.com/kotlin-kontra-java-part-2-multiplatform/</link><pubDate>Wed, 22 Apr 2026 07:45:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/kotlin-kontra-java-part-2-multiplatform/</guid><description>&lt;p&gt;When you start a new project on the JVM, should you pick Java or Kotlin?&lt;/p&gt;
&lt;p&gt;You might have a preference based on the ecosystem — the tooling around it, who we can ask for help, and the libraries we can use — which we discussed in &lt;a href="https://javapro.io/2026/04/16/kotlin-kontra-java-part-1-ecosystem/"&gt;part 1&lt;/a&gt; of this article series. Or you might have a preference based on the business modeling capabilities of Java or Kotlin, which we will show in &lt;a href="https://javapro.io/2026/05/07/kotlin-kontra-java-part-3-language-for-interop/"&gt;part 3&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>How to Develop AI Agents Using BoxLang AI: A Practical Guide</title><link>https://javapro-en.svenruppert.com/how-to-develop-ai-agents-using-boxlang-ai-a-practical-guide/</link><pubDate>Mon, 20 Apr 2026 12:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/how-to-develop-ai-agents-using-boxlang-ai-a-practical-guide/</guid><description>&lt;p&gt;AI agents are transforming how we build software. Unlike traditional chatbots that just answer questions, agents can reason about what tools they need, decide when to use them, chain multiple actions together, and remember what happened earlier in a conversation.&lt;/p&gt;
&lt;p&gt;In this tutorial, I&amp;rsquo;ll show you how to build a real-world AI agent using &lt;a href="https://ai.boxlang.io"&gt;BoxLang AI&lt;/a&gt; — the official AI framework for the BoxLang JVM language. We&amp;rsquo;ll build &lt;strong&gt;SupportBot&lt;/strong&gt;, an e-commerce customer support agent that can look up orders, check inventory, issue refunds, and answer questions grounded in your knowledge base.&lt;/p&gt;</description></item><item><title>BoxLang AI Deep Dive — Part 7 of 7: MCP — The Protocol That Connects Everything 🔌</title><link>https://javapro-en.svenruppert.com/boxlang-ai-deep-dive-part-7-of-7-mcp-the-protocol-that-connects-everything-/</link><pubDate>Fri, 17 Apr 2026 12:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-ai-deep-dive-part-7-of-7-mcp-the-protocol-that-connects-everything-/</guid><description>&lt;p&gt;&lt;em&gt;BoxLang AI 3.0 Series · Part 7 of 7&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;The AI ecosystem has a tool problem. Every framework has its own way of defining tools, every agent has its own way of calling them, and every integration requires custom code on both sides. An agent built in Python can&amp;rsquo;t easily use tools built in Java. An MCP server written for Claude Desktop can&amp;rsquo;t easily be consumed by a BoxLang agent without a custom adapter.&lt;/p&gt;</description></item><item><title>BoxLang AI Deep Dive — Part 6 of 7: Memory Systems &amp; RAG — Building AI That Remembers 🧠</title><link>https://javapro-en.svenruppert.com/boxlang-ai-deep-dive-part-6-of-7-memory-systems-rag-building-ai-that-remembers-/</link><pubDate>Thu, 16 Apr 2026 12:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-ai-deep-dive-part-6-of-7-memory-systems-rag-building-ai-that-remembers-/</guid><description>&lt;p&gt;&lt;em&gt;BoxLang AI 3.0 Series · Part 6 of 7&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;A chatbot with no memory isn&amp;rsquo;t a conversation — it&amp;rsquo;s a series of isolated queries. Every message starts from scratch. The user has to re-explain who they are, what they&amp;rsquo;re working on, and what was just said. It&amp;rsquo;s exhausting, and it signals that the AI isn&amp;rsquo;t really listening.&lt;/p&gt;
&lt;p&gt;Memory is what separates a useful AI application from a toy. BoxLang AI ships with one of the most comprehensive memory systems in any AI framework — 20+ memory types across two major categories, vector embedding support for semantic retrieval, 30+ document loaders for RAG pipelines, and a per-call identity routing system that makes multi-tenant applications safe by default.&lt;/p&gt;</description></item><item><title>BoxLang AI Deep Dive — Part 5 of 7: One API, 17 Providers — The Provider Architecture Deep Dive 🛡️</title><link>https://javapro-en.svenruppert.com/boxlang-ai-deep-dive-part-5-of-7-one-api-17-providers-the-provider-architecture-deep-dive-%EF%B8%8F/</link><pubDate>Wed, 15 Apr 2026 12:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-ai-deep-dive-part-5-of-7-one-api-17-providers-the-provider-architecture-deep-dive-%EF%B8%8F/</guid><description>&lt;p&gt;&lt;em&gt;BoxLang AI 3.0 Series · Part 5 of 7&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Vendor lock-in is the silent killer of AI projects. You pick OpenAI, build everything against the OpenAI API, and then GPT-5 launches at three times the price. Or a competitor launches a model that&amp;rsquo;s faster for your use case. Or you need to self-host for compliance. Or your client is on AWS and wants Bedrock.&lt;/p&gt;
&lt;p&gt;Every time the answer to &amp;ldquo;can we switch providers?&amp;rdquo; is &amp;ldquo;it would take months,&amp;rdquo; something went wrong architecturally.&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>BoxLang AI Deep Dive — Part 4 of 7: Middleware — The Missing Layer in Every AI Framework 🧵</title><link>https://javapro-en.svenruppert.com/boxlang-ai-deep-dive-part-4-of-7-middleware-the-missing-layer-in-every-ai-framework-/</link><pubDate>Tue, 14 Apr 2026 12:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-ai-deep-dive-part-4-of-7-middleware-the-missing-layer-in-every-ai-framework-/</guid><description>&lt;p&gt;&lt;em&gt;BoxLang AI 3.0 Series · Part 4 of 7&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Here&amp;rsquo;s the question every team eventually asks about their AI agents: &lt;em&gt;how do we test these things?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Agents make live LLM calls. They invoke real tools. They have non-deterministic outputs. Standard unit testing approaches fall apart. You can&amp;rsquo;t mock every provider. You can&amp;rsquo;t replay a conversation from three weeks ago. You can&amp;rsquo;t confidently tell stakeholders that the agent you deployed today behaves the same way it did when you signed off on it.&lt;/p&gt;</description></item><item><title>BoxLang AI Deep Dive — Part 3 of 7: Multi-Agent Orchestration — Building AI Teams That Work 🌲</title><link>https://javapro-en.svenruppert.com/boxlang-ai-deep-dive-part-3-of-7-multi-agent-orchestration-building-ai-teams-that-work-/</link><pubDate>Mon, 13 Apr 2026 12:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-ai-deep-dive-part-3-of-7-multi-agent-orchestration-building-ai-teams-that-work-/</guid><description>&lt;p&gt;&lt;em&gt;BoxLang AI 3.0 Series · Part 3 of 7&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;A single agent is useful. An orchestra of agents is powerful.&lt;/p&gt;
&lt;p&gt;The problem with most multi-agent frameworks is that the orchestration layer is bolted on — you&amp;rsquo;re managing agent references manually, passing outputs between them by hand, and hoping you haven&amp;rsquo;t introduced a cycle. There&amp;rsquo;s no concept of hierarchy. No cycle detection. No way to ask &amp;ldquo;who&amp;rsquo;s in charge here?&amp;rdquo; or &amp;ldquo;how deep in the tree am I?&amp;rdquo;&lt;/p&gt;</description></item><item><title>BoxLang AI Deep Dive — Part 2 of 7: Building a Production-Grade AI Tool Ecosystem</title><link>https://javapro-en.svenruppert.com/boxlang-ai-deep-dive-part-2-of-7-building-a-production-grade-ai-tool-ecosystem/</link><pubDate>Fri, 10 Apr 2026 12:00:00 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-ai-deep-dive-part-2-of-7-building-a-production-grade-ai-tool-ecosystem/</guid><description>&lt;p&gt;&lt;em&gt;BoxLang AI 3.0 Series · Part 2 of 7&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Function calling is where most AI frameworks look deceptively simple on the surface and turn into a mess underneath. You define a tool, pass it to the LLM, and when the LLM calls it — who handles the lifecycle? Who fires observability events? Who serializes the result? Who resolves the tool by name when the only thing you have is a string?&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>BoxLang AI Deep Dive — Part 1 of 7: The Skills Revolution 🎓</title><link>https://javapro-en.svenruppert.com/boxlang-ai-deep-dive-part-1-of-7-the-skills-revolution-/</link><pubDate>Thu, 09 Apr 2026 12:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-ai-deep-dive-part-1-of-7-the-skills-revolution-/</guid><description>&lt;hr&gt;
&lt;p&gt;Every AI framework eventually hits the same wall: your system prompts start drifting. Agent A has a slightly different version of the SQL rules than Agent B. The tone policy on your support bot is three weeks behind the tone policy on your documentation bot. Someone copy-pasted the wrong version. Nobody noticed.&lt;/p&gt;
&lt;p&gt;This isn&amp;rsquo;t a discipline problem: it&amp;rsquo;s an architecture problem. System prompts are plain strings, and plain strings don&amp;rsquo;t have a source of truth.&lt;/p&gt;</description></item><item><title>Java Vector API: Faster vector computations for the JVM</title><link>https://javapro-en.svenruppert.com/java-vector-api-faster-vector-computations-for-the-jvm/</link><pubDate>Thu, 09 Apr 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/java-vector-api-faster-vector-computations-for-the-jvm/</guid><description>&lt;h2 id="introduction"&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Modern CPUs contain vector registers. These vector registers hold multiple numerical values as the same time. They enable SIMD (Single Instruction Multiple Data) which allows same instruction to be applied to multiple pairs of data which is present in these vector registers. SIMD is a natural choice for parallel data processing which is needed for processing arrays, large binary files, statistical analysis etc.&lt;/p&gt;
&lt;p&gt;Historically, Java developers relied on the HotSpot compiler to auto-vectorize simple loops. Auto-vectorization is an extremely fast choice when it applies, but it requires a lot of conditions to be met to be applied: many real-world loops are not transformed because the compiler cannot prove safety or profitability. Java’s Vector API was introduced to close this gap by providing a clear, explicit, platform-agnostic way to express vector computations so that they can be reliably compiled to the best available hardware instructions and still run correctly (with “graceful degradation”) when vector instructions are not available or not applicable.&lt;/p&gt;</description></item><item><title>High-Performance Vector-Search Grids with Java</title><link>https://javapro-en.svenruppert.com/high-performance-vector-search-grids-with-java/</link><pubDate>Wed, 08 Apr 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/high-performance-vector-search-grids-with-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 rapid rise of Generative AI has fundamentally changed how modern systems are designed. While much of the attention has focused on large language models and inference pipelines, the real differentiator in production systems lies elsewhere: in the infrastructure that delivers context to those models. Retrieval-Augmented Generation (RAG) has become the de facto pattern for enterprise GenAI. It relies on fast, scalable access to embeddings, metadata, and relationships. Yet for Java developers, building such systems at scale has remained a challenge. External vector databases introduce latency, fragmentation, and operational complexity. Distributed caches struggle with memory inefficiency and serialization overhead. Traditional databases cannot handle high-dimensional similarity search at the required speed.&lt;/p&gt;</description></item><item><title>BoxLang AI v3 released - Multi-Agent Orchestration, Tooling, Skills and so much more</title><link>https://javapro-en.svenruppert.com/boxlang-ai-v3-released-multi-agent-orchestration-tooling-skills-and-so-much-more/</link><pubDate>Tue, 07 Apr 2026 13:33:36 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-ai-v3-released-multi-agent-orchestration-tooling-skills-and-so-much-more/</guid><description>&lt;p&gt;It&amp;rsquo;s been a while since we&amp;rsquo;ve shipped something this big. &lt;strong&gt;BoxLang AI 3.0&lt;/strong&gt; is a ground-up rethink of how AI agents, models, and tools work in the BoxLang ecosystem — and it lands with ten major features at once.&lt;/p&gt;
&lt;p&gt;The headline is the &lt;strong&gt;AI Skills system&lt;/strong&gt;: a first-class implementation of Anthropic&amp;rsquo;s &lt;a href="https://www.anthropic.com/news/agent-skills"&gt;Agent Skills open standard&lt;/a&gt; that lets you define reusable knowledge blocks: coding styles, domain rules, tone policies, API guidelines once in a &lt;code&gt;SKILL.md&lt;/code&gt; file and inject them into any number of agents and models at runtime. No more copy-pasting the same system-prompt boilerplate everywhere. Skills are versioned, composable, and come in two modes: always-on (full content in every call) and lazy (only a name + description until the LLM asks for more).&lt;/p&gt;</description></item><item><title>Talk to Your Data: Natural Language Data Access in Java</title><link>https://javapro-en.svenruppert.com/talk-to-your-data-natural-language-data-access-in-java/</link><pubDate>Fri, 03 Apr 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/talk-to-your-data-natural-language-data-access-in-java/</guid><description>&lt;p&gt;&lt;a href="https://youtu.be/tMW5jxX6DoA"&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;For decades, Java developers have relied on robust frameworks to manage the complexity of enterprise applications. At the heart of this ecosystem lies &lt;strong&gt;Hibernate ORM&lt;/strong&gt;, the popular &lt;a href="https://hibernate.org/orm/"&gt;library&lt;/a&gt; for bridging the gap between object-oriented Java applications and relational databases. It allows developers to map complex domain models to database tables, and write type-safe, performant queries using the Hibernate Query Language (HQL).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quarkus&lt;/strong&gt; has emerged as a Java &lt;a href="https://quarkus.io/"&gt;framework&lt;/a&gt; for building applications and services, focusing on incredibly fast startup times, efficient resource consumption and developer joy.&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>Free Java Training Videos Now Available: From Fundamentals to Modern Frameworks</title><link>https://javapro-en.svenruppert.com/new-java-training-playlists-now-available-from-fundamentals-to-modern-frameworks/</link><pubDate>Wed, 01 Apr 2026 12:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/new-java-training-playlists-now-available-from-fundamentals-to-modern-frameworks/</guid><description>&lt;p&gt;A comprehensive collection of Java training videos is now publicly available, offering developers valuable insights into modern backend technologies and frameworks.&lt;/p&gt;
&lt;p&gt;The playlists cover key topics including &lt;strong&gt;Spring Boot, Quarkus, Helidon, Payara, EclipseStore, and MicroStream&lt;/strong&gt;, providing both a strong foundation and deeper technical understanding. The content is designed for developers at all levels—from those starting with modern Java frameworks to experienced engineers looking to refine their expertise.&lt;/p&gt;
&lt;h2 id="structured-learning-across-the-java-ecosystem"&gt;Structured Learning Across the Java Ecosystem&lt;/h2&gt;
&lt;p&gt;Rather than presenting isolated tutorials, the playlists follow a structured approach that helps developers build a coherent understanding of essential concepts such as dependency injection, microservices architecture, data persistence, and performance optimization.&lt;/p&gt;</description></item><item><title>The FFM API: OpenJDK Changed the Game for Native Interactions and #JavaOnRaspberryPi</title><link>https://javapro-en.svenruppert.com/the-ffm-api-openjdk-changed-the-game-for-native-interactions-and-javaonraspberrypi/</link><pubDate>Wed, 01 Apr 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/the-ffm-api-openjdk-changed-the-game-for-native-interactions-and-javaonraspberrypi/</guid><description>&lt;p&gt;&lt;a href="https://schedule.jcon.one/2026/session/1032099"&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;If you&amp;rsquo;re working with &lt;a href="https://www.pi4j.com/"&gt;Pi4J&lt;/a&gt;, you&amp;rsquo;re essentially using a Java library that bridges the gap between your Java application and the GPIO hardware on a Raspberry Pi. The beauty of Pi4J lies in how it hides the complexity of native library integration and the &lt;a href="https://www.baeldung.com/jni"&gt;Java Native Interface (JNI)&lt;/a&gt;. It lets you focus on building great applications rather than dealing with low-level system calls.&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/12/pi4j-overview.webp" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;My involvement with Pi4J started around 2020 while writing the book &amp;ldquo;&lt;a href="https://webtechie.be/books/"&gt;Getting Started with Java on the Raspberry Pi&lt;/a&gt;&amp;rdquo;. Despite years of contributing to the project, the deeper layers of Pi4J&amp;rsquo;s codebase still challenge me. Take a look at this snippet and tell me if you understand what&amp;rsquo;s going on:&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>Java 26 + Spring Boot 4: From Certification Skills to Production-Ready Apps</title><link>https://javapro-en.svenruppert.com/java-26-spring-boot-4-from-certification-skills-to-production-ready-apps/</link><pubDate>Fri, 13 Mar 2026 07:00:00 +0000</pubDate><guid>https://javapro-en.svenruppert.com/java-26-spring-boot-4-from-certification-skills-to-production-ready-apps/</guid><description>Most Spring developers don’t fail in production because they forgot an annotation. They fail because the “non-feature” parts of the system were treated as optional: observability that comes too late, security added at the end, data access built under deadline pressure, APIs that can’t evolve without breaking clients, tests that don’t protect upgrades. This article argues that Spring certification</description></item><item><title>Boxlang ai : a dynamic jvm approach to ai agents</title><link>https://javapro-en.svenruppert.com/boxlang-ai-a-dynamic-jvm-approach-to-ai-agents/</link><pubDate>Wed, 11 Mar 2026 12:00:03 +0000</pubDate><guid>https://javapro-en.svenruppert.com/boxlang-ai-a-dynamic-jvm-approach-to-ai-agents/</guid><description>&lt;p&gt;If you missed our live BoxLang AI session, the full recording is now available — and it&amp;rsquo;s packed with everything you need to start building production-grade AI applications on the JVM.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://youtu.be/aUFp32r1dIA"&gt;https://youtu.be/aUFp32r1dIA&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="whats-in-the-session"&gt;What&amp;rsquo;s In the Session&lt;/h2&gt;
&lt;p&gt;Ortus Solutions CEO &lt;strong&gt;Luis Majano&lt;/strong&gt; walks you through BoxLang AI from first principles to live, working code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agenda:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;00:00&lt;/code&gt; — Introduction &amp;amp; Announcements&lt;/li&gt;
&lt;li&gt;&lt;code&gt;03:07&lt;/code&gt; — Phase 1: Core AI Concepts&lt;/li&gt;
&lt;li&gt;&lt;code&gt;19:10&lt;/code&gt; — Phase 2: Introduction to BoxLang AI&lt;/li&gt;
&lt;li&gt;&lt;code&gt;31:47&lt;/code&gt; — Live Coding Demos&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1:05:59&lt;/code&gt; — Conclusion &amp;amp; Q&amp;amp;A&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="what-is-boxlang-ai"&gt;What is BoxLang AI?&lt;/h2&gt;
&lt;p&gt;BoxLang AI is a modular, production-ready AI and agent framework built on BoxLang. It&amp;rsquo;s built for real-world systems — not demos — giving you full control over models, memory, and execution.&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>Bridging Java and Python for AI/ML in Production: The Case for GraalPy on GraalVM</title><link>https://javapro-en.svenruppert.com/bridging-java-and-python-for-ai-ml-in-production-the-case-for-graalpy-on-graalvm/</link><pubDate>Tue, 10 Mar 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/bridging-java-and-python-for-ai-ml-in-production-the-case-for-graalpy-on-graalvm/</guid><description>&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/08/JavaWithAFlavourofPy.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Java with a dash of Python&lt;/p&gt;
&lt;h3 id="abstract"&gt;Abstract&lt;/h3&gt;
&lt;p&gt;In the Java stack, tapping into Python’s powerhouse of NLP and AI/ML libraries often means messy inter-process plumbing—until &lt;strong&gt;GraalPy&lt;/strong&gt; changed the game. With GraalVM&amp;rsquo;s Python runtime embedded directly in your JVM, you can import and run Python libraries like &lt;strong&gt;TextBlob&lt;/strong&gt; for sentiment analysis straight from Java. This approach offers a viable alternative for the more complex solutions, such as HTTP, gRPC, or subprocesses.&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>Why I Abandoned my 30-year Open Source Project</title><link>https://javapro-en.svenruppert.com/why-i-abandoned-my-30-year-open-source-project/</link><pubDate>Fri, 20 Feb 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/why-i-abandoned-my-30-year-open-source-project/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;I started an open-source project in 1996, I am abandoning now. It was not my first OSS project and certainly not the last one. It definitely was the one that lasted the longest and that I had the most faith in having an impact on the industry.&lt;/p&gt;
&lt;p&gt;The project aimed to create a new approach to document maintenance, and over the years, I developed a few versions of software solutions that supported the idea.&lt;/p&gt;</description></item><item><title>JAVA &amp; JAKARTA EE and THE EVOLUTION OF THE CLOUD WITH NANOS UNIKERNEL...</title><link>https://javapro-en.svenruppert.com/java-jakarta-ee-and-the-evolution-of-the-cloud-with-nanos-unikernel/</link><pubDate>Wed, 11 Feb 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/java-jakarta-ee-and-the-evolution-of-the-cloud-with-nanos-unikernel/</guid><description>&lt;h2 id="the-future-of-computing-oncloud-onprem-onedge-of-java-is-already-here"&gt;The Future of Computing oNcloud, onprem, onedge of Java Is Already Here!&lt;/h2&gt;
&lt;p&gt;For years, Kubernetes has been regarded as the de-facto standard for modernizing Java applications in a cloud-native direction. Yet Kubernetes is not the only path to scalability, continuous upgrades, and isolation. There is an alternative approach, often underestimated, which consists of leveraging the &lt;strong&gt;hypervisors already included and fully managed by the major cloud providers&lt;/strong&gt;, running &lt;strong&gt;Unikernel&lt;/strong&gt; images based on &lt;strong&gt;Nanos&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>The Open Source, Deterministic Engine Maintaining Java’s Next 30 Years</title><link>https://javapro-en.svenruppert.com/the-open-source-deterministic-engine-maintaining-javas-next-30-years/</link><pubDate>Wed, 04 Feb 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/the-open-source-deterministic-engine-maintaining-javas-next-30-years/</guid><description>&lt;p&gt;Java is entering its fourth decade as one of the world’s most important programming languages. From banks to telecom to retail, Java still powers systems that billions of people depend on daily. The language’s stability and portability are legendary, but so is the technical debt that has accumulated over thirty years of upgrades, frameworks, and shifting best practices.&lt;/p&gt;
&lt;p&gt;Large enterprises often face sprawling portfolios of hundreds or even thousands of Java applications, many built atop older frameworks and outdated APIs. Banks still rely on Java 8 systems to process trades. Healthcare systems depend on decade-old Spring applications. Telecom providers run on Java servers written before cloud-native architectures became the norm.&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></channel></rss>