<?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://foojayio.github.io/website/today/category/maven/</link><description>Recent content in Maven on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 03 Jul 2026 08:31:27 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/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://foojayio.github.io/website/today/this-dependency-update-looked-exactly-like-an-account-takeover/</link><pubDate>Fri, 03 Jul 2026 08:31:27 +0000</pubDate><guid>https://foojayio.github.io/website/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.
&lt;img src="https://foojayio.github.io/website/today/this-dependency-update-looked-exactly-like-an-account-takeover/pr-comment-682x510.png" alt="git hub diff comment on PR" loading="lazy"&gt;
&lt;/p&gt;
&lt;br /&gt;
&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://foojayio.github.io/website/today/youre-invited-to-intellij-idea-conf-2026/</link><pubDate>Mon, 29 Jun 2026 18:35:08 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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;
&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://foojayio.github.io/website/today/jurassic-jdk-migrate-or-extinct/</link><pubDate>Fri, 26 Jun 2026 07:28:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/jurassic-jdk-migrate-or-extinct/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/jurassic-jdk-migrate-or-extinct/1_wul-KqE6vXk4ynnh_IljSQ-1-1024x562.webp" alt="" loading="lazy"&gt;
&lt;/p&gt;
&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;
&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;
&lt;h2 id="h2-0-why-are-we-still-here"&gt;Why Are We Still Here? 👀&lt;/h2&gt;
&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://foojayio.github.io/website/today/enterprise-java-quality-gates-ai/</link><pubDate>Fri, 29 May 2026 07:00:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/enterprise-java-quality-gates-ai/</guid><description>&lt;img decoding="async" class="size-medium wp-image-123963" src="ChatGPT-Image-May-26-2026-04_44_09-PM-700x394.png" 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%"&gt;
&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;
&lt;br /&gt;
&lt;h2 id="h2-0-enterprise-quality-is-a-scaling-problem"&gt;Enterprise quality is a scaling problem&lt;/h2&gt;
&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://foojayio.github.io/website/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/</link><pubDate>Mon, 27 Apr 2026 09:09:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/</guid><description>&lt;br /&gt;
&lt;p&gt;&lt;em&gt;If you&amp;rsquo;re joining us from &lt;a href="https://foojayio.github.io/website/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;
&lt;em&gt;Generated using Notebook LLM for my previous &lt;a href="https://foojayio.github.io/website/today/spring-ai-amazon-bedrock-sdk-guide/"&gt;article&lt;/a&gt;
{#https://foojay.io/today/spring-ai-amazon-bedrock-sdk-guide/}&lt;/em&gt;&lt;/p&gt;
&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;
&lt;img src="https://a.b.cdn.console.awsstatic.com/a/v1/ACHOUHHJ3XZF7J5AYP2XIR2NCZIPH56WAM33AFJA44HJSRMAO4DA/assets/images/Overview/ac_overviewchart_04_07.png" alt="" loading="lazy"&gt;
 &lt;em&gt;&lt;strong&gt;Source: Amazon&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To begin, enable &lt;strong&gt;AgentCore memory&lt;/strong&gt; for the agent you built earlier.&lt;br&gt;
&lt;img src="https://foojayio.github.io/website/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/SpringAISDK.png" alt="SpringAI SDK" loading="lazy"&gt;
&lt;/p&gt;
&lt;h3 id="h3-0-step-1-add-the-ai-model-and-agentcore-memory-dependencies"&gt;Step 1: Add the Ai model and AgentCore memory dependencies&lt;/h3&gt;
&lt;br /&gt;
&lt;pre class="EnlighterJSRAW" data-enlighter-language="xml" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""&gt;&amp;lt;dependency&amp;gt;
 &amp;lt;groupId&amp;gt;org.springframework.ai&amp;lt;/groupId&amp;gt;
 &amp;lt;artifactId&amp;gt;spring-ai-model&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;dependency&amp;gt;
 &amp;lt;groupId&amp;gt;org.springaicommunity&amp;lt;/groupId&amp;gt;
 &amp;lt;artifactId&amp;gt;spring-ai-agentcore-memory&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;&lt;/pre&gt;
&lt;h3 id="h3-1-step-2-create-short-long-term-in-aws-management-console"&gt;Step 2: Create Short/Long Term in AWS Management Console&lt;/h3&gt;
&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;
&lt;img src="https://foojayio.github.io/website/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/AgentCoreMemory-1024x441.png" alt="AgentCore Memory" loading="lazy"&gt;
 AgentCore Memory&lt;/p&gt;</description></item><item><title>Optimizing Java for the Cloud-Native Era with Quarkus</title><link>https://foojayio.github.io/website/today/optimizing-java-for-the-cloud-native-era-with-quarkus/</link><pubDate>Tue, 06 Jan 2026 21:09:00 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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://foojayio.github.io/website/today/getting-started-with-tornadovm-2-0/</link><pubDate>Mon, 22 Dec 2025 10:00:00 +0000</pubDate><guid>https://foojayio.github.io/website/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.{#viewer-bsvyh182}&lt;/p&gt;
&lt;p&gt;This guide walks you through:{#viewer-aq221189}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Installing the TornadoVM SDK&lt;/li&gt;
&lt;li&gt;Verifying your setup&lt;/li&gt;
&lt;li&gt;Integrating TornadoVM into Java projects using Maven&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="viewer-f868f305-69f0-46b4-bbc6-baaa3d02051b"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;Before installing TornadoVM, ensure that your system has the following:{#viewer-k00hu10420}&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://foojayio.github.io/website/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://foojayio.github.io/website/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://foojayio.github.io/website/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;
&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;
&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://foojayio.github.io/website/today/foojay-podcast-81/</link><pubDate>Mon, 03 Nov 2025 06:03:12 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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://foojayio.github.io/website/today/boost-developer-productivity-with-payara-server-maven-plugin-ai-agent/</link><pubDate>Tue, 30 Sep 2025 08:43:20 +0000</pubDate><guid>https://foojayio.github.io/website/today/boost-developer-productivity-with-payara-server-maven-plugin-ai-agent/</guid><description>&lt;h2 id="h2-0-managing-payara-server-just-got-smarter"&gt;Managing Payara Server Just Got Smarter&lt;/h2&gt;
&lt;p&gt;Imagine managing your Jakarta EE applications not just with Maven goals, but by asking natural questions.&lt;/p&gt;
&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 &amp;mdash; directly from the same terminal where you build and deploy your applications.&lt;/p&gt;
&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 &amp;mdash; 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://foojayio.github.io/website/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://foojayio.github.io/website/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;
&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://foojayio.github.io/website/today/preparing-for-spring-framework-7-and-spring-boot-4/</link><pubDate>Mon, 11 Aug 2025 14:42:40 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&lt;img src="https://foojayio.github.io/website/today/preparing-for-spring-framework-7-and-spring-boot-4/SpringImage.jpg" alt="Spring Boot 4" loading="lazy"&gt;
&lt;/p&gt;
&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://foojayio.github.io/website/today/improving-mavens-dependencyanalyze-or-not/</link><pubDate>Mon, 28 Apr 2025 08:28:32 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&lt;blockquote&gt;
&lt;p&gt;There is another use case for&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mvn dependency:analyze&lt;/code&gt;&lt;/p&gt;
&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;
&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://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:cc2k5egfzqpf3nbjrs5xox4r/bafkreibztkdlkhrkyydfdntdkktrdw7qqr4t54mbwoazf6rkulcawhqkj4@jpeg" alt="" loading="lazy"&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&amp;mdash; &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;
&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://foojayio.github.io/website/today/spring-boot-java-template-engine-jte/</link><pubDate>Wed, 13 Nov 2024 09:03:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-boot-java-template-engine-jte/</guid><description>&lt;h3 id="h3-0-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;
&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://foojayio.github.io/website/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://foojayio.github.io/website/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;
&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://foojayio.github.io/website/today/foojay-podcast-50/</link><pubDate>Mon, 27 May 2024 08:07:54 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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;
&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://foojayio.github.io/website/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://foojayio.github.io/website/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;
&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://foojayio.github.io/website/today/openrewrite-migrate-to-spring-boot-3-2/</link><pubDate>Tue, 06 Feb 2024 08:17:07 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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://foojayio.github.io/website/today/semantic-versioning-your-java-libraries/</link><pubDate>Wed, 03 Jan 2024 15:10:35 +0000</pubDate><guid>https://foojayio.github.io/website/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://foojayio.github.io/website/today/c2-might-be-slowing-down-your-builds/</link><pubDate>Thu, 28 Sep 2023 09:55:13 +0000</pubDate><guid>https://foojayio.github.io/website/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://foojayio.github.io/website/today/my-final-take-on-gradle-vs-maven/</link><pubDate>Tue, 15 Aug 2023 08:37:24 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&lt;p&gt;I attended the JavaLand conference in March, stumbled upon the Gradle booth, and found this gem:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/nicolas_frankel/status/1638549568957861889" target="_blank" rel="noopener noreferrer"&gt;&lt;img src="https://foojayio.github.io/website/today/my-final-take-on-gradle-vs-maven/Screenshot-2023-08-05-at-10.03.59-754x1024.png" alt="" loading="lazy"&gt;
&lt;/a&gt;
&lt;/p&gt;
&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://foojayio.github.io/website/today/build-rot-tech-debt/</link><pubDate>Fri, 21 Jul 2023 08:14:01 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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&amp;mdash;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://foojayio.github.io/website/today/foojay-podcast-26/</link><pubDate>Mon, 26 Jun 2023 08:35:21 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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;
&lt;p&gt;Let&amp;rsquo;s find out together with these fantastic guests&amp;hellip;&lt;/p&gt;
&lt;blockquote&gt;
&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://foojayio.github.io/website/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://foojayio.github.io/website/today/rolling-binary-trees-a-guide-to-common-design-patterns-in-java/</guid><description>&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&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;
&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 &amp;mdash; &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://foojayio.github.io/website/today/analyzing-dependencies-in-intellij-idea/</link><pubDate>Thu, 11 May 2023 09:33:40 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&lt;p&gt;You might need to analyze which dependencies your application uses.&lt;/p&gt;
&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;
&lt;p&gt;Let&amp;rsquo;s take a look at how IntelliJ IDEA can help you to analyze dependencies.&lt;/p&gt;
&lt;p&gt;We can view our dependencies in the Maven or Gradle tool window.&lt;/p&gt;
&lt;p&gt;Here, we can expand dependencies to show their transitive dependencies, or collapse them again.&lt;/p&gt;</description></item><item><title>Foojay Podcast #19: Working Free For Fun Brings Fame &amp; Fortune</title><link>https://foojayio.github.io/website/today/foojay-podcast-19/</link><pubDate>Mon, 17 Apr 2023 12:35:51 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&lt;p&gt;But sometimes it can also lead to a new job.&lt;/p&gt;
&lt;p&gt;Or even starting a business based on such a project.&lt;/p&gt;
&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&amp;hellip;&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&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;
		&lt;/div&gt;

&lt;h2 id="h2-1--odcast-pps"&gt;Podcast Apps&lt;/h2&gt;
&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://foojayio.github.io/website/today/predicting-secure-java-projects-on-maven-central/</link><pubDate>Thu, 23 Mar 2023 14:10:02 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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://foojayio.github.io/website/today/package-checker-find-fix-vulnerabilities-with-intellij-idea-ultimate/</link><pubDate>Mon, 13 Feb 2023 09:09:39 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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;
&lt;p&gt;&lt;a href="https://foojayio.github.io/website/plugin.png" title="Package Checker plugin"&gt;&lt;img src="https://foojayio.github.io/website/today/package-checker-find-fix-vulnerabilities-with-intellij-idea-ultimate/plugin.png" alt="Package Checker plugin" title="Package Checker plugin" loading="lazy"&gt;
&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Release with JReleaser to Maven Central with GitHub Actions</title><link>https://foojayio.github.io/website/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://foojayio.github.io/website/today/how-to-release-a-java-module-with-jreleaser-to-maven-central-with-github-actions/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;This guide is outdated since 2024. There is a new version here: &lt;a href="https://foojayio.github.io/website/_wp_link_placeholder"&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;
&lt;/blockquote&gt;
&lt;p&gt;{#more-61688}&lt;/p&gt;
&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;
&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;
&lt;p&gt;If you just want to publish your Maven project by hand, then you can follow &lt;a href="https://foojayio.github.io/website/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://foojayio.github.io/website/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://foojayio.github.io/website/today/managing-dependencies-in-intellij-idea/</link><pubDate>Tue, 10 Jan 2023 15:13:39 +0000</pubDate><guid>https://foojayio.github.io/website/today/managing-dependencies-in-intellij-idea/</guid><description>&lt;p&gt;In this tutorial, following on from &lt;a href="https://foojayio.github.io/website/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;
&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;
&lt;p&gt;There are several ways to add new dependencies to your project.&lt;/p&gt;
&lt;h2 id="h2-0-from-the-build-file-using-copy-paste"&gt;From the build file using copy-paste&lt;/h2&gt;
&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><item><title>Viewing Maven and Gradle Dependencies in IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/viewing-dependencies-in-intellij-idea/</link><pubDate>Wed, 07 Dec 2022 08:54:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/viewing-dependencies-in-intellij-idea/</guid><description>&lt;p&gt;In this article, we&amp;rsquo;re going to take a look at different ways to view your external dependencies in IntelliJ IDEA.&lt;/p&gt;
&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re working on a real-world application, your project will probably use external libraries and frameworks.&lt;/p&gt;
&lt;p&gt;Occasionally, you might want to see which dependencies your project uses, for various reasons.&lt;/p&gt;
&lt;p&gt;There are several ways to view dependencies in &lt;a href="https://www.jetbrains.com/idea/" title="IntelliJ IDEA" target="_blank" rel="noopener noreferrer"&gt;IntelliJ IDEA&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;Each view has a different focus.&lt;/p&gt;
&lt;h2 id="h2-1-dependency-management-config-file"&gt;Dependency management config file&lt;/h2&gt;
&lt;p&gt;You can find direct dependencies in the dependency management config file. Direct dependencies are the dependencies that your project depends on directly.&lt;/p&gt;</description></item><item><title>Java on Azure Tooling Update – July 2022</title><link>https://foojayio.github.io/website/today/java-on-azure-tooling-update-july-2022/</link><pubDate>Mon, 11 Jul 2022 07:21:16 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-on-azure-tooling-update-july-2022/</guid><description>&lt;p&gt;Hi everyone, welcome back to the July update of Java on Azure Tooling.&lt;/p&gt;
&lt;p&gt;In this update, we will introduce the brand new getting started experience with the Azure toolkit for IntelliJ.&lt;/p&gt;
&lt;p&gt;In addition, we have added support for Managed Identity Authentication.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s see what these new features are.&lt;/p&gt;
&lt;h2 id="h2-0-azure-toolkit-for-intellij-improvements"&gt;Azure Toolkit for IntelliJ Improvements&lt;/h2&gt;
&lt;h3 id="h3-1-new-guided-getting-started-experience"&gt;New Guided Getting Started Experience&lt;/h3&gt;
&lt;p&gt;In &lt;a href="https://devblogs.microsoft.com/java/azure-toolkit-for-intellij-update-april-2022/" title="April’s blog" target="_blank" rel="noopener noreferrer"&gt;April&amp;rsquo;s blog&lt;/a&gt;
, we first talked about why we needed better getting started experience. Currently, there are several challenges for a developer who is new to Azure:&lt;/p&gt;</description></item><item><title>Wordish with JavaFX - Part 5</title><link>https://foojayio.github.io/website/today/wordish-with-javafx-part-5/</link><pubDate>Tue, 14 Jun 2022 07:25:37 +0000</pubDate><guid>https://foojayio.github.io/website/today/wordish-with-javafx-part-5/</guid><description>&lt;p&gt;Welcome to Part 5 and the final installment of this series.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-1/"&gt;Part 1&lt;/a&gt;
, we introduced the Wordish game with JavaFX and discussed the main UI layout.&lt;/li&gt;
&lt;li&gt;In &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-2/"&gt;Part 2&lt;/a&gt;
, we discussed look and feel enhancements. We introduced specialized Label and Button controls that use pseudo-classes for advanced CSS styling. In addition, we covered incorporating third-party font libraries and customizing Scene Builder to leverage these features.&lt;/li&gt;
&lt;li&gt;Next, in &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-3/"&gt;Part 3&lt;/a&gt;
, we explored the controller code that maintains game state and responds to user input with appropriate updates to the UI.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-4/"&gt;Part 4&lt;/a&gt;
, &lt;strong&gt;What&amp;rsquo;s in a Word, Anyway?&lt;/strong&gt;, examines how we get our words and how we determine if a submitted word is valid.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And now in Part 5, we turn to JavaFX charts, showing how to customize charts with orientation and colors and how to add nodes to the chart scene graph.&lt;/p&gt;</description></item><item><title>Java on Azure Tooling Update – June 2022</title><link>https://foojayio.github.io/website/today/java-on-azure-tooling-update-june-2022/</link><pubDate>Mon, 13 Jun 2022 07:40:38 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-on-azure-tooling-update-june-2022/</guid><description>&lt;p&gt;Hi everyone, welcome back to June update of Java on Azure Tooling.&lt;/p&gt;
&lt;p&gt;In this update, we will introduce the new application-centric view on Azure toolkit for IntelliJ that will make the interface more user-friendly.&lt;/p&gt;
&lt;p&gt;In addition, we have added support for more Azure services.&lt;/p&gt;
&lt;p&gt;For Gradle plugins, we have some new features for Azure Web Apps and Azure Functions.&lt;/p&gt;
&lt;p&gt;We hope you like these new features and share your feedback with us. So let us get right into it&amp;hellip;&lt;/p&gt;</description></item><item><title>Wordish with JavaFX - Part 4 : Foojay</title><link>https://foojayio.github.io/website/today/wordish-with-javafx-part-4/</link><pubDate>Tue, 07 Jun 2022 09:23:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/wordish-with-javafx-part-4/</guid><description>&lt;p&gt;Welcome to Part 4 of this five part series.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-1/"&gt;Part 1&lt;/a&gt;
, we introduced the Wordish game with JavaFX and discussed the main UI layout.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-2/"&gt;Part 2&lt;/a&gt;
, we discussed look and feel enhancements.&lt;/p&gt;
&lt;p&gt;We introduced specialized Label and Button controls that use pseudo-classes for advanced CSS styling.&lt;/p&gt;
&lt;p&gt;We covered incorporating third-party font libraries and customizing Scene Builder to leverage these features.&lt;/p&gt;
&lt;p&gt;Next, in &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-3/"&gt;Part 3&lt;/a&gt;
, we explored the controller code that maintains game state and responds to user input with appropriate updates to the UI.&lt;/p&gt;</description></item><item><title>Wordish with JavaFX - Part 3</title><link>https://foojayio.github.io/website/today/wordish-with-javafx-part-3/</link><pubDate>Tue, 31 May 2022 07:23:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/wordish-with-javafx-part-3/</guid><description>&lt;p&gt;Welcome to Part 3 of this five part series.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-1/"&gt;Part 1&lt;/a&gt;
, we introduced the Wordish game with JavaFX and discussed the main UI layout.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-2/"&gt;Part 2&lt;/a&gt;
, we discussed look and feel enhancements.&lt;/p&gt;
&lt;p&gt;We introduced specialized Label and Button controls that use pseudo-classes for advanced CSS styling.&lt;/p&gt;
&lt;p&gt;We covered incorporating third-party font libraries and customizing Scene Builder to leverage these features.&lt;/p&gt;
&lt;p&gt;Now in Part 3, we&amp;rsquo;ll examine the controller code. The controller code maintains game state and responds to user input with appropriate updates to the UI.&lt;/p&gt;</description></item><item><title>Wordish with JavaFX - Part 2</title><link>https://foojayio.github.io/website/today/wordish-with-javafx-part-2/</link><pubDate>Tue, 24 May 2022 07:50:54 +0000</pubDate><guid>https://foojayio.github.io/website/today/wordish-with-javafx-part-2/</guid><description>&lt;h2 id="h2-0-building-games-and-having-fun-with-java-and-javafx"&gt;Building Games and Having Fun with Java and JavaFX&lt;/h2&gt;
&lt;p&gt;Welcome to Part 2 of this five part series!&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-1/"&gt;Part 1&lt;/a&gt;
, we introduced the Wordish game with JavaFX and discussed the main UI layout.&lt;/p&gt;
&lt;p&gt;In this second part, we&amp;rsquo;ll discuss some important look and feel enhancements.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll show you specialized Label and Button controls and using pseudo-classes for advanced CSS styling.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll also cover incorporating third-party font libraries and customizing Scene Builder to leverage these features.&lt;/p&gt;</description></item><item><title>Publish a Java Project to the Maven Central Repository</title><link>https://foojayio.github.io/website/today/how-to-publish-a-java-maven-project-to-the-maven-central-repository/</link><pubDate>Fri, 13 May 2022 06:22:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-publish-a-java-maven-project-to-the-maven-central-repository/</guid><description>&lt;p&gt;This guide will describe how to publish the &lt;a href="https://github.com/tobiasbriones/jdesk" target="_blank" rel="noopener noreferrer"&gt;JDesk framework&lt;/a&gt;
 to Maven Central.&lt;/p&gt;
&lt;p&gt;The project is written in Java using Maven as the build tool. So, the process will be detailed for Java projects with a &lt;code&gt;pom.xml&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;You can follow this article if you need to publish a Java Maven-based library or artifact to Maven.&lt;/p&gt;
&lt;h2 id="h2-0-get-ready-for-publishing-packages"&gt;Get Ready for Publishing Packages&lt;/h2&gt;
&lt;p&gt;Publishing a Java artifact is not as trivial as Python or JavaScript packages can be deployed.&lt;/p&gt;</description></item><item><title>Use git bisect to Pinpoint a Bug</title><link>https://foojayio.github.io/website/today/use-git-bisect-to-pinpoint-a-bug/</link><pubDate>Wed, 23 Feb 2022 14:44:51 +0000</pubDate><guid>https://foojayio.github.io/website/today/use-git-bisect-to-pinpoint-a-bug/</guid><description>&lt;p&gt;During some recent work on Maven, I found a very specific bug. The error message wasn&amp;rsquo;t that clear, and I couldn&amp;rsquo;t make a guess what might&amp;rsquo;ve caused it.&lt;/p&gt;
&lt;p&gt;I had read about &lt;code&gt;git bisect&lt;/code&gt; a few times and figured that this time, I would use that tool to find the bug.&lt;/p&gt;
&lt;p&gt;So what does &lt;code&gt;git bisect&lt;/code&gt; do? It helps you find the exact commit that introduced a bug, using binary search.&lt;/p&gt;</description></item><item><title>The Flatten Maven plugin - fooay.io</title><link>https://foojayio.github.io/website/today/flatten-maven-plugin/</link><pubDate>Mon, 31 Jan 2022 14:06:05 +0000</pubDate><guid>https://foojayio.github.io/website/today/flatten-maven-plugin/</guid><description>&lt;p&gt;One of the Apache Maven committers recently wrote about &lt;a href="https://www.javaadvent.com/2021/12/from-maven-3-to-maven-5.html" target="_blank" rel="noopener noreferrer"&gt;their plans for Maven 5&lt;/a&gt;
. I consider the following one of the most significant changes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In summary, we need to make a distinction between two POM types: the build POM, stored in the project source control, that uses v5 schema for build time, requiring a new Maven version able to use the new features associated with the new schema. The other one is the consumer POM, that is published to Maven Central in the good old v4 schema, so every past or future build tool can continue to consume pre-built artifacts as usual for their dependencies.&lt;/p&gt;</description></item><item><title>Introduction to Maven Toolchains</title><link>https://foojayio.github.io/website/today/introduction-to-maven-toolchains/</link><pubDate>Tue, 25 Jan 2022 08:20:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/introduction-to-maven-toolchains/</guid><description>&lt;p&gt;Java evolves at a much faster pace than it used to do.&lt;/p&gt;
&lt;p&gt;But not all of the projects we work on keep up with that pace.&lt;/p&gt;
&lt;p&gt;I have projects on Java 8, 11, and 17 and sometimes I want to play with early access builds of newer versions as well.&lt;/p&gt;
&lt;p&gt;How to make sure I can build them without having to constantly switch Java runtimes?&lt;/p&gt;
&lt;h2 id="h2-0-switching-java-versions-the-whole-day-long"&gt;Switching Java versions the whole day long&lt;/h2&gt;
&lt;p&gt;Switching Java versions on the command line &lt;a href="https://maarten.mulders.it/2017/02/quickly-switch-java-versions-on-macos/" target="_blank" rel="noopener noreferrer"&gt;doesn&amp;rsquo;t have to be hard&lt;/a&gt;
. In my case, it&amp;rsquo;s as easy as typing &lt;code&gt;j8&lt;/code&gt;, &lt;code&gt;j11&lt;/code&gt;, &lt;code&gt;j17&lt;/code&gt;. But doing that every time you&amp;rsquo;re seeing that &amp;ldquo;release version 17 not supported&amp;rdquo; is a bit tedious. More importantly, it doesn&amp;rsquo;t solve the root cause of the issue.&lt;/p&gt;</description></item><item><title>Taking Your Database Beyond a Single Kubernetes Cluster</title><link>https://foojayio.github.io/website/today/taking-your-database-beyond-a-single-kubernetes-cluster/</link><pubDate>Wed, 19 Jan 2022 10:31:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/taking-your-database-beyond-a-single-kubernetes-cluster/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/taking-your-database-beyond-a-single-kubernetes-cluster/0_ntxtNVffHhl99weW-1-1024x535.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;By &lt;a href="https://www.linkedin.com/in/bradfordcp/" target="_blank" rel="noopener noreferrer"&gt;Christopher Bradford&lt;/a&gt;
 and &lt;a href="https://www.linkedin.com/in/ty-morton-2b55b82/" target="_blank" rel="noopener noreferrer"&gt;Ty Morton&lt;/a&gt;
{#31db}&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Global applications need a data layer that is as distributed as the users they serve. &lt;a href="https://cassandra.apache.org/_/index.html" target="_blank" rel="noopener noreferrer"&gt;Apache Cassandra&lt;/a&gt;
 has risen to this challenge, handling data needs for the likes of Apple, Netflix and Sony. Traditionally, managing data layers for a distributed application was handled with dedicated teams to manage the deployment and operations of thousands of nodes &amp;mdash; both on-premises and in the cloud.&lt;/p&gt;</description></item><item><title>Understanding Apache Maven (Part 9): Versions in Maven</title><link>https://foojayio.github.io/website/today/understanding-apache-maven-part-9-versions-in-maven/</link><pubDate>Sat, 20 Nov 2021 11:40:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/understanding-apache-maven-part-9-versions-in-maven/</guid><description>&lt;p&gt;In the final part, Part 9 of the series, versions in Maven are covered!&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/understanding-apache-maven-part-3-maven-coordinates-pom-inheritance/"&gt;Part 3&lt;/a&gt;
, version schemes in Maven were briefly covered. A quick recap: a version is a string that uniquely identifies a set of changes made to the project. Maven &lt;strong&gt;does not understand version schemes&lt;/strong&gt; and &lt;strong&gt;cannot compare versions&lt;/strong&gt; using numeric (or alphanumeric) comparisons. Some plugins may build additional intelligence for such.&lt;/p&gt;
&lt;p&gt;Maven uses the &lt;strong&gt;version as a coordinate&lt;/strong&gt; in identifying an artifact.&lt;/p&gt;</description></item><item><title>Understanding Apache Maven (Part 8): Maven Plugins</title><link>https://foojayio.github.io/website/today/understanding-apache-maven-part-8-maven-plugins/</link><pubDate>Fri, 12 Nov 2021 13:34:48 +0000</pubDate><guid>https://foojayio.github.io/website/today/understanding-apache-maven-part-8-maven-plugins/</guid><description>&lt;p&gt;In Part 8 of the series, below, a deeper dive on Maven Plugins is covered.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/understanding-apache-maven-part-4-maven-lifecycle/"&gt;Part 4&lt;/a&gt;
, Maven Lifecycles and Phases were introduced. A brief overview of Plugins and Goals were also included.&lt;/p&gt;
&lt;p&gt;A quick recap:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apache Maven provides standard &lt;strong&gt;lifecycles&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lifecycles&lt;/strong&gt; have &lt;strong&gt;phases&lt;/strong&gt; that execute sequentially.&lt;/li&gt;
&lt;li&gt;Execution of maven is done via &lt;strong&gt;plugins&lt;/strong&gt; which define &lt;strong&gt;goals&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Goals&lt;/strong&gt; can be associated with &lt;strong&gt;phases&lt;/strong&gt; (or may simply be run independent of phases).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-0-what-are-plugins"&gt;What are plugins?&lt;/h2&gt;
&lt;p&gt;Maven is a plugin-execution framework. Plugins are an assembly of goals, code written as MOJOs (&lt;em&gt;Maven&amp;rsquo;s plain Old Java Objects, Modern MOJOs are not restricted to being written in Java&lt;/em&gt;). Goals have names and can be bound to phases. A MOJO declares its goal name and optionally, a phase association, which binds the class to a part of a lifecycle.
&lt;img src="https://cgunturme.files.wordpress.com/2020/07/mavenplugins.png?w=1024" alt="Image displays a plugin-lifecycle relationship. Plugins define goals. Goals can be bound to phases. Goals from multiple plugins can be bound to a single phase." loading="lazy"&gt;
 Plugins define goals. Goals can be bound to phases. Goals from multiple plugins can be bound to a single phase.&lt;/p&gt;</description></item><item><title>Understanding Apache Maven (Part 7): Configuring Apache Maven</title><link>https://foojayio.github.io/website/today/understanding-apache-maven-part-7-configuring-apache-maven/</link><pubDate>Fri, 05 Nov 2021 16:51:36 +0000</pubDate><guid>https://foojayio.github.io/website/today/understanding-apache-maven-part-7-configuring-apache-maven/</guid><description>&lt;p&gt;In this, &lt;a href="https://foojayio.github.io/website/today/author/c-guntur/"&gt;part 7 of the series&lt;/a&gt;
, various means of configuring Apache Maven are covered!&lt;/p&gt;
&lt;h2 id="h2-0-why-configure-apache-maven"&gt;Why Configure Apache Maven?&lt;/h2&gt;
&lt;p&gt;Over several parts in this series, Maven was touted to be &lt;em&gt;&lt;strong&gt;convention-over-configuration&lt;/strong&gt;&lt;/em&gt;. Maven assumes defaults and allows for overrides where possible.&lt;/p&gt;
&lt;p&gt;However, Maven can depend on constraints external to what is packaged. Examples include &lt;strong&gt;&lt;em&gt;the&lt;/em&gt; &lt;em&gt;JDK to use&lt;/em&gt;&lt;/strong&gt; (assuming there are several JDKs on the computing device), &lt;strong&gt;the flags to set (memory, garbage collection flags for tests etc.)&lt;/strong&gt; , &lt;em&gt;&lt;strong&gt;system / environment variables&lt;/strong&gt;&lt;/em&gt; , &lt;em&gt;&lt;strong&gt;repository information&lt;/strong&gt;&lt;/em&gt; , &lt;em&gt;&lt;strong&gt;extensions to Maven&lt;/strong&gt;&lt;/em&gt; and so on.&lt;/p&gt;</description></item><item><title>Understanding Apache Maven (Part 6): POM Reference</title><link>https://foojayio.github.io/website/today/understanding-apache-maven-part-6-pom-reference/</link><pubDate>Fri, 29 Oct 2021 08:20:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/understanding-apache-maven-part-6-pom-reference/</guid><description>&lt;p&gt;In Part 6 &lt;a href="https://foojayio.github.io/website/today/author/c-guntur/"&gt;of the series&lt;/a&gt;
, a walkthrough of POM content (XML) is covered!&lt;/p&gt;
&lt;p&gt;This article is not meant for a full dissection of a &lt;code&gt;pom.xml&lt;/code&gt;, since the Apache Maven doc does the job so well that anything else written will at best be a copy of that content. It is strongly recommended to peruse the linked doc below.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Excellent documentation of a &lt;code&gt;pom.xml&lt;/code&gt; on the Apache Maven site: &lt;a href="https://maven.apache.org/ref/3.6.3/maven-model/maven.html" target="_blank" rel="noopener noreferrer"&gt;https://maven.apache.org/ref/3.6.3/maven-model/maven.html&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Understanding Apache Maven (Part 5): Dependencies in Maven</title><link>https://foojayio.github.io/website/today/understanding-apache-maven-part-5-dependencies-in-maven/</link><pubDate>Fri, 22 Oct 2021 20:48:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/understanding-apache-maven-part-5-dependencies-in-maven/</guid><description>&lt;p&gt;In this, &lt;a href="https://foojayio.github.io/website/today/author/c-guntur/"&gt;part 5 of the series&lt;/a&gt;
, a walkthrough of the topic of Maven dependencies is covered!&lt;/p&gt;
&lt;h2 id="h2-0-what-are-dependencies"&gt;What are dependencies&lt;/h2&gt;
&lt;p&gt;Dependencies are the basic building blocks of a Maven project.&lt;/p&gt;
&lt;p&gt;Imagine writing code that requires logging output or using String utilities or parsing JSON text. The logic can be coded into the project&amp;hellip; or a library can be used. Most of the time, it makes sense to harness an existing library to minimize the amount of code needed. This also encourages reuse.&lt;/p&gt;</description></item><item><title>Faster Maven Builds (Part 2): Inside Docker</title><link>https://foojayio.github.io/website/today/faster-maven-builds-part-2/</link><pubDate>Thu, 14 Oct 2021 08:33:09 +0000</pubDate><guid>https://foojayio.github.io/website/today/faster-maven-builds-part-2/</guid><description>&lt;p&gt;Following on from &lt;a href="https://foojayio.github.io/website/today/faster-maven-builds-1/"&gt;different techniques&lt;/a&gt;
 to speed up your Maven builds, I&amp;rsquo;d like to widen the scope and do the same for Maven builds &lt;em&gt;inside Docker&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Between each run, we change the source code by adding a single blank line; between each section, we remove all built images, including the intermediate ones that are the results of the multi-stage build. The idea is to avoid reusing a previously built image.&lt;/p&gt;
&lt;h2 id="h2-0-baseline"&gt;Baseline&lt;/h2&gt;
&lt;p&gt;To compute a helpful baseline, we need a sample project. I created &lt;a href="https://github.com/nfrankel/fast-maven-builds" target="_blank" rel="noopener noreferrer"&gt;one&lt;/a&gt;
 just for this purpose: it&amp;rsquo;s a relatively small Kotlin project.&lt;/p&gt;</description></item><item><title>How to Do Faster Maven Builds (Part 1)</title><link>https://foojayio.github.io/website/today/faster-maven-builds-1/</link><pubDate>Thu, 14 Oct 2021 08:27:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/faster-maven-builds-1/</guid><description>&lt;p&gt;Builds require a few properties, chief among them reproducibility. I would consider speed to be low on the order of priorities. However, it&amp;rsquo;s also one of the most limiting factors to your release cycle: if your build takes &lt;em&gt;T&lt;/em&gt; , you cannot release faster than each &lt;em&gt;T&lt;/em&gt;. Hence, you&amp;rsquo;ll probably want to speed up your builds after you&amp;rsquo;ve reached a certain maturity level to enable more frequent releases.&lt;/p&gt;
&lt;p&gt;I want to detail some techniques you can leverage to make your Maven builds faster in this article. The &lt;a href="https://foojayio.github.io/website/today/faster-maven-builds-part-2/"&gt;next article&lt;/a&gt;
 focuses on how to do the same inside of Docker.&lt;/p&gt;</description></item><item><title>Understanding Apache Maven (Part 4): Maven Lifecycle</title><link>https://foojayio.github.io/website/today/understanding-apache-maven-part-4-maven-lifecycle/</link><pubDate>Fri, 08 Oct 2021 09:00:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/understanding-apache-maven-part-4-maven-lifecycle/</guid><description>&lt;p&gt;In Part 4 of the series, a walkthrough of the Maven lifecycles and executions is covered.&lt;/p&gt;
&lt;p&gt;Apache Maven executions are tied to &lt;strong&gt;lifecycles&lt;/strong&gt;. A lifecycle groups a sequence of activities. Maven provides three basic lifecycles for its standard build management. More lifecycles can be created as needed, though that is a rare need. There are three standard lifecycles provided by Maven.&lt;/p&gt;
&lt;h2 id="h2-0-standard-lifecycles"&gt;Standard lifecycles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;clean&lt;/strong&gt; &amp;ndash; Intended for clean-up of any prior build-managed outputs and artifacts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;default (build)&lt;/strong&gt; &amp;ndash; Intended for project build, test and deployment of artifacts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;site&lt;/strong&gt; &amp;ndash; Intended for project site documentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="h3-1-what-s-in-a-lifecycle"&gt;What&amp;rsquo;s in a lifecycle?&lt;/h3&gt;
&lt;p&gt;A lifecycle is a collection of related activities pertaining to a specific type of build-management. Standard lifecycles include generation of build output artifacts, creation of a documentation site as well as cleaning any artifacts produced from a prior execution.&lt;/p&gt;</description></item><item><title>Understanding Apache Maven: Maven Coordinates &amp; POM Inheritance</title><link>https://foojayio.github.io/website/today/understanding-apache-maven-part-3-maven-coordinates-pom-inheritance/</link><pubDate>Fri, 01 Oct 2021 10:05:15 +0000</pubDate><guid>https://foojayio.github.io/website/today/understanding-apache-maven-part-3-maven-coordinates-pom-inheritance/</guid><description>&lt;p&gt;In Part 3 of the series, an explanation of dependency coordinates and &amp;ldquo;distinguishers&amp;rdquo; as well as a more detailed look at POM hierarchies are covered.&lt;/p&gt;
&lt;h2 id="h2-0-what-are-dependency-coordinates"&gt;What are dependency coordinates?&lt;/h2&gt;
&lt;p&gt;There are hundreds or thousands of projects that produce artifacts. Some such artifacts can potentially be used in a current project as libraries. For instance, a project may depend on a logging framework or a JSON library. It is possible to host many such dependency artifacts on a central repository. Maven&amp;rsquo;s primary such repository is called &lt;strong&gt;Maven Central&lt;/strong&gt;. Many other such repositories also exist. More on this later!&lt;/p&gt;</description></item><item><title>Understanding Apache Maven (Part 2): POM Hierarchy and Effective POM</title><link>https://foojayio.github.io/website/today/understanding-apache-maven-part-2-pom-hierarchy/</link><pubDate>Fri, 03 Sep 2021 08:57:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/understanding-apache-maven-part-2-pom-hierarchy/</guid><description>&lt;p&gt;Following on from &lt;a href="https://foojayio.github.io/website/today/understanding-apache-maven-part-1-the-basics/"&gt;the first article on Maven basics&lt;/a&gt;
, the Project Object Model (POM) is explored, below.&lt;/p&gt;
&lt;h2 id="h2-0-what-is-the-project-object-model"&gt;What is the Project Object Model?&lt;/h2&gt;
&lt;p&gt;First, a maven POM is not a &lt;a href="https://www.pomwonderful.com/" target="_blank" rel="noopener noreferrer"&gt;popular pomegranate juice&lt;/a&gt;
 nor is it related to the colorful &lt;a href="https://www.bing.com/images/search?q=pom&amp;#43;poms" target="_blank" rel="noopener noreferrer"&gt;pom-poms&lt;/a&gt;
. A Maven POM is definitely is wonderful and brings as much joy to a developer as does a pom-pom to a kid.&lt;/p&gt;
&lt;p&gt;A POM describes build management needs of a project:&lt;/p&gt;</description></item><item><title>Understanding Apache Maven (Part 1): The Basics</title><link>https://foojayio.github.io/website/today/understanding-apache-maven-part-1-the-basics/</link><pubDate>Fri, 27 Aug 2021 09:52:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/understanding-apache-maven-part-1-the-basics/</guid><description>&lt;p&gt;Apache Maven (commonly referred to as &amp;ldquo;Maven&amp;rdquo;) is a &lt;strong&gt;Build Management&lt;/strong&gt; tool. Maven is primarily used to build Java projects. Other language projects can also be built using Maven. Apache Maven is written in Java, for the most part. It is &lt;a href="https://maven.apache.org/" target="_blank" rel="noopener noreferrer"&gt;an open source project&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;Maven follows a &lt;strong&gt;convention-over-configuration&lt;/strong&gt; philosophy. More on this follows.&lt;/p&gt;
&lt;h3 id="block-26a619e1-4ead-4d98-9783-d0af7673e045"&gt;Why is Maven a Build Management tool?&lt;/h3&gt;
&lt;p&gt;Maven aims at achieving the following for a project:&lt;/p&gt;</description></item><item><title>Why You Should Upgrade to Maven Version 3.8.1 Today or Very Soon</title><link>https://foojayio.github.io/website/today/why-you-should-upgrade-to-maven-version-3-8-1-today-or-very-soon/</link><pubDate>Wed, 11 Aug 2021 08:06:09 +0000</pubDate><guid>https://foojayio.github.io/website/today/why-you-should-upgrade-to-maven-version-3-8-1-today-or-very-soon/</guid><description>&lt;p&gt;If you are working in the Java ecosystem and building your applications with an older Maven version, this message is for you.&lt;/p&gt;
&lt;p&gt;Check your Maven version by typing &lt;code&gt;mvn -version&lt;/code&gt;! If you are still running on an old Maven version like 3.6.3 or below you definitely need to upgrade to version 3.8.1 because of security reasons. Be aware that to run Maven 3.8.1, Java 7+ is required.&lt;/p&gt;
&lt;p&gt;Luckily we found out in the &lt;a href="https://snyk.io/jvm-ecosystem-report-2021/" target="_blank" rel="noopener noreferrer"&gt;JVM Ecosystem report 2021&lt;/a&gt;
 that not many people work with Java 6 or below. We do see that a lot of people use Maven so not upgrading can end up in serious issues for a large part of the ecosystem.&lt;/p&gt;</description></item><item><title>Creating Mobile Apps with JavaFX - Part 2</title><link>https://foojayio.github.io/website/today/creating-mobile-apps-with-javafx-part-2/</link><pubDate>Fri, 18 Jun 2021 07:10:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/creating-mobile-apps-with-javafx-part-2/</guid><description>&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/creating-mobile-apps-with-javafx---part-1/"&gt;Part 1&lt;/a&gt;
, we introduced a mobile app game, TiltMaze, written completely in JavaFX, which you can download from either the &lt;a href="https://apps.apple.com/app/id1566464439" target="_blank" rel="noopener noreferrer"&gt;Apple App Store&lt;/a&gt;
 or &lt;a href="https://play.google.com/store/apps/details?id=com.asgteach.accelerometer.TiltMaze" target="_blank" rel="noopener noreferrer"&gt;Google Play&lt;/a&gt;
 and install it on your mobile device or tablet.&lt;/p&gt;
&lt;p&gt;In this article, we&amp;rsquo;ll discuss the technologies we use with JavaFX to build the JVM byte code version as well as native images that target iOS and Android devices.&lt;/p&gt;
&lt;h3 id="h3-0-gluonfx-plugin-for-maven"&gt;GluonFX plugin for Maven&lt;/h3&gt;
&lt;p&gt;Gluon (&lt;a href="https://docs.gluonhq.com/#_the_gluon_client_plugin_for_maven" target="_blank" rel="noopener noreferrer"&gt;https://docs.gluonhq.com/&lt;/a&gt;
) has a Maven plugin that lets you build native-image JavaFX applications targeting multiple platforms. While Java has always been about compiling Java byte code that runs in a Java Virtual Machine (JVM) anywhere and everywhere (Write Once, Run Anywhere), there are prohibitions with running byte code in the mobile environment. Besides the performance penalties of executing byte code in a virtual machine and the relatively long startup time, Apple prohibits JVM applications on mobile targets and Android Java is non-standard. If you choose to leave the JavaFX world for native toolkits, you need to acquire expertise in Objective C/Swift as well as the respective native UI toolkits to target these platforms. Spoiler alert: I didn&amp;rsquo;t do that!&lt;/p&gt;</description></item><item><title>CI/CD Workflow for Spring Boot Applications on Kubernetes via Skaffold</title><link>https://foojayio.github.io/website/today/ci-cd-workflow-for-spring-boot-applications-on-kubernetes-via-skaffold/</link><pubDate>Tue, 19 Jan 2021 07:37:03 +0000</pubDate><guid>https://foojayio.github.io/website/today/ci-cd-workflow-for-spring-boot-applications-on-kubernetes-via-skaffold/</guid><description>&lt;p&gt;In this post, we will create a Local CI/CD workflow for a Spring Boot Application and deploy it to Kubernetes using Skaffold.&lt;br&gt;
&lt;img src="https://foojayio.github.io/website/today/ci-cd-workflow-for-spring-boot-applications-on-kubernetes-via-skaffold/Screenshot-2020-12-08-at-8.26.16-AM.png" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;It is a known fact that developing applications with Kubernetes is cumbersome. That is the reason there is an ecosystem being developed around it so that developers can focus on what matters most to them i.e. writing code. On that note, in this article, I will be covering another tool Skaffold developed by &lt;a href="https://skaffold.dev/" target="_blank" rel="noopener noreferrer"&gt;Google&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Native Applications from a JavaFX Project for Multiple Devices</title><link>https://foojayio.github.io/website/today/native-applications-for-multiple-devices-from-a-single-javafx-project-with-gluon-mobile-and-github-actions/</link><pubDate>Wed, 25 Nov 2020 08:58:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/native-applications-for-multiple-devices-from-a-single-javafx-project-with-gluon-mobile-and-github-actions/</guid><description>&lt;p&gt;The post &lt;a href="https://foojayio.github.io/website/today/starting-a-javafx-project-with-gluon-tools/"&gt;&amp;ldquo;Starting a JavaFX Project with Gluon Tools&amp;rdquo;&lt;/a&gt;
 shows you how to start a Gluon Mobile Multiview project with a few clicks in IntelliJ IDEA thanks to the &lt;a href="https://plugins.jetbrains.com/plugin/7864-gluon" target="_blank" rel="noopener noreferrer"&gt;&amp;ldquo;Gluon plugin&amp;rdquo;&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;In this post, we will use such a project and build it with GitHub Actions as a native application for Windows, MacOS, iOS, Linux, and Android from one single code base!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Yes, that&amp;rsquo;s right!&lt;/p&gt;
&lt;p&gt;True &amp;ldquo;Write Once, Run Everywhere&amp;rdquo;!!!
&lt;img src="https://foojayio.github.io/website/today/native-applications-for-multiple-devices-from-a-single-javafx-project-with-gluon-mobile-and-github-actions/github_actions_gluon_diagram.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="h2-0-the-application"&gt;The Application&lt;/h2&gt;
&lt;p&gt;This application is built around a Java library I created last year for my book &lt;a href="https://webtechie.be/books/" target="_blank" rel="noopener noreferrer"&gt;&amp;ldquo;Getting Started with Java on the Raspberry Pi&amp;rdquo;&lt;/a&gt;
 which helps you to calculate the value of a resistor from its color rings. This library is further described on &lt;a href="https://webtechie.be/post/2019-11-25-resistor-color-codes-and-calculations-a-java-maven-library/" target="_blank" rel="noopener noreferrer"&gt;&amp;ldquo;Resistor color codes and calculations as a Java Maven library&amp;rdquo;&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Fixing Vulnerabilities in Maven-Based Projects</title><link>https://foojayio.github.io/website/today/fixing-vulnerabilities-in-maven-projects/</link><pubDate>Tue, 20 Oct 2020 06:40:22 +0000</pubDate><guid>https://foojayio.github.io/website/today/fixing-vulnerabilities-in-maven-projects/</guid><description>&lt;p&gt;Maven is still the most used build system in the Java ecosystem. According to the &lt;a href="https://snyk.io/blog/jvm-ecosystem-report-2020/" target="_blank" rel="noopener noreferrer"&gt;JVM report 2020&lt;/a&gt;
, Maven is the number one build tool in the ecosystem with two-thirds of the share.&lt;/p&gt;
&lt;p&gt;Therefore, it is important to know how Maven works. For instance, if you find vulnerabilities in your Maven project using Snyk, how can you fix them?&lt;/p&gt;
&lt;p&gt;In this article, I will explain how you can fix vulnerabilities in third-party libraries when using Maven, even when it is not obvious.&lt;/p&gt;</description></item></channel></rss>