<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>IDE &amp; Tools on JAVAPRO International</title><link>https://javapro-en.svenruppert.com/categories/ide--tools/</link><description>Recent content in IDE &amp; Tools on JAVAPRO International</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Wed, 10 Jun 2026 07:00:02 +0000</lastBuildDate><atom:link href="https://javapro-en.svenruppert.com/categories/ide--tools/index.xml" rel="self" type="application/rss+xml"/><item><title>Beyond UML: Clean Software Architecture in the Age of AI‑Generated Code</title><link>https://javapro-en.svenruppert.com/beyond-uml-clean-software-architecture-in-the-age-of-aigenerated-code/</link><pubDate>Wed, 10 Jun 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/beyond-uml-clean-software-architecture-in-the-age-of-aigenerated-code/</guid><description>&lt;h2 id="abstract"&gt;Abstract&lt;/h2&gt;
&lt;p&gt;Today we write more code in less time than ever before. AI systems act like permanently available junior programmers: They produce thousands of lines of code in minutes – but who takes responsibility for the software architecture?&lt;/p&gt;
&lt;p&gt;The real problem is therefore often not “bad AI code,” but the growing difficulty for people to keep an overview and make sound architectural decisions.&lt;/p&gt;
&lt;p&gt;This article discusses an idea for quickly building a mental model of existing code, spotting architectural problems early, and making targeted changes – without having to maintain static documentation in parallel.&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>curl | bash | hacked: the unseen dangers in your dev lifecycle</title><link>https://javapro-en.svenruppert.com/curl-bash-hacked-the-unseen-dangers-in-your-dev-lifecycle/</link><pubDate>Wed, 25 Mar 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/curl-bash-hacked-the-unseen-dangers-in-your-dev-lifecycle/</guid><description>&lt;p&gt;&lt;a href="https://schedule.jcon.one/2026/session/1062707"&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;There’s a line of shell that looks harmless, even helpful:&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;curl &amp;lt;XXX&amp;gt; | bash&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;It promises speed. Convenience. &lt;em&gt;“Just install the thing and get on with your day.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;That promise is exactly why attackers love it.&lt;/p&gt;
&lt;p&gt;That one-liner doesn’t merely install a tool. It hands execution control to whatever sits on the other end of a network request, runs with your permissions on your machine, and within your environment. There is no sandbox. No review step. No guardrails.&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>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>Java Meets the Future: How Quarkus Seamlessly Combines Architecture, Performance, and Cloud-Native</title><link>https://javapro-en.svenruppert.com/java-meets-the-future-how-quarkus-seamlessly-combines-architecture-performance-and-cloud-native/</link><pubDate>Thu, 04 Dec 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/java-meets-the-future-how-quarkus-seamlessly-combines-architecture-performance-and-cloud-native/</guid><description>&lt;p&gt;Given the increasing ubiquity of digital technologies, which are becoming increasingly and naturally embedded in our environment, the essential question arises as to what role Java will play in this future development of IT systems. Mark Weiser, pioneer of ubiquitous computing, described this technological paradigm shift as follows: “The best technology is the one we don&amp;rsquo;t even notice because it naturally enriches our everyday lives.” (paraphrased from [LMU19]).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ubiquitous computing&lt;/strong&gt; is already demonstrating how technology is becoming omnipresent and seamlessly integrated into our environment as an invisible companion. A key factor here is the almost universal access to networks (such as Wi-Fi), which is increasingly becoming standard infrastructure internationally. This access enables the real-time networking of smart devices, from smart homes to wearables, and forms the basis for technologies that work intuitively in the background and communicate with each other seamlessly without disruptive interference. In addition, ubiquitous computing promotes an ever-closer &lt;strong&gt;symbiosis between humans and machines&lt;/strong&gt;, in which new technologies are emerging that are increasingly replacing classic interfaces to the digital world such as smartphones and tablets. Devices such as mixed reality glasses (e.g. &lt;em&gt;Meta Quest&lt;/em&gt; or &lt;em&gt;Apple Vision Pro)&lt;/em&gt; open up a new form of interaction in which digital information is projected directly and contextually into the field of vision. The goal is no longer just general interaction, but rather the precise adaptation of digital content to the individual needs of the user. This development leads to the concept of &lt;strong&gt;hyper-personalization&lt;/strong&gt;: systems respond in real time to location, preferences, and goals, providing tailored information, entertainment, or support in everyday life. This points to a future in which digital experiences are seamlessly integrated into personal life.&lt;/p&gt;</description></item><item><title>Beyond Version Control: How Git Can Power Smarter Technical Decisions</title><link>https://javapro-en.svenruppert.com/beyond-version-control-how-git-can-power-smarter-technical-decisions/</link><pubDate>Tue, 02 Dec 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/beyond-version-control-how-git-can-power-smarter-technical-decisions/</guid><description>&lt;p&gt;When most developers think about Git, they think about branches, commits, merges, and the occasional conflict that makes them question their life choices. But fortunately Git is more than just a version control system, it’s also a powerful source of data—data that can drive strategic decisions, improve workflows, reduce risk, and help your team write better software.&lt;/p&gt;
&lt;p&gt;In this article, we’ll explore how you can use Git not just to manage code, but to &lt;strong&gt;gain insights that lead to smarter, faster, and more reliable decision-making&lt;/strong&gt;. Whether you’re a developer, a team lead, or a CTO, Git can offer you a hidden layer of intelligence you may not be using to its full potential.&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>Code Wizardry: Casting Spells to Fix Bugs</title><link>https://javapro-en.svenruppert.com/code-wizardry-casting-spells-to-fix-bugs/</link><pubDate>Thu, 18 Sep 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/code-wizardry-casting-spells-to-fix-bugs/</guid><description>&lt;h2 id="introduction"&gt;introduction&lt;/h2&gt;
&lt;p&gt;Multiple developers may introduce changes to develop new features or fix bugs during an application&amp;rsquo;s life. At the same time, these changes could introduce problems in the code, such as bad practices regarding the declaration of attributes, duplicate code, or pieces of code with a high risk of producing errors. &lt;br&gt;
&lt;br&gt;
In many cases, this situation could be detected on a peer review of the code for another developer but implies that someone needs to spend too much time focusing on small details instead of focusing on the problem that the code tries to fix. The appearance of tools like PMD, Checkstyle, SonarLint, and many others that detect problems analyzing the code mitigates most of the problem, but let’s see in detail the impact on the day-to-day of the company or developer.&lt;/p&gt;</description></item><item><title>Launching a Java Debugger in Eclipse - A Myriad of Options</title><link>https://javapro-en.svenruppert.com/launching-a-java-debugger-in-eclipse-a-myriad-of-options/</link><pubDate>Wed, 17 Sep 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/launching-a-java-debugger-in-eclipse-a-myriad-of-options/</guid><description>&lt;p&gt;How to start a debugger? Seriously? Is it really worth a story? Let us find out about the different features of launching..&lt;/p&gt;
&lt;p&gt;We need to of course launch in Debug mode :&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/01/image-74.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Debug Button&lt;/p&gt;
&lt;p&gt;And then pick up the following option:&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/01/image-77.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Pull down from the debug button&lt;/p&gt;
&lt;p&gt;For the detail-oriented, there is this Show Command line option:&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/01/image-70.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;click to see command line&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/01/image-81.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;ok, let’s escape back to the world of ui fast:&lt;/p&gt;</description></item><item><title>JBang, the awesome Java file runner 💥</title><link>https://javapro-en.svenruppert.com/jbang-the-awesome-java-file-runner-/</link><pubDate>Thu, 11 Sep 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/jbang-the-awesome-java-file-runner-/</guid><description>&lt;p&gt;When developing on the JVM, we may write single file programs. In this situation, we want to build and run them in a very simple way. Classical tools such as Gradle or Maven are inconvenient for such cases. That&amp;rsquo;s what JBang addresses in addition to bringing nice exclusive features. Let&amp;rsquo;s explore them in this post.&lt;/p&gt;
&lt;h2 id="quick-start"&gt;Quick start&lt;/h2&gt;
&lt;p&gt;JBang CLI (Command Line Interface) can be installed &lt;a href="https://www.jbang.dev/documentation/guide/latest/installation.html"&gt;in many ways&lt;/a&gt;. The most straightforward one is to run one of these scripts depending on your OS:&lt;/p&gt;</description></item><item><title>Unleashing the Power of Maven Archetypes</title><link>https://javapro-en.svenruppert.com/unleashing-the-power-of-maven-archetypes/</link><pubDate>Fri, 05 Sep 2025 07:00:03 +0000</pubDate><guid>https://javapro-en.svenruppert.com/unleashing-the-power-of-maven-archetypes/</guid><description>&lt;p&gt;Creating new projects from scratch is a common task in today’s world. Often, this involves manually setting up folders and files or using tools like Spring Initializr, Micronaut Launch, Eclipse Starter for Jakarta EE, Quarkus Starter, or IntelliJ to streamline the initial setup. But what if there was a way to automate and standardise these tasks, taking your project setup to the next level?&lt;/p&gt;
&lt;p&gt;While these tools are excellent for generating a basic &amp;ldquo;Hello World&amp;rdquo; application, they often fall short when it comes to adding project-specific configurations and components that are standard within your organisation. As a result, you might find yourself spending time in a tedious and error-prone process such as copy-pasting parts of similar applications, renaming files, and replacing variables.&lt;/p&gt;</description></item><item><title>Japo: The Ultimate Search Engine for Java Annotations</title><link>https://javapro-en.svenruppert.com/japo-the-ultimate-search-engine-for-java-annotations/</link><pubDate>Thu, 21 Aug 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/japo-the-ultimate-search-engine-for-java-annotations/</guid><description>&lt;p&gt;In the evolving landscape of Java development, annotations play a critical role in simplifying code, enhancing readability, and enabling powerful framework capabilities. Yet, finding detailed, accurate, and consolidated information about Java annotations has long been a challenge for developers. &lt;strong&gt;JAPO&lt;/strong&gt; (Java Annotations Repo) is the game-changing solution addressing this gap. Offering a feature-rich search engine, JAPO enables Java developers to explore annotations, Maven artifacts, and much more with unparalleled ease. &lt;/p&gt;</description></item><item><title>Observability Landscape in Java</title><link>https://javapro-en.svenruppert.com/observability-landscape-in-java/</link><pubDate>Wed, 13 Aug 2025 07:00:03 +0000</pubDate><guid>https://javapro-en.svenruppert.com/observability-landscape-in-java/</guid><description>&lt;p&gt;Java has become a well-established and widely adopted language. As software systems became more complex with the shift to microservices, Java observability tools evolved to meet new demands. It has evolved to address these new challenges, offering improved capabilities for monitoring, tracing, and debugging. This article explores the evolution of Java observability and its adaptation to modern cloud-native solutions. Lets discuss how they have shaped into the landscape of observability in Java applications today.&lt;/p&gt;</description></item><item><title>Breakpoints – The Lifeline of Debugging – An Eclipse Features Guide</title><link>https://javapro-en.svenruppert.com/breakpoints-the-lifeline-of-debugging-an-eclipse-features-guide/</link><pubDate>Tue, 12 Aug 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/breakpoints-the-lifeline-of-debugging-an-eclipse-features-guide/</guid><description>&lt;p&gt;Each and Every programmer would have got stuck with some debugging issue or the other so many times. And would have stopped the program at a breakpoint. And here is a detailed look at breakpoints.&lt;/p&gt;
&lt;p&gt;As an Eclipse Committer, I have shown the Eclipse IDE pictures and have explained from the Eclipse IDE point of view. Every time we want to inspect a variable, see the stack, and what not, we need to break the program at some point — and hence we require breakpoints. There are a whole lot of features with breakpoints, let us start with the basics:&lt;/p&gt;</description></item><item><title>Code Reviews with AI: a Developer Guide</title><link>https://javapro-en.svenruppert.com/code-reviews-with-ai-a-developer-guide/</link><pubDate>Wed, 30 Jul 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/code-reviews-with-ai-a-developer-guide/</guid><description>&lt;p&gt;Code reviews are a cornerstone of software development. They&amp;rsquo;re where we share knowledge, catch bugs early, and ensure our code meets the highest standards.&lt;/p&gt;
&lt;p&gt;But let&amp;rsquo;s be honest&amp;hellip;&lt;/p&gt;
&lt;p&gt;Traditional code reviews can be time-consuming and tedious and sometimes even miss subtle yet critical issues. Enter the age of AI-powered code review, a game-changer that addresses these challenges and elevates code quality to new heights.&lt;/p&gt;
&lt;p&gt;This article dives into the common pitfalls of code reviews and explores how AI tools can revolutionize each phase of the development lifecycle.&lt;br&gt;
&lt;br&gt;
I will discuss the use and impact of AI on the different phases of the SDLC from the 2 main perspectives of the developer and the reviewer. I will also talk specifically about the use of AI in the Code Review and how to implement it productively. I will provide examples of tools used in the different phases: &lt;a href="https://github.com/features/copilot"&gt;Github Copilot&lt;/a&gt;, &lt;a href="https://www.sonarsource.com/"&gt;SonarQube&lt;/a&gt;, &lt;a href="https://www.qodo.ai/products/qodo-gen/"&gt;Qodo&lt;/a&gt;, and &lt;a href="https://www.jetbrains.com/es-es/idea/"&gt;IntelliJ&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>A New Generation’s Chance to Shape the Future: Building the Next Great Java IDE in Open Source</title><link>https://javapro-en.svenruppert.com/a-new-generations-chance-to-shape-the-future-building-the-next-great-java-ide-in-open-source/</link><pubDate>Wed, 16 Jul 2025 07:00:03 +0000</pubDate><guid>https://javapro-en.svenruppert.com/a-new-generations-chance-to-shape-the-future-building-the-next-great-java-ide-in-open-source/</guid><description>&lt;h3 id="a-new-generations-chance-to-shape-the-future-building-the-next-great-java-ide-in-open-source"&gt;&lt;strong&gt;A New Generation’s Chance to Shape the Future: Building the Next Great Java IDE in Open Source&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The Eclipse IDE has been a key platform for Java developers and a pillar of the open source community for over two decades. It has helped countless developers build applications, from enterprise software to experimental projects, supporting Java’s ecosystem growth. But like all technology, it must evolve to stay relevant. Enter &amp;ldquo;Initiative 31&amp;rdquo;: a bold step toward reimagining what an IDE can be in the 21st century.&lt;/p&gt;</description></item><item><title>Jump 20 years of Java with Migration Engineering</title><link>https://javapro-en.svenruppert.com/jump-20-years-of-java-with-migration-engineering/</link><pubDate>Tue, 13 May 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/jump-20-years-of-java-with-migration-engineering/</guid><description>Java has changed a lot in the last 30 years. Many organizations have problems keeping up, migration engineering helps here.</description></item><item><title>Policy and Process: Thinking differently about Modern Java API design</title><link>https://javapro-en.svenruppert.com/policy-and-process-thinking-differently-about-modern-java-api-design/</link><pubDate>Wed, 30 Apr 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/policy-and-process-thinking-differently-about-modern-java-api-design/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=dT9Qog-g3Gw&amp;amp;list=PLFeSAZzYdUodZjQy6a3pCBl43UUem8_E3&amp;amp;index=18"&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/03/Magazin-Artikel-Banner-2-1024x214.jpg" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are many guides on achieving the right architectural balance and multiple thoughts about the ‘right’ way. In this article, I want to distil some of this thinking, apply it to Java API design, and use modern Java features. Historical patterns like AWT or RMI often influence older Java API design thinking, and it’s time to remind readers that modern Java features offer new, more powerful, and frequently safer ways to design APIs.&lt;/p&gt;</description></item><item><title>Top Security Flaws hiding in your code right now - and how to fix them</title><link>https://javapro-en.svenruppert.com/top-security-flaws-injections/</link><pubDate>Tue, 29 Apr 2025 07:00:07 +0000</pubDate><guid>https://javapro-en.svenruppert.com/top-security-flaws-injections/</guid><description>&lt;p&gt;In 2019, a significant &lt;a href="https://medium.com/@sashni/dont-play-games-with-your-cybersecurity-c3dbea71685b"&gt;breach in Fortnite&lt;/a&gt;, the popular game, reportedly exposed millions of players to malware risk. The incident underscored the importance of securing SQL databases properly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;But this is not an isolated issue.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Multiple attacks involving SQL injection have occurred, like the one Tesla experienced in 2018. In that case, another SQL injection attack affected Tesla’s Kubernetes console, resulting in financial losses due to unauthorized cryptocurrency mining activities.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;But this is not only about SQL Injection.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>AI Tools for Jakarta EE</title><link>https://javapro-en.svenruppert.com/ai-tools-for-jakarta-ee/</link><pubDate>Thu, 24 Apr 2025 23:42:38 +0000</pubDate><guid>https://javapro-en.svenruppert.com/ai-tools-for-jakarta-ee/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=sdppIrhwbKk&amp;amp;list=PLFeSAZzYdUodZjQy6a3pCBl43UUem8_E3&amp;amp;index=16"&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/03/Magazin-Artikel-Banner-2-1024x214.jpg" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Artificial Intelligence (AI) is transforming the world of software development, including Jakarta EE. Traditionally, developers relied on project generators, visual designers, and IDE auto-completion to build applications. However, these tools often lacked adaptability, context awareness, and efficiency. AI-powered tools such as &lt;strong&gt;Payara Starter&lt;/strong&gt; and &lt;strong&gt;Jeddict AI Assistant&lt;/strong&gt; are now addressing these limitations, accelerating development workflows, and empowering developers to focus on innovation. This article explores how these tools enhance Jakarta EE development, using a conference application as a practical example. Additionally, it discusses future possibilities, including AI assistants integrated with Payara Server for server setup and diagnostics.&lt;/p&gt;</description></item><item><title>Hitchhiker's Guide to Java Performance</title><link>https://javapro-en.svenruppert.com/hitchhikers-guide-to-java-performance/</link><pubDate>Mon, 07 Apr 2025 11:43:20 +0000</pubDate><guid>https://javapro-en.svenruppert.com/hitchhikers-guide-to-java-performance/</guid><description>&lt;h2 id="the-past-the-present-and-the-future"&gt;The Past, The Present and The Future&lt;/h2&gt;
&lt;p&gt;Over the last 30 years, Java has evolved from an exotic “write once, run anywhere” language to one of the dominant platforms for software development worldwide. In the early years, Java was justifiably considered slow compared to languages such as C/C++, which was mainly due to the initial interpreter approach. However, the last three decades have shown that the VM concept with HotSpot’s adaptive optimization is clearly the superior approach.&lt;br&gt;
&lt;strong&gt;by Ingo Düppe&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>The Art of Static Code Analysis</title><link>https://javapro-en.svenruppert.com/the-art-of-static-code-analysis/</link><pubDate>Tue, 04 Feb 2025 22:49:48 +0000</pubDate><guid>https://javapro-en.svenruppert.com/the-art-of-static-code-analysis/</guid><description>&lt;h2 id="the-necessity-for-static-analysis-of-source-code-"&gt;The Necessity for Static Analysis of Source Code …&lt;/h2&gt;
&lt;p&gt;Most Java (and not only) developers have used at minimum some sort of a static analysis tools to perform a task such as (to name a few):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;deriving source code metrics such as line of code or &lt;a href="https://en.wikipedia.org/wiki/Cyclomatic_complexity"&gt;cyclomatic complexity&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;discovering bugs, vulnerabilities or code smells such as unused variables (what popular IDEs typically do);&lt;/li&gt;
&lt;li&gt;performing automated refactoring or code completion;&lt;/li&gt;
&lt;li&gt;enforcing code and quality standards.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To perform static code analysis we typically need a proper representation of source code, suitable for analysis. A programming language can be described by a formal grammar. Furthermore a parser can be created or generated following the rules of a formal grammar to create proper representation (typically a parse tree) from source code. Based on the type of language we want to represent we can use different types of formal grammars:&lt;/p&gt;</description></item><item><title>Thinking differently about testing</title><link>https://javapro-en.svenruppert.com/thinking-differently-about-testing/</link><pubDate>Mon, 27 Jan 2025 16:35:56 +0000</pubDate><guid>https://javapro-en.svenruppert.com/thinking-differently-about-testing/</guid><description>&lt;p&gt;10x Insights to help take a different view of quality assurance&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve given a few talks about 10x developers, or rather 10x professionals and been involved in process (re)engineering for many teams and projects. However much you learn about people and their roles - there&amp;rsquo;s always something new to discover. In fact, it&amp;rsquo;s amazing how often your worldview is blinkered, how often there&amp;rsquo;s a different way to do or think about some aspect of your life or career.&lt;/p&gt;</description></item><item><title>1BRC with AI - curious and curiouser said the LLM</title><link>https://javapro-en.svenruppert.com/maximize-productivity-with-ai-tools-in-java-development/</link><pubDate>Wed, 15 Jan 2025 11:48:56 +0000</pubDate><guid>https://javapro-en.svenruppert.com/maximize-productivity-with-ai-tools-in-java-development/</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;Did you try turning it off and on first?&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;em&gt;(I promise this is the last 1BRC-related post). Read on to discover how large language models (LLMs) performed in generating Java code, their strengths in context-aware development, and challenges such as hallucinations and nuanced errors. Learn what makes a good AI dev tool and what makes a great IDE integration.&lt;/em&gt;&lt;/p&gt;
&lt;hr&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;/div&gt;
&lt;/blockquote&gt;&lt;p&gt;A definition of insanity is repeating an action and expecting a different outcome.  As developers, we’re used to doing that :-)  It’s part of our operating manual. &lt;/p&gt;</description></item><item><title>My Top 10 Principles for getting the best from AI (for developers)</title><link>https://javapro-en.svenruppert.com/my-top-10-principles-for-getting-the-best-from-ai-for-developers/</link><pubDate>Mon, 02 Dec 2024 11:56:54 +0000</pubDate><guid>https://javapro-en.svenruppert.com/my-top-10-principles-for-getting-the-best-from-ai-for-developers/</guid><description>&lt;p&gt;&lt;em&gt;AI tools for developers: principles, insights, and the importance of clean code.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Every day, I encounter a new AI tool, whether a new capability is added to an existing tool or an entirely new offering. I actively use several AI tools, including ChatGPT, Grammarly, and Amazon Q Developer, each serving different purposes. I pay for pro access to ChatGPT and Grammarly, though I sometimes consider switching to Claude.ai, which occasionally proves invaluable. s a view of AI tools for developers: my principles, insights and ultimately the realisation that development practises such as clean code is more essential than ever&lt;/p&gt;</description></item><item><title>1 Billion RECORD CHallenge - AI Style</title><link>https://javapro-en.svenruppert.com/1-billion-record-challenge-ai-style/</link><pubDate>Thu, 07 Nov 2024 10:05:34 +0000</pubDate><guid>https://javapro-en.svenruppert.com/1-billion-record-challenge-ai-style/</guid><description>&lt;p&gt;&lt;strong&gt;Previously …&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I recently &lt;a href="https://javapro.io/2024/10/17/are-ai-coding-tools-worth-it-part-1/"&gt;wrote&lt;/a&gt; about my experiences with getting AI coding tools to find bugs and write tests.  I picked five different tools. The selection criteria were simple - free or trial with no credit card needed.  I chose three tools designed to help developers and two general-purpose LLMs.  &lt;/p&gt;
&lt;p&gt;I gave them a 1000-line Java program and asked them to do three things.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add Javadoc to explain what the code did&lt;/li&gt;
&lt;li&gt;Analyse the code for bugs and design weaknesses&lt;/li&gt;
&lt;li&gt;Create Junit testcases that would provide reasonable code coverage.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The results were disappointing but, in hindsight, predictable.  Overall, the tools were better at creating documentation than finding bugs and, apart from one, were pretty poor at writing test cases.  &lt;/p&gt;</description></item><item><title>Are AI Coding tools worth it - RESULTS</title><link>https://javapro-en.svenruppert.com/are-ai-coding-tools-worth-it-results/</link><pubDate>Wed, 30 Oct 2024 12:32:45 +0000</pubDate><guid>https://javapro-en.svenruppert.com/are-ai-coding-tools-worth-it-results/</guid><description>&lt;h5 id="background"&gt;Background&lt;/h5&gt;
&lt;p&gt;In &lt;a href="https://javapro.io/2024/10/17/are-ai-coding-tools-worth-it-part-1/"&gt;Part 1&lt;/a&gt;&lt;a href="https://javapro.io/2024/10/17/are-ai-coding-tools-worth-it-part-1/"&gt;,&lt;/a&gt; I examined the value of AI tools for developers, especially those that help them create or understand code. The tools selected are all free to use and a mix of general-purpose ones and those that declare they are specifically for coding purposes.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://javapro.io/2024/10/23/are-ai-coding-tools-worth-it-part-2/"&gt;Part 2&lt;/a&gt;, I examined these tools&amp;rsquo; ability to find bugs and weaknesses. The results were spotty and not particularly useful or time-saving.&lt;/p&gt;
&lt;p&gt;In this part, we&amp;rsquo;ll look at the results from asking these tools to create JUnit tests for the code and decide who wins (and why).&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>Are AI coding tools worth it? - part 1</title><link>https://javapro-en.svenruppert.com/are-ai-coding-tools-worth-it-part-1/</link><pubDate>Thu, 17 Oct 2024 10:00:00 +0000</pubDate><guid>https://javapro-en.svenruppert.com/are-ai-coding-tools-worth-it-part-1/</guid><description>&lt;p&gt;This is the start of a few posts about AI coding tools. This one sets the scene and gives a taste of what I found. In later posts I&amp;rsquo;ll show more of what I got from using them &lt;em&gt;as is.&lt;/em&gt; , explore what the sweet spots might be and end with a harder look at getting value out of them. If you want to skip to the end go &lt;a href="https://javapro.io/2024/11/07/1-billion-record-challenge-ai-style/"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="a-long-time-ago-in-a-company-far-far-away"&gt;&lt;strong&gt;A long time ago, in a company far, far away…&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt; In the very early 90&amp;rsquo;s I had the, well, honour is not quite the word I want, the experience may be, to use a prototype of one of the first viable commercial speech-to-text and speech-to-control tools.  I used it at work; I used it at home. It was a disaster in all ways.  In the first go-around, the training for learning your voice was arduous, literally painful, and demanding. In the second prototype, it would often pick up the sound of the hard disk on the computer and interpret it as text, to much hilarity for all. &lt;/p&gt;</description></item></channel></rss>