<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Maven on foojay.io - Friends Of OpenJDK</title><link>https://foojay.io/today/category/maven/</link><description>Recent content in Maven on foojay.io - Friends Of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 08 Aug 2026 11:43:51 +0000</lastBuildDate><atom:link href="https://foojay.io/today/category/maven/index.xml" rel="self" type="application/rss+xml"/><item><title>This Dependency Update Looked Exactly Like an Account Takeover</title><link>https://foojay.io/today/this-dependency-update-looked-exactly-like-an-account-takeover/</link><pubDate>Fri, 03 Jul 2026 08:31:27 +0000</pubDate><guid>https://foojay.io/today/this-dependency-update-looked-exactly-like-an-account-takeover/</guid><description>&lt;p&gt;I pointed a scanner I have been building at an old Spring project, and it flagged javax.activation. The bump was 1.1-rev-1 to 1.1.1. Prior releases carried a GPG signature. This one did not.&#10;&lt;img src="https://foojay.io/today/this-dependency-update-looked-exactly-like-an-account-takeover/pr-comment-682x510.png" alt="git hub diff comment on PR" width="682" height="510" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;If you have read the post-mortems of real supply-chain attacks, that pattern should make you sit up. A package that has signed its releases for years suddenly ships one unsigned. The boring explanation is a build pipeline change. The other explanation is that a different person is publishing now, and the signing key stayed behind with the old one. When ua-parser-js was hijacked in 2021, the malicious versions came from a compromised account. When event-stream went bad in 2018, it was a new maintainer nobody had vetted. The artifact looks fine. The metadata around it is what changed.&lt;/p&gt;</description></item><item><title>You’re invited to IntelliJ IDEA Conf 2026!</title><link>https://foojay.io/today/youre-invited-to-intellij-idea-conf-2026/</link><pubDate>Mon, 29 Jun 2026 18:35:08 +0000</pubDate><guid>https://foojay.io/today/youre-invited-to-intellij-idea-conf-2026/</guid><description>&lt;p&gt;&lt;strong&gt;We are excited to invite you to IntelliJ IDEA Conf 2026, a free virtual event on September 8-9, 2026.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;IntelliJ IDEA Conf is a celebration of the developer community, bringing together professionals who strive for excellence in software development. Join us for this free, live online conference and learn from industry leaders and experts on September 8-9, 2026.&lt;/p&gt;&#10;&lt;p&gt;You&amp;rsquo;ll be able to learn about a broad range of topics relevant to modern Java and Kotlin development, including language evolution, enterprise Java, Spring-based applications, build tooling, containerized workflows, JVM performance, and data access technologies. For more details, see the agenda below.&lt;/p&gt;</description></item><item><title>Jurassic JDK: Migrate or Extinct</title><link>https://foojay.io/today/jurassic-jdk-migrate-or-extinct/</link><pubDate>Fri, 26 Jun 2026 07:28:00 +0000</pubDate><guid>https://foojay.io/today/jurassic-jdk-migrate-or-extinct/</guid><description>&lt;p&gt;&lt;img src="https://foojay.io/today/jurassic-jdk-migrate-or-extinct/1_wul-KqE6vXk4ynnh_IljSQ-1-1024x562.webp" alt="" width="1024" height="562" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;65 million years ago, dinosaurs didn&amp;rsquo;t adapt. They&amp;rsquo;re gone. Your JDK 7 app is giving the same energy. 🫠&lt;/p&gt;&#10;&lt;p&gt;I spent a year and a half migrating more than 15 projects in production. Full time. Real teams, real deadlines, real 2am breakage. This is everything I wish someone had written before I started.&lt;/p&gt;&#10;&lt;h2 id="why-are-we-still-here-"&gt;Why Are We Still Here? 👀&lt;/h2&gt;&#10;&lt;p&gt;Walk into any company with a codebase older than 5 years and you&amp;rsquo;ll hear the same thing:&lt;/p&gt;</description></item><item><title>Enterprise Java quality gates in the age of AI</title><link>https://foojay.io/today/enterprise-java-quality-gates-ai/</link><pubDate>Fri, 29 May 2026 07:00:00 +0000</pubDate><guid>https://foojay.io/today/enterprise-java-quality-gates-ai/</guid><description>&lt;figure class="size-medium"&gt;&#10; &lt;img src="https://foojay.io/today/enterprise-java-quality-gates-ai/ChatGPT-Image-May-26-2026-04_44_09-PM-700x394.jpg" alt="Illustration of human developers and an AI assistant writing code together, with the code passing through an enterprise quality gate before reaching a trusted repository." width="100%" loading="lazy" class="is-zoomable"&gt;&lt;/figure&gt;&#10;&#10;&lt;p&gt;People and AI can write code together, but enterprise repositories still need deterministic quality gates to protect code quality.&lt;/p&gt;&#10;&lt;h2 id="enterprise-quality-is-a-scaling-problem"&gt;Enterprise quality is a scaling problem&lt;/h2&gt;&#10;&lt;p&gt;Enterprise Java development is not only about writing correct code. It is about keeping a large, long-lived codebase understandable, reviewable and safe to change while many people and many tools touch it over time.&lt;/p&gt;</description></item><item><title>Explore Spring AI SDK – Amazon Bedrock AgentCore – Part 2</title><link>https://foojay.io/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/</link><pubDate>Mon, 27 Apr 2026 09:09:00 +0000</pubDate><guid>https://foojay.io/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/</guid><description>&lt;p&gt;&lt;em&gt;If you&amp;rsquo;re joining us from &lt;a href="https://foojay.io/today/spring-ai-amazon-bedrock-sdk-guide/"&gt;Part 1&lt;/a&gt; or need a quick refresher on the architecture, listen to this brief overview of how Spring AI and Amazon Bedrock work together.&lt;/em&gt;&#10;&lt;em&gt;Generated using Notebook LLM for my previous &lt;a href="https://foojay.io/today/spring-ai-amazon-bedrock-sdk-guide/"&gt;article&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;In this article, we explore one of the AgentCore capabilities i.e., &lt;em&gt;&lt;strong&gt;memory&lt;/strong&gt;&lt;/em&gt;&#10;&lt;img src="https://foojay.io/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/ac_overviewchart_04_07-7f591d25.png" alt="" width="1600" height="329" loading="lazy" decoding="async"&gt; &lt;em&gt;&lt;strong&gt;Source: Amazon&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;To begin, enable &lt;strong&gt;AgentCore memory&lt;/strong&gt; for the agent you built earlier.&lt;br&gt;&#10;&lt;img src="https://foojay.io/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/SpringAISDK.jpg" alt="SpringAI SDK" width="1024" height="576" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;h3 id="step-1-add-the-ai-model-and-agentcore-memory-dependencies"&gt;Step 1: Add the Ai model and AgentCore memory dependencies&lt;/h3&gt;&#10;&lt;pre class="EnlighterJSRAW" data-enlighter-language="xml"&gt;&amp;lt;dependency&amp;gt;&#10; &amp;lt;groupId&amp;gt;org.springframework.ai&amp;lt;/groupId&amp;gt;&#10; &amp;lt;artifactId&amp;gt;spring-ai-model&amp;lt;/artifactId&amp;gt;&#10;&amp;lt;/dependency&amp;gt;&#10;&amp;lt;dependency&amp;gt;&#10; &amp;lt;groupId&amp;gt;org.springaicommunity&amp;lt;/groupId&amp;gt;&#10; &amp;lt;artifactId&amp;gt;spring-ai-agentcore-memory&amp;lt;/artifactId&amp;gt;&#10;&amp;lt;/dependency&amp;gt;&lt;/pre&gt;&lt;h3 id="step-2-create-shortlong-term-in-aws-management-console"&gt;Step 2: Create Short/Long Term in AWS Management Console&lt;/h3&gt;&#10;&lt;p&gt;&lt;em&gt;Navigate to &lt;strong&gt;Amazon Bedrock AgentCore &amp;gt; Memory&lt;/strong&gt; to create short/long-term memories.&lt;/em&gt;&#10;&lt;img src="https://foojay.io/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/AgentCoreMemory-1024x441.jpg" alt="AgentCore Memory" width="1024" height="441" loading="lazy" decoding="async"&gt; AgentCore Memory&lt;/p&gt;</description></item><item><title>Optimizing Java for the Cloud-Native Era with Quarkus</title><link>https://foojay.io/today/optimizing-java-for-the-cloud-native-era-with-quarkus/</link><pubDate>Tue, 06 Jan 2026 21:09:00 +0000</pubDate><guid>https://foojay.io/today/optimizing-java-for-the-cloud-native-era-with-quarkus/</guid><description>&lt;p&gt;This article explores how Quarkus can help organizations reduce costs, streamline development, and modernize their Java applications for today&amp;rsquo;s cloud-native environments. It outlines the real-world benefits of adopting Quarkus and highlights how its core features address the performance and scalability challenges commonly associated with traditional Java frameworks.&lt;/p&gt;&#10;&lt;p&gt;Quarkus is already being adopted across industries. One example is Orange, a global telecom provider that selected Quarkus to support its 5G API initiative, and benefited from fast startup times, a lightweight footprint, and seamless integration with Kubernetes.&lt;/p&gt;</description></item><item><title>Getting Started with TornadoVM 2.0 for Accelerating Java Applications</title><link>https://foojay.io/today/getting-started-with-tornadovm-2-0/</link><pubDate>Mon, 22 Dec 2025 10:00:00 +0000</pubDate><guid>https://foojay.io/today/getting-started-with-tornadovm-2-0/</guid><description>&lt;p&gt;Starting with &lt;strong&gt;TornadoVM 2.0&lt;/strong&gt; , installing and using TornadoVM is easier than ever. The project now provides prebuilt SDKs for multiple operating systems, architectures, and accelerator backends, and is also available via &lt;strong&gt;Maven Central&lt;/strong&gt; for seamless integration with existing Java codebases.&lt;/p&gt;&#10;&lt;p&gt;This guide walks you through:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Installing the TornadoVM SDK&lt;/li&gt;&#10;&lt;li&gt;Verifying your setup&lt;/li&gt;&#10;&lt;li&gt;Integrating TornadoVM into Java projects using Maven&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;&#10;&lt;p&gt;Before installing TornadoVM, ensure that your system has the following:&lt;/p&gt;</description></item><item><title>How to Release a Java Module to Maven Central with JReleaser and GitHub Actions (2025 Guide)</title><link>https://foojay.io/today/how-to-publish-a-java-maven-project-to-maven-central-using-jreleaser-and-github-actions-2025-guide/</link><pubDate>Fri, 12 Dec 2025 07:42:00 +0000</pubDate><guid>https://foojay.io/today/how-to-publish-a-java-maven-project-to-maven-central-using-jreleaser-and-github-actions-2025-guide/</guid><description>&lt;p&gt;This article is a tutorial that guides you through the process of releasing a Java module with &lt;a href="https://jreleaser.org/" target="_blank" rel="noopener noreferrer"&gt;JReleaser&lt;/a&gt; to Maven Central with Github Actions. It is a 2025 update of the &lt;a href="https://foojay.io/today/how-to-release-a-java-module-with-jreleaser-to-maven-central-with-github-actions/"&gt;foojay.io/today/how-to-release-a-java-module-with-jreleaser-to-maven-central-with-github-actions&lt;/a&gt; article.&lt;/p&gt;&#10;&lt;p&gt;JReleaser is a tool that streamlines the release process for Java projects, allowing developers to quickly and efficiently publish their modules to Maven Central.&lt;/p&gt;&#10;&lt;p&gt;This article will use the &lt;a href="https://github.com/jagodevreede/semver-check/" title="SemVer Check project" target="_blank" rel="noopener noreferrer"&gt;SemVer Check project&lt;/a&gt; as an example project that uses Maven as a build tool.&lt;/p&gt;</description></item><item><title>Foojay Podcast #81: Maven 4 - The Future of Java Build Automation</title><link>https://foojay.io/today/foojay-podcast-81/</link><pubDate>Mon, 03 Nov 2025 06:03:12 +0000</pubDate><guid>https://foojay.io/today/foojay-podcast-81/</guid><description>&lt;p&gt;&lt;strong&gt;Maven 4 is approaching its release, bringing many improvements to the build tool powering millions of Java projects.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;In this Foojay Podcast episode, we talk about Apache Maven 4, a significant milestone that has been years in the making. Maven has been the backbone of Java dependency management and build automation since the early 2000s; however, the road to version 4 has been a long and deliberate one. With significant performance improvements, a modernized API for plugin developers, and changes that affect how we think about project structure, Maven 4 represents both an evolution and a revolution. What does this mean for the millions of developers who depend on Maven daily? How should teams prepare for the transition? And what&amp;rsquo;s the story behind the Maven Central Repository changes that have been making headlines? To answer these questions and more, we&amp;rsquo;re joined by a few of the many contributors who are actually building Maven 4 and stewarding its ecosystem.&lt;/p&gt;</description></item><item><title>Payara Server Maven Plugin + AI Agent</title><link>https://foojay.io/today/boost-developer-productivity-with-payara-server-maven-plugin-ai-agent/</link><pubDate>Tue, 30 Sep 2025 08:43:20 +0000</pubDate><guid>https://foojay.io/today/boost-developer-productivity-with-payara-server-maven-plugin-ai-agent/</guid><description>&lt;h2 id="managing-payara-server-just-got-smarter"&gt;Managing Payara Server Just Got Smarter&lt;/h2&gt;&#10;&lt;p&gt;Imagine managing your Jakarta EE applications not just with Maven goals, but by asking natural questions.&lt;/p&gt;&#10;&lt;p&gt;With the &lt;a href="http:/https://docs.payara.fish/community/docs/6.2025.5/Technical%20Documentation/Ecosystem/Project%20Management%20Tools/Maven%20Plugin/Payara%20Server%20Maven%20Plugin.html#ai-agent/" title="experimental AI Agent"&gt;experimental AI Agent&lt;/a&gt; built into the Payara Server Community&amp;rsquo;s Maven Plugin, you can now query server internals and perform admin tasks using plain English — directly from the same terminal where you build and deploy your applications.&lt;/p&gt;&#10;&lt;p&gt;Thanks to this integration, developers can inspect, query and even execute server commands using natural language. It&amp;rsquo;s a powerful and intuitive way to interact with Payara Server — no need to remember long command syntax or dig through documentation.&lt;/p&gt;</description></item><item><title>How to Kickstart Your Jakarta EE 11 Projects with Payara Starter</title><link>https://foojay.io/today/how-to-kickstart-your-jakarta-ee-11-projects-with-payara-starter/</link><pubDate>Tue, 23 Sep 2025 10:26:53 +0000</pubDate><guid>https://foojay.io/today/how-to-kickstart-your-jakarta-ee-11-projects-with-payara-starter/</guid><description>&lt;p&gt;&lt;strong&gt;Jakarta EE 11 is here, bringing powerful new capabilities for enterprise Java developers. But getting started quickly can be a challenge - that&amp;rsquo;s where the latest Payara Starter comes in. With full Jakarta EE 11 support, an updated ERD-based code generator, and a new Jakarta Faces project generator, it gives you everything you need to launch your next application with ease.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;With Jakarta EE 11 now &lt;a href="https://blog.payara.fish/jakarta-ee-11-is-here-and-its-ready-for-the-cloud" title="officially released" target="_blank" rel="noopener noreferrer"&gt;officially released&lt;/a&gt;, you are likely eager to explore its new capabilities but setting up your first application may take longer than you want. That&amp;rsquo;s where the latest version of Payara Starter steps in, giving you a fast, hassle-free way to get a fully functional Jakarta EE 11 project up and running. Read more to learn how!&lt;/p&gt;</description></item><item><title>Preparing for Spring Boot 4 and Spring Framework 7: What’s New?</title><link>https://foojay.io/today/preparing-for-spring-framework-7-and-spring-boot-4/</link><pubDate>Mon, 11 Aug 2025 14:42:40 +0000</pubDate><guid>https://foojay.io/today/preparing-for-spring-framework-7-and-spring-boot-4/</guid><description>&lt;p&gt;&lt;strong&gt;I&amp;rsquo;m a passionate Spring Framework and Spring Boot enthusiast, and I always look forward to exploring and experimenting with the latest features and improvements they introduce. With Spring Boot 4 and Spring Boot Framework 7 right around the corner, now&amp;rsquo;s the perfect time to dive into the key enhancements that will shape the future of modern Java and enterprise application development.&lt;/strong&gt;&#10;&lt;img src="https://foojay.io/today/preparing-for-spring-framework-7-and-spring-boot-4/SpringImage.jpg" alt="Spring Boot 4" width="1024" height="576" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;In this blog post, we will discuss some key features enhanced as part of Spring Framework 7 and Spring Boot 4.&lt;/p&gt;</description></item><item><title>Improving Maven's dependency:analyze... or not</title><link>https://foojay.io/today/improving-mavens-dependencyanalyze-or-not/</link><pubDate>Mon, 28 Apr 2025 08:28:32 +0000</pubDate><guid>https://foojay.io/today/improving-mavens-dependencyanalyze-or-not/</guid><description>&lt;p&gt;Recently, my good friend Richard Fichtner advised using the &lt;code&gt;mvn dependency:analyze&lt;/code&gt; command to get rid of declared but unused dependencies:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;There is another use case for&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;mvn dependency:analyze&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;It can show you the dependencies you use in your code but have not declared in your pom.xml. This works because you have a transitive dependency on your classpath. Either don&amp;rsquo;t use the dependency or declare it.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://bsky.app/profile/did:plc:cc2k5egfzqpf3nbjrs5xox4r/post/3lcxfnsc2h62m?ref_src=embed" target="_blank" rel="noopener noreferrer"&gt;&lt;img src="https://foojay.io/today/improving-mavens-dependencyanalyze-or-not/bafkreibztkdlkhrkyydfdntdkktrdw7qqr4t54m-0653ea62.jpg" alt="" width="1000" height="707" loading="lazy" decoding="async"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;— &lt;a href="https://bsky.app/profile/did:plc:cc2k5egfzqpf3nbjrs5xox4r?ref_src=embed" target="_blank" rel="noopener noreferrer"&gt;Richard Fichtner 💻☕ @richard.fichtner.dev&lt;/a&gt;&lt;br&gt;&#10;&lt;a href="https://bsky.app/profile/did:plc:cc2k5egfzqpf3nbjrs5xox4r/post/3lcxfnsc2h62m?ref_src=embed" target="_blank" rel="noopener noreferrer"&gt;December 10, 2024 at 2:00 PM&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Spring Boot: Java Template Engine (JTE)</title><link>https://foojay.io/today/spring-boot-java-template-engine-jte/</link><pubDate>Wed, 13 Nov 2024 09:03:00 +0000</pubDate><guid>https://foojay.io/today/spring-boot-java-template-engine-jte/</guid><description>&lt;h3 id="hello-to-all-java-and-spring-enthusiasts-i-am-the-java-template-engine-a-fresh-newcomer-to-the-spring-initializer-ecosystem"&gt;Hello to all Java and Spring enthusiasts. I am the Java Template Engine, a fresh newcomer to the Spring Initializer Ecosystem.&lt;/h3&gt;&#10;&lt;p&gt;I have gained popularity as a template engine for developing user interface applications that use Java syntax within Spring Boot applications, alongside other engines such as Freemarker, Thymeleaf, Mustache, and Velocity. Many developers widely use Spring Boot, a framework that simplifies Java application development, and incorporating a template engine like mine streamlines the process of creating dynamic and responsive user interfaces.&lt;/p&gt;</description></item><item><title>Get recognized for your cloud-native Java development skills</title><link>https://foojay.io/today/get-recognized-for-your-cloud-native-java-development-skills-with-this-new-badge/</link><pubDate>Thu, 29 Aug 2024 16:08:34 +0000</pubDate><guid>https://foojay.io/today/get-recognized-for-your-cloud-native-java-development-skills-with-this-new-badge/</guid><description>&lt;p&gt;&lt;strong&gt;In a world where in-demand skills are critical for job success, security, and progression, it&amp;rsquo;s vital that we, as developers, ensure we are showcasing our skills to the wider world. This can include qualifications, courses, and badges, all of which help us to advertise our skills and highlight our professional experiences and expertise.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;So, to help make this easier (and free!) for Java developers, the Open Liberty team created the first-ever Liberty badge: &lt;a href="https://ibm.biz/FooJayLibertyDeveloperEssentialsBadge" title="Liberty Developer Essentials" target="_blank" rel="noopener noreferrer"&gt;Liberty Developer Essentials&lt;/a&gt;!&lt;/p&gt;</description></item><item><title>Foojay Podcast #50: JCON Report, Part 2 - Maven, Software Security, Code Quality</title><link>https://foojay.io/today/foojay-podcast-50/</link><pubDate>Mon, 27 May 2024 08:07:54 +0000</pubDate><guid>https://foojay.io/today/foojay-podcast-50/</guid><description>&lt;p&gt;This is part 2 of the interviews we recorded at the JCON conference earlier this month in Germany. In this episode, you get two main topics: &lt;strong&gt;Maven and Code Quality&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;In the first part, you&amp;rsquo;ll hear Karl Heinz Marbaise and Steve Poole discuss the Maven project, the repository, Sonaytype, and the security impact of dependencies.&lt;/p&gt;&#10;&lt;p&gt;But next to security, we developers are also responsible for creating readable and maintainable code. Miro Wengner, Marit van Dijk, and Hinse ter Schuur dive into this topic, in the second part!&lt;/p&gt;</description></item><item><title>IntelliJ IDEA and Open Liberty - Effective Java app development</title><link>https://foojay.io/today/effective-cloud-native-java-app-development-with-open-liberty-in-intellij-idea/</link><pubDate>Fri, 12 Apr 2024 13:36:25 +0000</pubDate><guid>https://foojay.io/today/effective-cloud-native-java-app-development-with-open-liberty-in-intellij-idea/</guid><description>&lt;p&gt;&lt;strong&gt;See how you can use Liberty Tools for IntelliJ IDEA to enable rapid, easy, and efficient development of cloud-native Java applications with Open Liberty and WebSphere Liberty&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;When it comes to integrated development environments, within the Java community, IntelliJ IDEA is the most popular IDE amongst professional developers. It is the preferred IDE of choice by two-fifths of developers, making up the biggest majority of IDE users in this community, according to JRebel&amp;rsquo;s &lt;a href="https://www.jrebel.com/resources/java-developer-productivity-report-2023" target="_blank" rel="noopener noreferrer"&gt;2023 Java Developer Productivity Report&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Migrate to Spring Boot 3.2 with OpenRewrite</title><link>https://foojay.io/today/openrewrite-migrate-to-spring-boot-3-2/</link><pubDate>Tue, 06 Feb 2024 08:17:07 +0000</pubDate><guid>https://foojay.io/today/openrewrite-migrate-to-spring-boot-3-2/</guid><description>&lt;p&gt;&lt;strong&gt;As a developer, we frequently face the challenges of migrating to newer versions of frameworks and refactoring code. However, we can effortlessly achieve these tasks with the assistance of &lt;a href="https://docs.openrewrite.org/" target="_blank" rel="noopener noreferrer"&gt;OpenRewrite&lt;/a&gt;. OpenRewrite provides a stack of recipes specifically designed for migration purposes. By utilizing the appropriate recipes and integrating with the rewrite plugin, we can effectively migrate our code.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Two months ago, the Spring Boot 3.2 version released, bringing numerous changes to the framework. If you are involved in multiple projects and require migrating to the latest version, developers may find manually updating all the code repositories with the necessary upgrade changes a challenging task.&lt;/p&gt;</description></item><item><title>(Semantic) Versioning your Java libraries</title><link>https://foojay.io/today/semantic-versioning-your-java-libraries/</link><pubDate>Wed, 03 Jan 2024 15:10:35 +0000</pubDate><guid>https://foojay.io/today/semantic-versioning-your-java-libraries/</guid><description>&lt;p&gt;&lt;strong&gt;There are a lot of ways to version your library but the &lt;a href="https://semver.org/lang/nl/" target="_blank" rel="noopener noreferrer"&gt;semantic versioning scheme&lt;/a&gt; is the most used and for a good reason, by looking at the version change you can already defer if you can upgrade the dependency without any problems or if you might have to do some refactoring. Semantic versioning proposes a simple set of rules and requirements that dictate how version numbers are assigned and incremented.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>C2 Might Be Slowing Down Your Builds</title><link>https://foojay.io/today/c2-might-be-slowing-down-your-builds/</link><pubDate>Thu, 28 Sep 2023 09:55:13 +0000</pubDate><guid>https://foojay.io/today/c2-might-be-slowing-down-your-builds/</guid><description>&lt;p&gt;&lt;strong&gt;At the JavaForumNord two weeks ago, I had a friendly chat with Karl Heinz Marbaise (Chairman of the Apache Maven Project), where he mentioned that he wanted to start profiling Maven. This sounded interesting, so I started looking into the performance and bottlenecks of Maven. I began by using the Maven build of &lt;a href="https://github.com/apache/maven" target="_blank" rel="noopener noreferrer"&gt;maven&lt;/a&gt; itself as a starting point (excluding the tests). The following is my first observation related to Maven builds in CIs.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>My Final Take on Gradle (vs. Maven)</title><link>https://foojay.io/today/my-final-take-on-gradle-vs-maven/</link><pubDate>Tue, 15 Aug 2023 08:37:24 +0000</pubDate><guid>https://foojay.io/today/my-final-take-on-gradle-vs-maven/</guid><description>&lt;p&gt;&lt;strong&gt;I tweet technical content that I consider interesting, but the funny tweets are the ones that get the most engagement.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;I attended the JavaLand conference in March, stumbled upon the Gradle booth, and found this gem:&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://twitter.com/nicolas_frankel/status/1638549568957861889" target="_blank" rel="noopener noreferrer"&gt;&lt;img src="https://foojay.io/today/my-final-take-on-gradle-vs-maven/Screenshot-2023-08-05-at-10.03.59-754x1024.jpg" alt="" width="754" height="1024" loading="lazy" decoding="async"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Of course, at some point, a fanboy hijacked the thread and claimed the so-called superiority of Gradle. In this post, I&amp;rsquo;d like to shed some light on my stance, so I can direct people to it instead of debunking the same &amp;ldquo;reasoning&amp;rdquo; repeatedly.&lt;/p&gt;</description></item><item><title>Build Rot: The Hidden Technical Debt in Maven and Gradle Builds</title><link>https://foojay.io/today/build-rot-tech-debt/</link><pubDate>Fri, 21 Jul 2023 08:14:01 +0000</pubDate><guid>https://foojay.io/today/build-rot-tech-debt/</guid><description>&lt;p&gt;&lt;strong&gt;Discover &amp;lsquo;Build Rot&amp;rsquo;, the hidden technical debt in Maven and Gradle builds. This article explores the impact of Build Rot on build speed and test times, offering strategies for enhanced observability and Developer Productivity Engineering to optimize build processes.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Technical debt is a constant companion in the complex world of software development. It&amp;rsquo;s the price we pay for quick fixes and postponed refactoring—the &amp;ldquo;we&amp;rsquo;ll do it right next time&amp;rdquo; mentality.&lt;/p&gt;</description></item><item><title>Foojay Podcast #26: The Future of Source Control and CI/CD</title><link>https://foojay.io/today/foojay-podcast-26/</link><pubDate>Mon, 26 Jun 2023 08:35:21 +0000</pubDate><guid>https://foojay.io/today/foojay-podcast-26/</guid><description>&lt;p&gt;As developers, we like to automate the boring parts of our job. This automation includes the source control system, build pipelines, and code analysis tools.&lt;/p&gt;&#10;&lt;p&gt;In recent decades, we have seen evolutions from CVS to Subversion to Git. Is this the endpoint? Did we find the holy grail in version control? Or what evolutions are waiting for us?&lt;/p&gt;&#10;&lt;p&gt;Let&amp;rsquo;s find out together with these fantastic guests…&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;This is the final episode of season 2 of the Foojay Podcast. See you in September for the start of our new season with more JUGs, the launch of Java 21, and much more!&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Rolling Binary Trees: A Guide to Common Design Patterns in Java</title><link>https://foojay.io/today/rolling-binary-trees-a-guide-to-common-design-patterns-in-java/</link><pubDate>Wed, 24 May 2023 12:55:14 +0000</pubDate><guid>https://foojay.io/today/rolling-binary-trees-a-guide-to-common-design-patterns-in-java/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;Binary trees are fundamental data structures, ubiquitous in computer science and software engineering. We use them to represent hierarchical data and implement more complex data structures, such as search trees, syntax trees, cryptographic hash trees, space partitioning trees, heaps, and so on. Common binary tree operations include insertion, deletion, traversal, and rotation.&lt;/p&gt;&#10;&lt;p&gt;A relatively uncommon and unexplored operation is &lt;strong&gt;roll&lt;/strong&gt; , which modifies the structure of a binary tree in such a way that, when visualized, the newly obtained structure appears to be rolled at a 90-degree angle, either clockwise or counterclockwise. This gives us two variants of the roll operation — &lt;strong&gt;clockwise roll&lt;/strong&gt; (CR) and &lt;strong&gt;counterclockwise roll&lt;/strong&gt; (CCR).&lt;/p&gt;</description></item><item><title>Analyzing dependencies in IntelliJ IDEA</title><link>https://foojay.io/today/analyzing-dependencies-in-intellij-idea/</link><pubDate>Thu, 11 May 2023 09:33:40 +0000</pubDate><guid>https://foojay.io/today/analyzing-dependencies-in-intellij-idea/</guid><description>&lt;p&gt;If you&amp;rsquo;re working on a real world project, you&amp;rsquo;re probably using external dependencies.&lt;/p&gt;&#10;&lt;p&gt;You might need to analyze which dependencies your application uses.&lt;/p&gt;&#10;&lt;p&gt;For example, you may want to find out how a particular version of a dependency ended up in your application.&lt;/p&gt;&#10;&lt;p&gt;Let&amp;rsquo;s take a look at how IntelliJ IDEA can help you to analyze dependencies.&lt;/p&gt;&#10;&lt;h2 id="using-the-dependency-analyzer"&gt;Using the Dependency Analyzer&lt;/h2&gt;&#10;&lt;p&gt;We can view our dependencies in the Maven or Gradle tool window.&lt;/p&gt;</description></item><item><title>Foojay Podcast #19: Working Free For Fun Brings Fame &amp; Fortune</title><link>https://foojay.io/today/foojay-podcast-19/</link><pubDate>Mon, 17 Apr 2023 12:35:51 +0000</pubDate><guid>https://foojay.io/today/foojay-podcast-19/</guid><description>&lt;p&gt;Many developers spend a lot of their time on side projects. It&amp;rsquo;s an opportunity to learn new techniques and get involved in communities.&lt;/p&gt;&#10;&lt;p&gt;But sometimes it can also lead to a new job.&lt;/p&gt;&#10;&lt;p&gt;Or even starting a business based on such a project.&lt;/p&gt;&#10;&lt;p&gt;Today we are talking to people who achieved such a transition and became famous and rich, or at least some of each…&lt;/p&gt;&#10;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/FDOFRTj1UVI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;h2 id="podcast-apps"&gt;Podcast Apps&lt;/h2&gt;&#10;&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Predicting Secure Java Projects on Maven Central</title><link>https://foojay.io/today/predicting-secure-java-projects-on-maven-central/</link><pubDate>Thu, 23 Mar 2023 14:10:02 +0000</pubDate><guid>https://foojay.io/today/predicting-secure-java-projects-on-maven-central/</guid><description>&lt;p&gt;If you&amp;rsquo;ve searched for &lt;a href="http://central.sonatype.com" title="Maven Central components" target="_blank" rel="noopener noreferrer"&gt;Maven Central components&lt;/a&gt; in the last six months, you may have noticed some pretty big changes to the website, including a UI facelift and some new component analysis tools like &lt;a href="https://bomdoctor.sonatype.com/#/home" title="BOM Doctor" target="_blank" rel="noopener noreferrer"&gt;BOM Doctor&lt;/a&gt; and the Sonatype Safety Rating.&lt;/p&gt;&#10;&lt;p&gt;It&amp;rsquo;s no coincidence that many of these changes are security related. Maven Central, along with public code repositories, are the first line of defense when it comes to supply chain security.&lt;/p&gt;</description></item><item><title>How to Find &amp; Fix Vulnerabilities with IntelliJ IDEA Ultimate</title><link>https://foojay.io/today/package-checker-find-fix-vulnerabilities-with-intellij-idea-ultimate/</link><pubDate>Mon, 13 Feb 2023 09:09:39 +0000</pubDate><guid>https://foojay.io/today/package-checker-find-fix-vulnerabilities-with-intellij-idea-ultimate/</guid><description>&lt;p&gt;In this article, we&amp;rsquo;re going to take a look at the &lt;a href="https://plugins.jetbrains.com/plugin/18337-package-checker" target="_blank" rel="noopener noreferrer"&gt;Package Checker plugin&lt;/a&gt;, that&amp;rsquo;s bundled with &lt;a href="https://www.jetbrains.com/idea/" target="_blank" rel="noopener noreferrer"&gt;IntelliJ IDEA Ultimate&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;We&amp;rsquo;ll have a look at how to view known vulnerabilities in your Maven or Gradle projects, how to get more information about the known vulnerabilities in a specific dependency and how to remediate these vulnerabilities inside IntelliJ IDEA Ultimate if a new version with a fix is available.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://foojay.io/today/package-checker-find-fix-vulnerabilities-with-intellij-idea-ultimate/plugin.png" title="Package Checker plugin"&gt;&lt;img src="https://foojay.io/today/package-checker-find-fix-vulnerabilities-with-intellij-idea-ultimate/plugin.png" alt="Package Checker plugin" title="Package Checker plugin" width="1600" height="1160" loading="lazy" decoding="async"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Release with JReleaser to Maven Central with GitHub Actions</title><link>https://foojay.io/today/how-to-release-a-java-module-with-jreleaser-to-maven-central-with-github-actions/</link><pubDate>Wed, 18 Jan 2023 08:55:48 +0000</pubDate><guid>https://foojay.io/today/how-to-release-a-java-module-with-jreleaser-to-maven-central-with-github-actions/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;This guide is outdated since 2024. There is a new version here: &lt;a href="https://foojay.io/today/how-to-publish-a-java-maven-project-to-maven-central-using-jreleaser-and-github-actions-2025-guide/"&gt;https://foojay.io/today/how-to-publish-a-java-maven-project-to-maven-central-using-jreleaser-and-github-actions-2025-guide/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;This article is a tutorial that guides you through the process of releasing a Java module with &lt;a href="https://jreleaser.org/" target="_blank" rel="noopener noreferrer"&gt;JReleaser&lt;/a&gt; to Maven Central with Github Actions.&lt;/p&gt;&#10;&lt;p&gt;JReleaser is a tool that streamlines the release process for Java projects, allowing developers to quickly and efficiently publish their modules to Maven Central.&lt;/p&gt;&#10;&lt;p&gt;If you just want to publish your Maven project by hand, then you can follow &lt;a href="https://foojay.io/today/how-to-publish-a-java-maven-project-to-the-maven-central-repository/" title="How to Publish a Java Maven Project to the Maven Central Repository"&gt;How to Publish a Java Maven Project to the Maven Central Repository&lt;/a&gt; by @&lt;a href="https://foojay.io/today/author/tobias-briones/" title="Tobias Briones"&gt;Tobias Briones&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Managing Dependencies in IntelliJ IDEA</title><link>https://foojay.io/today/managing-dependencies-in-intellij-idea/</link><pubDate>Tue, 10 Jan 2023 15:13:39 +0000</pubDate><guid>https://foojay.io/today/managing-dependencies-in-intellij-idea/</guid><description>&lt;p&gt;In this tutorial, following on from &lt;a href="https://foojay.io/today/viewing-dependencies-in-intellij-idea/"&gt;viewing dependencies&lt;/a&gt;, we&amp;rsquo;re going to take a look at managing dependencies in IntelliJ IDEA.&lt;/p&gt;&#10;&lt;p&gt;We&amp;rsquo;ll look at different ways to add dependencies to your project, and how to add, upgrade and remove dependencies using Package Search.&lt;/p&gt;&#10;&lt;h2 id="add-dependencies"&gt;Add dependencies&lt;/h2&gt;&#10;&lt;p&gt;There are several ways to add new dependencies to your project.&lt;/p&gt;&#10;&lt;h2 id="from-the-build-file-using-copy-paste"&gt;From the build file using copy-paste&lt;/h2&gt;&#10;&lt;p&gt;You have probably copied a dependency from &lt;a href="https://mvnrepository.com/" target="_blank" rel="noopener noreferrer"&gt;Maven Repository&lt;/a&gt; (or another website) and pasted into your build file.&lt;/p&gt;</description></item></channel></rss>