<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>DevOps on JAVAPRO International</title><link>https://javapro-en.svenruppert.com/categories/devops/</link><description>Recent content in DevOps on JAVAPRO International</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Tue, 07 Jul 2026 07:07:12 +0000</lastBuildDate><atom:link href="https://javapro-en.svenruppert.com/categories/devops/index.xml" rel="self" type="application/rss+xml"/><item><title>From ‘Class Not Found’ to Calm: Practical Shading and Shadowing for Java Apps</title><link>https://javapro-en.svenruppert.com/from-class-not-found-to-calm-practical-shading-and-shadowing-for-java-apps/</link><pubDate>Tue, 07 Jul 2026 07:07:12 +0000</pubDate><guid>https://javapro-en.svenruppert.com/from-class-not-found-to-calm-practical-shading-and-shadowing-for-java-apps/</guid><description>&lt;p&gt;Your pipeline is green, the app is deployed, and everything looks fine… until production says &amp;ldquo;nope&amp;rdquo;. A request fails and the logs show &lt;code&gt;ClassNotFoundException&lt;/code&gt;, or worse, &lt;code&gt;NoSuchMethodError&lt;/code&gt;. These are among the most confusing runtime errors because the code compiled successfully, but the JVM is acting differently than you would expect.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s dive in and explore how the class loader works, what class shadowing is (when one class silently wins over another on the classpath) and what class shading is (when you deliberately relocate packages so multiple versions can coexist). We&amp;rsquo;ll also see how these two concepts can help solve mysterious production issues and make your app more stable and secure.&lt;/p&gt;</description></item><item><title>Automating JVM Thread Dump Analysis with AI: Practical Observability for Java on Amazon ECS and EKS</title><link>https://javapro-en.svenruppert.com/automating-jvm-thread-dump-analysis-with-ai-practical-observability-for-java-on-amazon-ecs-and-eks/</link><pubDate>Thu, 11 Jun 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/automating-jvm-thread-dump-analysis-with-ai-practical-observability-for-java-on-amazon-ecs-and-eks/</guid><description>&lt;p&gt;Imagine the following scenario: a Java service that ran flawlessly yesterday suddenly starts consuming 90% CPU, barely responding to user requests. Users encounter timeouts, and the operations team is under immediate pressure to triage the incident. In these situations — whether the application appears stuck or CPU saturation has occurred — one of the most powerful diagnostic assets available is the thread dump. A thread dump captures the state of all JVM threads at a specific point in time, showing execution states, stack traces, and lock contention — the raw material needed to understand what the runtime is &lt;em&gt;actually doing&lt;/em&gt;.&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>A Big Screen Experience for Java Developers &amp; Architects</title><link>https://javapro-en.svenruppert.com/a-big-screen-experience-for-java-developers-architects/</link><pubDate>Wed, 08 Apr 2026 12:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/a-big-screen-experience-for-java-developers-architects/</guid><description>&lt;p&gt;&lt;strong&gt;JCON EUROPE 2026 | April 20–23, 2026 | Cinedom Cologne&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Anyone talking about modern software development today can hardly avoid Java. Few technologies have shaped the enterprise world as sustainably, and few communities are as vibrant, diverse, and innovation-driven. This is exactly where JCON comes in: as a meeting point, a platform, and an experiential space for developers from all over the world. With participants from more than 70 countries, JCON has long since become an international gathering. &lt;strong&gt;Openness, knowledge sharing&lt;/strong&gt;, and a &lt;strong&gt;strong sense of community&lt;/strong&gt; remain at its core.&lt;/p&gt;</description></item><item><title>Java Performance Optimization with Agentic AI: Autonomous Diagnostics and Actionable Recommendations</title><link>https://javapro-en.svenruppert.com/java-performance-optimization-with-agentic-ai-autonomous-diagnostics-and-actionable-recommendations/</link><pubDate>Tue, 07 Apr 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/java-performance-optimization-with-agentic-ai-autonomous-diagnostics-and-actionable-recommendations/</guid><description>&lt;p&gt;&lt;a href="https://schedule.jcon.one/2026/session/1050952"&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2026/03/2026-Magazin-Artikel-Banner-1024x213.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Java performance diagnosis in production is manual, slow, and requires deep expertise. You get a Grafana alert, grab a thread dump, download a JFR recording, open it in JDK Mission Control, stare at flamegraphs, correlate with metrics — hours of work per incident. Most teams don&amp;rsquo;t have a dedicated performance engineer, so alerts get ignored or result in generic &amp;ldquo;add more replicas&amp;rdquo; responses.&lt;/p&gt;
&lt;p&gt;We built a system that does this autonomously. When a monitoring alert fires, it collects profiling data and thread dumps, extracts runtime metrics, generates flamegraphs, and sends everything to an AI model that produces a structured performance report — including root cause analysis and concrete code fixes with file paths and line numbers from the actual source repository. The pipeline runs on Kubernetes, triggered by Grafana webhooks, with results stored in Amazon S3.&lt;/p&gt;</description></item><item><title>Semantic Versioning done automatically</title><link>https://javapro-en.svenruppert.com/semantic-versioning-done-automatically/</link><pubDate>Thu, 26 Mar 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/semantic-versioning-done-automatically/</guid><description>&lt;p&gt;Software evolves over time. Bugs are fixed, features are added, and occasionally design mistakes are corrected in ways that are incompatible with earlier releases. Version numbers exist to identify these distinct states of a software artifact and to allow consumers to reason about whether an upgrade is safe. Without versioning, it is impossible to distinguish between two builds of the same library or to express expectations about their compatibility.&lt;/p&gt;
&lt;h2 id="semantic-versioning"&gt;Semantic Versioning&lt;/h2&gt;
&lt;p&gt;Software versions come in many forms, ranging from simple incrementing numbers to schemes based on release dates. One of the most widely adopted approaches is Semantic Versioning, commonly abbreviated as SemVer. SemVer defines a structured MAJOR.MINOR.PATCH version format with explicit rules about how version numbers must change in response to different kinds of software changes.&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>10 Docker Commandos: Docker Commands to Hunt the Predator</title><link>https://javapro-en.svenruppert.com/10-docker-commandos-docker-commands-to-hunt-the-predator/</link><pubDate>Thu, 19 Mar 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/10-docker-commandos-docker-commands-to-hunt-the-predator/</guid><description>&lt;p&gt;Whose day is it on Tuesday?&lt;/p&gt;
&lt;p&gt;I mean, Wednesday is Odin&amp;rsquo;s day, Thursday is Thor&amp;rsquo;s day, and Friday is Frigg&amp;rsquo;s day, or Freya&amp;rsquo;s, depending on who you ask. But what about Tuesday? Who is the god of Tuesday?&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2026/02/day.png" alt="Odin = Wednesday Thor = Thursday Frigg = Friday" loading="lazy" decoding="async"&gt;
 
 &lt;figcaption&gt;Odin = Wednesday Thor = Thursday Frigg = Friday&lt;/figcaption&gt;
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s Týr, the god of war and justice. In Norse mythology, Týr is known for his bravery and sacrifice, as he lost his hand to the monstrous wolf Fenrir.&lt;/p&gt;</description></item><item><title>The Myth of Stability: Java's Software Supply Chain After Log4Shell</title><link>https://javapro-en.svenruppert.com/the-myth-of-stability-javas-software-supply-chain-after-log4shell/</link><pubDate>Thu, 08 Jan 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/the-myth-of-stability-javas-software-supply-chain-after-log4shell/</guid><description>&lt;p&gt;For as long as most Java developers can remember, we’ve lived inside a comforting story about our ecosystem. It’s the idea that Maven Central, the Jakarta stack, the Spring universe, the vast Apache landscape, and all the independent libraries quietly carrying enterprise workloads together form a coherent, self-maintaining, self-healing whole. &lt;/p&gt;
&lt;p&gt;A world where problems are fixed upstream, where maintainers have time, where the dependencies we pull down are being actively watched by someone who knows exactly what they’re doing. It’s a lovely idea. It’s also never been completely real.&lt;/p&gt;</description></item><item><title>Code. Collaboration. Community.</title><link>https://javapro-en.svenruppert.com/code-collaboration-community/</link><pubDate>Wed, 24 Dec 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/code-collaboration-community/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;JCON USA @ IBM TechXchange 2025 – where the spirit of Java found a new home in Orlando.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;When the JCON team announced they were bringing their renowned Java conference series across the Atlantic, expectations were high. Known for its lively spirit and deep technical content, JCON Europe has become a must-attend event for Java developers. Its first U.S. edition – &lt;strong&gt;JCON USA @ IBM TechXchange 2025&lt;/strong&gt; – not only met those expectations but exceeded them, uniting Java professionals from around the world under one roof in Orlando.&lt;/p&gt;</description></item><item><title>Debugging IN THE Dark</title><link>https://javapro-en.svenruppert.com/debugging-in-the-dark/</link><pubDate>Wed, 26 Nov 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/debugging-in-the-dark/</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;some bugs scream, while others whisper. but the worst ones hide in the shadows. they slip past logs, contradict facts or exist only in our own assumptions. this is not about breakpoints or stack traces. it is about what happens when we have few or no clue. debugging in the dark is when data fails you, and what remains is your reasoning, curiosity and the gut.&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/07/image-34-1024x683.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;At the lowest levels of computing where raw bits meet the metal, failures are loud and exact: For example a &lt;code&gt;SIGSEGV&lt;/code&gt; means memory was not allocated. Similarly a &lt;code&gt;SIGILL&lt;/code&gt; means a bad instruction. The path to resolution is straight, trivial and methodical.&lt;/p&gt;</description></item><item><title>Put events in the driver seat to manage your Java anywhere</title><link>https://javapro-en.svenruppert.com/put-events-in-the-driver-seat-to-manage-your-java-anywhere/</link><pubDate>Wed, 08 Oct 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/put-events-in-the-driver-seat-to-manage-your-java-anywhere/</guid><description>&lt;p&gt;Managing a multi-datacenter VM based or an Edge server executing Java applications is not a simple task and can become even more challenging as the complexity of the hosted app grows. If a pristine installation runs without a hitch, after a while, recurring problems appear and what is called nowadays “Day One” operations take the front seat. Obviously, those are the struggles facing any modern IT infrastructure, and while the target could not be more clear and defined (a functional system with zero or minimum downtime), yet the crucible, how to achieve it, may not be evident. &lt;/p&gt;</description></item><item><title>Improving Platform Observability with Distributed Tracing and OpenTelemetry</title><link>https://javapro-en.svenruppert.com/improving-platform-observability-with-distributed-tracing-and-opentelemetry/</link><pubDate>Mon, 22 Sep 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/improving-platform-observability-with-distributed-tracing-and-opentelemetry/</guid><description>&lt;p&gt;Observability has become crucial for modern applications. Distributed tracing, in particular, is essential for diagnosing issues within complex transactions. OpenTelemetry has emerged as the indispensable standard in this field. This article explores the fundamentals of distributed tracing, its implementation, and its impacts.&lt;/p&gt;
&lt;p&gt;In a context where applications are increasingly complex, it is crucial to be able to observe each transaction in detail to quickly identify problems and ensure continuous evolution of the platform. Among the three main pillars of observability—logs, metrics, and traces—traces are often less known but equally essential.&lt;/p&gt;</description></item><item><title>How to Speed up Maven Builds</title><link>https://javapro-en.svenruppert.com/how-to-speed-up-maven-builds/</link><pubDate>Tue, 26 Aug 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/how-to-speed-up-maven-builds/</guid><description>&lt;p&gt;As a Maven project grows in size, the question of build speed and test execution time becomes more important. One of the most obvious ways to optimize is to switch to another build system (e.g., Gradle). However, before making the switch (which will inevitably bring new challenges—we’ll discuss this at the end), let’s first explore what we can do to speed things up while staying on Maven. Many of these tips will be useful regardless, even if you eventually decide to migrate.&lt;/p&gt;</description></item><item><title>Should we stop discussing about technical debt... with top management?</title><link>https://javapro-en.svenruppert.com/should-we-stop-discussing-about-technical-debt-with-top-management/</link><pubDate>Wed, 18 Jun 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/should-we-stop-discussing-about-technical-debt-with-top-management/</guid><description>&lt;p&gt;Cyclomatic complexity, coupling and cohesion, orthogonality, big O… are concepts that technical teams use when analyzing complex software systems and can establish why it is difficult to change them. Technical language refers to the technical aspects of those systems. But when we have to explain to non-technical people in the organization why an application has bugs, why a feature is not on time, or why we need a database expert to make a simple change to a service, we cannot use those concepts. To do that, we have to speak in a language that those non-technical people understand the intrinsic nature that exists in systems developed with software.&lt;/p&gt;</description></item><item><title>Speed Up Existing Deployments with the Right JVM Features</title><link>https://javapro-en.svenruppert.com/speed-up-existing-deployments-with-the-right-jvm-features/</link><pubDate>Thu, 17 Apr 2025 09:33:21 +0000</pubDate><guid>https://javapro-en.svenruppert.com/speed-up-existing-deployments-with-the-right-jvm-features/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=6628huqjF9s&amp;amp;list=PLFeSAZzYdUodZjQy6a3pCBl43UUem8_E3&amp;amp;index=14"&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/04/Magazin-Artikel-Banner-2-1024x214.jpg" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In today&amp;rsquo;s tech landscape, Java applications face a critical challenge. Organizations need to meet growing performance demands while keeping infrastructure costs under control, without costly redevelopment efforts.&lt;/p&gt;
&lt;p&gt;This challenge has intensified with cloud computing adoption. Every millisecond of latency and every megabyte of memory now directly impacts ongoing expenses. The numbers are striking: based on my experience, poorly configured JVMs typically can increase cloud costs by 30-50%. For large enterprises, this represents millions in avoidable expenses.&lt;/p&gt;</description></item><item><title>Move Fast, Break Laws: AI, Open Source and Devs (Part 4)</title><link>https://javapro-en.svenruppert.com/move-fast-break-laws-ai-open-source-and-devs-part-4/</link><pubDate>Thu, 10 Apr 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/move-fast-break-laws-ai-open-source-and-devs-part-4/</guid><description>&lt;p&gt;The software development landscape is rapidly changing, with legislation emerging as a key driver of industry trends. As our reliance on software and AI grows, so does our vulnerability to cybercrime, which is now a multi-trillion-dollar problem. This has caught the attention of regulators worldwide. &lt;/p&gt;
&lt;p&gt;This article explains the various regulatory efforts in play and summarises actions that developers and executives should consider as they get to grips with 2025 - the year of software legislation&lt;/p&gt;</description></item><item><title>Move Fast, Break Laws: AI, Open Source and Devs (Part 3)</title><link>https://javapro-en.svenruppert.com/move-fast-break-laws-ai-open-source-and-devs-part-3/</link><pubDate>Tue, 08 Apr 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/move-fast-break-laws-ai-open-source-and-devs-part-3/</guid><description>&lt;h4 id="background"&gt;Background&lt;/h4&gt;
&lt;p&gt;The software development landscape is rapidly changing, with legislation emerging as a key driver of industry trends. As our reliance on software and AI grows, so does our vulnerability to cybercrime, which is now a multi-trillion-dollar problem. This has caught the attention of regulators worldwide. &lt;/p&gt;
&lt;p&gt;&lt;a href="https://javapro.io/2025/04/01/move-fast-break-laws-ai-open-source-and-devs-part-1/"&gt;Part 1&lt;/a&gt; covered the background, what a software supply chain is and thoughts on AI and open source.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://javapro.io/2025/04/03/move-fast-break-laws-ai-open-source-and-devs-part-2/"&gt;Part 2&lt;/a&gt; explored how governments are working to create legislation and what the current status is.&lt;/p&gt;</description></item><item><title>The quick check for your software - the Software Coma Scale (SCS)</title><link>https://javapro-en.svenruppert.com/the-quick-check-for-your-software-the-software-coma-scale-scs/</link><pubDate>Mon, 07 Apr 2025 11:22:49 +0000</pubDate><guid>https://javapro-en.svenruppert.com/the-quick-check-for-your-software-the-software-coma-scale-scs/</guid><description>&lt;p&gt;Do you know this situation: You have are sitting on your desk when your boss asks you to “just have a look at an old software-system” at its current status? Since he doesn&amp;rsquo;t know much about your job (IT), you have to use a system that&lt;/p&gt;
&lt;p&gt;a) he understands and&lt;/p&gt;
&lt;p&gt;b) allows you to make an informed assessment relatively quickly.&lt;/p&gt;
&lt;p&gt;Or a customer asks whether you could change this or that thing in a system you don&amp;rsquo;t know - or even take over the maintenance for it. And just like your boss, he is not an IT specialist!&lt;/p&gt;</description></item><item><title>Move Fast, Break Laws: AI, Open Source and Devs (Part 2)</title><link>https://javapro-en.svenruppert.com/move-fast-break-laws-ai-open-source-and-devs-part-2/</link><pubDate>Thu, 03 Apr 2025 09:56:07 +0000</pubDate><guid>https://javapro-en.svenruppert.com/move-fast-break-laws-ai-open-source-and-devs-part-2/</guid><description>&lt;p&gt;The software development landscape is rapidly changing, with legislation emerging as a key driver of industry trends. As our reliance on software and AI grows, so does our vulnerability to cybercrime, which is now a multi-trillion-dollar problem. This has caught the attention of regulators worldwide. &lt;/p&gt;
&lt;p&gt;This article explains the various regulatory efforts in play and summarises actions that developers and executives should consider as they get to grips with 2025 - the year of software legislation&lt;/p&gt;</description></item><item><title>Move Fast, Break Laws: AI, Open Source and Devs (Part 1)</title><link>https://javapro-en.svenruppert.com/move-fast-break-laws-ai-open-source-and-devs-part-1/</link><pubDate>Tue, 01 Apr 2025 11:34:21 +0000</pubDate><guid>https://javapro-en.svenruppert.com/move-fast-break-laws-ai-open-source-and-devs-part-1/</guid><description>&lt;p&gt;The software development landscape is rapidly changing, with legislation emerging as a key driver of industry trends. As our reliance on software and AI grows, so does our vulnerability to cybercrime, which is now a multi-trillion-dollar problem. This has caught the attention of regulators worldwide. &lt;/p&gt;
&lt;p&gt;This article series explains the various regulatory efforts in play and summarises actions that developers and executives should consider as they prepare for 2025, the year of software legislation.&lt;/p&gt;</description></item><item><title>Engineering Metrics: Measuring What Matters</title><link>https://javapro-en.svenruppert.com/engineering-metrics-measuring-what-matters/</link><pubDate>Wed, 18 Dec 2024 17:11:24 +0000</pubDate><guid>https://javapro-en.svenruppert.com/engineering-metrics-measuring-what-matters/</guid><description>In an age of data-driven engineering, metrics can serve as a powerful compass—if chosen wisely. This article takes a closer look at popular frameworks like DORA, SPACE, DevEx, and DX Core4, dissecting their strengths and limitations.</description></item><item><title>The AI Mona Lisa Challenge: Precision and Security Adjustments for Your CI/CD Pipeline</title><link>https://javapro-en.svenruppert.com/the-ai-mona-lisa-challenge-precision-and-security-adjustments-for-your-ci-cd-pipeline/</link><pubDate>Thu, 21 Nov 2024 12:22:47 +0000</pubDate><guid>https://javapro-en.svenruppert.com/the-ai-mona-lisa-challenge-precision-and-security-adjustments-for-your-ci-cd-pipeline/</guid><description>&lt;p&gt;&lt;em&gt;&amp;ldquo;Mona Lisa, Mona Lisa, men have named you; you&amp;rsquo;re so like the lady with the mystic smile.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Last time, I finished a &lt;a href="https://javapro.io/2024/10/17/are-ai-coding-tools-worth-it-part-1/"&gt;set of articles&lt;/a&gt; about using AI coding tools.  In the end, my conclusion was that the tools can help greatly but that right now,  using them to generate whole programs was pushing the envelope.  As helpers, as pseudo-pair-programmers,  the tools can offer great value and make you more productive.  However, it’s essential to understand that this process works because of the interaction between humans and AI.  Without the steering and a continuous mix of rejection and acceptance,  the AI can’t learn how to respond correctly.  &lt;/p&gt;</description></item><item><title>Discovering the perfect Java Supply Chain Attack vector and how it got fixed</title><link>https://javapro-en.svenruppert.com/discovering-the-perfect-java-supply-chain-attack-vector-and-how-it-got-fixed/</link><pubDate>Tue, 19 Nov 2024 12:00:00 +0000</pubDate><guid>https://javapro-en.svenruppert.com/discovering-the-perfect-java-supply-chain-attack-vector-and-how-it-got-fixed/</guid><description>&lt;p&gt;You may have heard about the &lt;a href="https://www.oracle.com/java/technologies/javase/23-relnote-issues.html#JDK-8321314"&gt;changes to annotation processing that have been done in Java 23&lt;/a&gt;. This post will cover the underlying topic, how I learned about it, and how it got fixed.&lt;/p&gt;
&lt;h4 id="background"&gt;Background&lt;/h4&gt;
&lt;p&gt;To understand annotation processing and why it is even there, we first need to hop into our DeLorean and go back to the year &lt;del&gt;1955&lt;/del&gt; 2005. So back then there were no build tools like Maven or Gradle, which we have nowadays. Java was still developed by Sun Microsystems and the newest version was 5. Java annotations were introduced with Java 5 but an API for processing them at build-time did not exist, so &lt;a href="https://www.jcp.org/en/jsr/detail?id=269"&gt;JSR 269&lt;/a&gt; was born. The general idea seems to have been to allow the generation of (boilerplate) code and similar operations. Examples that use the concept nowadays are probably &lt;a href="https://projectlombok.org/"&gt;Lombok&lt;/a&gt; or &lt;a href="https://github.com/google/dagger"&gt;Dagger&lt;/a&gt; (for the Android world) but these are usually run with dedicated plugins. I found &lt;a href="https://www.youtube.com/watch?v=0hN6XJ69xn4"&gt;an old video of a presentation&lt;/a&gt; about this topic - you may want to check it out for additional background information. JSR 269 was ultimately implemented and shipped in 2006 with Java 6. Most details of it were likely ignored over the years as better build tools such as Maven or Gradle gradually gained popularity.&lt;/p&gt;</description></item><item><title>Developer Relations as Terraforming: Cultivating Ecosystems for Success</title><link>https://javapro-en.svenruppert.com/developer-relations-as-terraforming-cultivating-ecosystems-for-success/</link><pubDate>Thu, 26 Sep 2024 11:55:28 +0000</pubDate><guid>https://javapro-en.svenruppert.com/developer-relations-as-terraforming-cultivating-ecosystems-for-success/</guid><description>&lt;p&gt;As a “DevRel” person, I’m disappointed in how often our efforts are misunderstood and marginalised. In this article, I want to take another slant on the what and why of “DevRel.”&lt;/p&gt;
&lt;p&gt;Developer Relations (DevRel) holds the same transformative potential as terraforming in science fiction. It&amp;rsquo;s cheesy, but it’s pretty accurate. Much like engineers striving to turn a hostile, barren planet into one that can sustain life, DevRel teams are tasked with creating an atmosphere where developers can thrive. Success in both cases isn’t immediate; it requires patience, deliberate planning, and constant care to cultivate a living ecosystem.&lt;/p&gt;</description></item><item><title>the Wild Frontier of Technology adoption</title><link>https://javapro-en.svenruppert.com/the-wild-frontier-of-technology-adoption/</link><pubDate>Tue, 13 Aug 2024 09:55:32 +0000</pubDate><guid>https://javapro-en.svenruppert.com/the-wild-frontier-of-technology-adoption/</guid><description>&lt;p&gt;Being out of work and looking for new opportunities means interviews. A common thread that comes up is arm waving. &amp;ldquo;There are 25 million developers out there, we want you to make them use our product/api/service&amp;rdquo;. Coupled with this idea is the expectation that if only they could get the offering in front of a developer if only that developer would try it, then all would be well and money would pour in.&lt;/p&gt;</description></item></channel></rss>