<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Web Development on JAVAPRO International</title><link>https://javapro-en.svenruppert.com/categories/web-development/</link><description>Recent content in Web Development 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/web-development/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>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>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>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>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>Best Practices for Writing Clean Code in Java</title><link>https://javapro-en.svenruppert.com/best-practices-for-writing-clean-code-in-java/</link><pubDate>Tue, 25 Nov 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/best-practices-for-writing-clean-code-in-java/</guid><description>&lt;h5 id="introduction"&gt;Introduction&lt;/h5&gt;
&lt;p&gt;Writing clean, maintainable code isn&amp;rsquo;t just a good idea; it&amp;rsquo;s a &lt;strong&gt;non-negotiable imperative&lt;/strong&gt; for any professional Java developer. In today&amp;rsquo;s complex software landscape, code gets read far more often than it&amp;rsquo;s written. Clean code isn&amp;rsquo;t merely about functionality; it&amp;rsquo;s fundamentally about &lt;strong&gt;readability&lt;/strong&gt;, &lt;strong&gt;simplicity&lt;/strong&gt;, &lt;strong&gt;efficiency&lt;/strong&gt;, and &lt;strong&gt;adaptability&lt;/strong&gt;. Whether you&amp;rsquo;re contributing to an open-source project, developing a critical enterprise application, or collaborating within a large team, clean code ensures your work is not only easy to understand but also readily extensible and modifiable for everyone involved.&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>Design-first APIs for UI Components</title><link>https://javapro-en.svenruppert.com/design-first-apis-for-ui-components/</link><pubDate>Thu, 04 Sep 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/design-first-apis-for-ui-components/</guid><description>&lt;p&gt;Oh how the internet has changed. Where it began with HTML, static pages with minimal to no styling to a platform that can do almost everything we do with computers. Maps, games, productivity tooling and of course websites. They are all still presented using HTML, CSS and JavaScript.&lt;/p&gt;
&lt;p&gt;One major thing that did change is what kind of people are needed/working on these applications. Back- and front-end developers, designers, product owners, scrum masters, users, library owners, library consumers, framework authors. The list goes on and on. The reason is because the work became too big, too complex, for a single person to handle; at least in most enterprise areas.&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>Integrating Micro Frontends into Existing Applications – Lessons Learned</title><link>https://javapro-en.svenruppert.com/integrating-micro-frontends-into-existing-applications-lessons-learned/</link><pubDate>Thu, 24 Jul 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/integrating-micro-frontends-into-existing-applications-lessons-learned/</guid><description>&lt;p&gt;The application has been in production for several years – can you jump on a hype like micro frontends in such a scenario? We took the plunge and redesigned our existing frontend to incorporate the micro frontends pattern. What motivated us to do this and what we learned along the way, you will discover in this article.&lt;/p&gt;
&lt;p&gt;We had the following situation: Two project teams within the same company develop web portals independently from each other. However, management had mandated that as many components as possible should be shared and reused among the two projects. Reusability was a core goal set for both projects.&lt;/p&gt;</description></item><item><title>A Passwordless Future: Passkeys for Developers</title><link>https://javapro-en.svenruppert.com/a-passwordless-future-passkeys-for-developers/</link><pubDate>Fri, 30 May 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/a-passwordless-future-passkeys-for-developers/</guid><description>&lt;p&gt;Passwords have been around for thousands of years and we were all happily sharing our Netflix passwords. They are probably not going anywhere but they are not the best way to secure our digital lives. They are a hassle for users and a security risk for applications. The future of secure authentication is passwordless and passkeys are leading the way.&lt;/p&gt;
&lt;p&gt;According to &lt;a href="https://www.verizon.com/business/resources/reports/dbir/2023/summary-of-findings/"&gt;Verizon’s 2024 Data Breach Investigations Report&lt;/a&gt;, stolen credentials and phishing account for over 65% of all data breaches.&lt;/p&gt;</description></item><item><title>Bridging the Gap: Full-Stack Development Without the Headaches</title><link>https://javapro-en.svenruppert.com/bridging-the-gap-full-stack-development-without-the-headaches/</link><pubDate>Tue, 06 May 2025 07:00:03 +0000</pubDate><guid>https://javapro-en.svenruppert.com/bridging-the-gap-full-stack-development-without-the-headaches/</guid><description>&lt;p&gt;Working on web projects often means dealing with two separate environments—one for the backend and another for the frontend—each with its own ecosystem. Developers frequently run into issues when dealing with the ecosystem of their counterpart, creating a needless wall between front-end and back-end developers. You have to use unfamiliar tools, follow API changes, create mocks, and have a hard time creating e2e tests. Overall, this makes development unnecessarily frustrating and a time-consuming process.&lt;/p&gt;</description></item><item><title>AI-Powered Form Wizards: Chat, Click, Done</title><link>https://javapro-en.svenruppert.com/ai-powered-form-wizards-chat-click-done/</link><pubDate>Tue, 15 Apr 2025 10:00:23 +0000</pubDate><guid>https://javapro-en.svenruppert.com/ai-powered-form-wizards-chat-click-done/</guid><description>&lt;p&gt;&lt;a href="https://schedule.jcon.one/session/794986"&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/04/Magazin-Artikel-Banner-2-1024x214.jpg" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="transforming-form-filling-into-a-conversational-experience"&gt;Transforming Form Filling into a Conversational Experience&lt;/h2&gt;
&lt;p&gt;Forms are everywhere—tax declarations, job applications, or even signing up for a new service. Although some forms are simple, many include ambiguous fields, complicated logic, or subpar design. This may frustrate users and make them more likely to make mistakes. Completing paperwork shouldn&amp;rsquo;t be like solving a puzzle&lt;/p&gt;
&lt;p&gt;Traditional forms, with their rigid structures and often confusing layouts, present a significant hurdle for users. Our objective was to dismantle this static paradigm and replace it with a dynamic, conversational interface. Instead of forcing users to navigate a pre-defined maze of fields, we envisioned an interactive experience where an AI assistant adapts in real-time. This approach fundamentally shifts the burden of data entry and validation. A user chatting with an AI can dramatically reduce errors and streamline the overall process. Imagine a conversation, not a questionnaire, where the AI guides you through each step.&lt;/p&gt;</description></item><item><title>Unit Testing Web Frontend For Accessibility Aspect</title><link>https://javapro-en.svenruppert.com/unit-testing-web-frontend-for-accessibility-aspect/</link><pubDate>Mon, 21 Oct 2024 14:00:53 +0000</pubDate><guid>https://javapro-en.svenruppert.com/unit-testing-web-frontend-for-accessibility-aspect/</guid><description>&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2024/10/image-1.jpeg" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;ldquo;&lt;a href="https://www.flickr.com/photos/136485307@N06/48286447167"&gt;Apollo 11 Altitude Chamber Test&lt;/a&gt;&amp;rdquo; by &lt;a href="https://www.flickr.com/photos/136485307@N06"&gt;Apollo Image Gallery&lt;/a&gt;/ &lt;a href="https://creativecommons.org/publicdomain/mark/1.0/?ref=openverse"&gt;pdm 1.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When we’re talking about unit testing, it is something that developers want to avoid, but what about accessibility?? the same thing, even most developers will say, ‘Nah, I&amp;rsquo;m good` *kidding&lt;/p&gt;
&lt;p&gt;So, what is unit testing?? Isn’t it enough when we test the feature we developed works fine? The short answer may not be! I’ll tell you why&amp;hellip;&lt;/p&gt;
&lt;p&gt;Unit testing is a way of testing a unit — the smallest piece of code that can be logically isolated in a system. In most programming languages, that is a function, a subroutine, a method, or a property. The isolated part of the definition is important. In his book “Working Effectively with Legacy Code”, author Michael Feathers states that such tests are not unit tests when they rely on external systems: “If it talks to the database, it talks across the network, it touches the file system, it requires system configuration, or it can’t be run at the same time as any other test.”Modern versions of unit testing can be found in frameworks like JUnit, or testing tools like &lt;a href="https://smartbear.com/product/testcomplete/overview/"&gt;TestComplete&lt;/a&gt;. Look a little further and you will find SUnit, the mother of all unit testing frameworks created by Kent Beck, and a reference in chapter 5 of The Art of Software Testing. Before that, it was mostly a mystery. I asked Jerry Weinberg about his experiences with unit testing — “We did unit testing in 1956. As far as I knew, it was always done, as long as there were computers”.Regardless of when and where unit testing began, one thing is for sure. Unit testing is here to stay. Let’s look at some more practical aspects of unit testing. In fact, the traditional test of our application by black box testing, the thing that we talked about earlier manual testing only finds whether the feature that we developed already works or not. Then, when we talk about something important thing that most developers skip or miss is about accessibility (a11y). Accessibility is when we design, and develop products and any application that we put on it our thoughts about how this thing will work for everyone literally everyone, diversity disabilities included. So when we combine both a11y and unit testing it will lead to perfection.&lt;/p&gt;</description></item><item><title>Top 5 UI Web Libraries That Support Accessibility For Your Next Project</title><link>https://javapro-en.svenruppert.com/top-5-ui-web-libraries-that-support-accessibility-for-your-next-project/</link><pubDate>Fri, 18 Oct 2024 11:24:59 +0000</pubDate><guid>https://javapro-en.svenruppert.com/top-5-ui-web-libraries-that-support-accessibility-for-your-next-project/</guid><description>&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2024/10/image.jpeg" alt="image thumbnail building" loading="lazy" decoding="async"&gt;
 
 &lt;figcaption&gt;image thumbnail building&lt;/figcaption&gt;
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;ldquo;&lt;a href="https://europeanheritageawards-archive.eu/laureates-1978-2018/detail/cultural-heritage-and-barrier-free-accessibility-project"&gt;Cultural Heritage and Barrier-free Accessibility Project&lt;/a&gt;&amp;rdquo;/ &lt;a href="https://creativecommons.org/publicdomain/mark/1.0/?ref=openverse"&gt;pdm 1.0&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="what-makes-the-best-ui-libraries"&gt;What Makes The Best UI Libraries?&lt;/h2&gt;
&lt;p&gt;When choosing a UI library, consider factors such as your project requirements, the skill set of your team, and the design principles you want to follow. For example, if your project requires some accessibility but lacks resources like budget or team, you can try to use a 3rd party component UI library that will save a lot of your resources. But, before we determine the top 5 best UI libraries for accessibility, it’s essential to establish clear criteria not only from the accessibility aspect. This ensures that our selection process is fair, objective, and accountable, instilling confidence in the validity of our list.&lt;/p&gt;</description></item></channel></rss>