<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Java Beginner on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/category/java-beginner/</link><description>Recent content in Java Beginner on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 31 Jul 2026 16:16:40 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/category/java-beginner/index.xml" rel="self" type="application/rss+xml"/><item><title>Keeping Java Hot This Summer</title><link>https://foojayio.github.io/website/today/keeping-java-hot-this-summer-august-2026/</link><pubDate>Fri, 31 Jul 2026 09:50:18 +0000</pubDate><guid>https://foojayio.github.io/website/today/keeping-java-hot-this-summer-august-2026/</guid><description>&lt;p&gt;Summer conference season goes quiet. Most major Java events wrap by June, CFPs go dark while we&amp;rsquo;re waiting for the results and a lot of us - if we decide to carry on with the work - use August to either catch up on backlog, or training ( and I mean mental exercise here, although I&amp;rsquo;m sure some of you hit the gym more often too 😉 ).&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re in the northeastern US or eastern Canada and are around next month with some extra time to spare, this may be a good excuse to join your local community to watch and learn from a technical session on a problem most of us have hit in production, delivered by &lt;a href="https://gsjug.org/profiles/simon-ritter.html" target="_blank" rel="noopener noreferrer"&gt;Simon Ritter,&lt;/a&gt;
 a Java Champion who&amp;rsquo;s spent years in the JVM internals.&lt;/p&gt;</description></item><item><title>Using the Raspberry Pi Sense HAT with Pi4J Drivers</title><link>https://foojayio.github.io/website/today/using-the-raspberry-pi-sense-hat-with-pi4j-drivers/</link><pubDate>Wed, 01 Jul 2026 08:38:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/using-the-raspberry-pi-sense-hat-with-pi4j-drivers/</guid><description>&lt;figure class="alignleft is-resized"&gt;
 &lt;img decoding="async" src="duke_sensehat-819x1024.png" alt="" style="width:250px"&gt;
&lt;/figure&gt;
&lt;p&gt;One of the biggest advantages of the Pi4J Drivers project is the ability to interact with complex hardware through simple and intuitive Java APIs. A great example of this is the Raspberry Pi Sense HAT, one of the most popular Raspberry Pi add-on boards and the hardware platform used in the Astro Pi program aboard the International Space Station.&lt;/p&gt;
&lt;p&gt;Instead of manually implementing communication with multiple sensors and devices, Pi4J Drivers provides a ready-to-use driver that makes accessing the Sense HAT straightforward and enjoyable.&lt;/p&gt;</description></item><item><title>Pi4J Drivers: Simplifying Sensor and Hardware Integration in Java</title><link>https://foojayio.github.io/website/today/pi4j-drivers-simplifying-sensor-and-hardware-integration-in-java/</link><pubDate>Thu, 25 Jun 2026 07:07:08 +0000</pubDate><guid>https://foojayio.github.io/website/today/pi4j-drivers-simplifying-sensor-and-hardware-integration-in-java/</guid><description>&lt;figure class="alignleft is-resized"&gt;
 &lt;img decoding="async" src="duke_driver01-819x1024.png" alt="" style="width:300px"&gt;
&lt;/figure&gt;
&lt;p&gt;When developing Java applications for Raspberry Pi, &lt;a href="https://www.pi4j.com/" target="_blank" rel="noopener noreferrer"&gt;Pi4J&lt;/a&gt;
 is one of the most popular libraries for accessing GPIO, I2C, SPI, PWM, and other hardware interfaces. However, interacting directly with these protocols often requires a significant amount of code and a deep understanding of the underlying hardware.&lt;/p&gt;
&lt;p&gt;This is where the &lt;strong&gt;Pi4J Drivers library&lt;/strong&gt; become extremely valuable.&lt;/p&gt;
&lt;h3 id="h3-0-what-is-pi4j-drivers"&gt;What is Pi4J Drivers?&lt;/h3&gt;
&lt;p&gt;Pi4J Drivers is a companion project to Pi4J that provides ready-to-use drivers for a wide range of electronic components, including sensors, displays, I/O expanders, and actuators. Instead of implementing low-level communication from scratch, developers can leverage tested and reusable APIs to interact with hardware devices.&lt;/p&gt;</description></item><item><title>Quarkus Unpacked: Insights from the Foojay Podcast</title><link>https://foojayio.github.io/website/today/quarkus-unpacked-insights-from-the-foojay-podcast/</link><pubDate>Tue, 23 Jun 2026 12:36:54 +0000</pubDate><guid>https://foojayio.github.io/website/today/quarkus-unpacked-insights-from-the-foojay-podcast/</guid><description>&lt;figure class="alignleft is-resized"&gt;
 &lt;img decoding="async" src="3-Quarkus-Unpacked-2-2.jpeg" alt="Quarkus: A Runtime and Framework for Cloud-Native Java" style="width:300px"&gt;
&lt;/figure&gt;
&lt;p&gt;I recently had the pleasure of joining the &lt;a href="https://www.youtube.com/watch?v=_nJCTTrnZkE" target="_blank" rel="noopener noreferrer"&gt;Foojay podcast&lt;/a&gt;
 to talk about Quarkus in depth. The conversation covered a lot of ground, from what makes Quarkus different to the practical trade-offs between JVM and native mode. This post captures the key questions and answers from that discussion, lightly edited for readability.{#_quarkus_unpacked_insights_from_the_foojay_podcast}&lt;/p&gt;
&lt;p&gt;If you have been following this blog series, note that the third installment on building your own stack with Quarkus is coming next. Consider this a bonus entry that distills the podcast conversation into a format you can read, reference, and share.&lt;/p&gt;</description></item><item><title>Bringing Raspberry Pi Development to Quarkus with the Quarkus Pi4J Extension</title><link>https://foojayio.github.io/website/today/bringing-raspberry-pi-development-to-quarkus-with-the-quarkus-pi4j-extension/</link><pubDate>Tue, 23 Jun 2026 07:30:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/bringing-raspberry-pi-development-to-quarkus-with-the-quarkus-pi4j-extension/</guid><description>&lt;br /&gt;
&lt;p&gt;Java developers building applications for Raspberry Pi often face a common challenge: combining hardware access with modern application frameworks.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.pi4j.com/" target="_blank" rel="noopener noreferrer"&gt;Pi4J&lt;/a&gt;
 has become the standard way to access GPIO, I2C, SPI, UART, and other Raspberry Pi interfaces from Java applications. On the other hand, Quarkus has established itself as one of the most innovative Java frameworks, offering fast startup times, low memory consumption, and a developer-friendly experience.&lt;/p&gt;
&lt;p&gt;The Quarkus Pi4J Extension brings these two worlds together, making it easier than ever to build hardware-enabled applications using the Quarkus ecosystem.
&lt;img src="https://foojayio.github.io/website/today/bringing-raspberry-pi-development-to-quarkus-with-the-quarkus-pi4j-extension/quarkus_pi4j01-1024x819.png" alt="" loading="lazy"&gt;
&lt;/p&gt;</description></item><item><title>Java is Not the Dark Side: Why Learning Java is Easier Than You Think</title><link>https://foojayio.github.io/website/today/java-is-not-the-dark-side-why-learning-java-is-easier-than-you-think/</link><pubDate>Thu, 07 May 2026 08:44:23 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-is-not-the-dark-side-why-learning-java-is-easier-than-you-think/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/java-is-not-the-dark-side-why-learning-java-is-easier-than-you-think/duke_sw_01-1024x687.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Every year on May 4th, fans around the world celebrate Star Wars Day with the iconic phrase &amp;ldquo;May the 4th be with you.&amp;rdquo; The following day, May 5th, is often recognized as &amp;ldquo;Revenge of the Fifth&amp;rdquo;, a playful nod to Revenge of the Sith, where many embrace the darker side of the Force and celebrate iconic Sith Lords and villains.&lt;/p&gt;
&lt;p&gt;So, this week is ideal for talking about one of the most misunderstood technologies in programming: &lt;strong&gt;Java&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Foojay Podcast #94: More Than a Blog: How Foojay Connects, Sustains, and Evolves the Java Community</title><link>https://foojayio.github.io/website/today/foojay-podcast-94/</link><pubDate>Mon, 04 May 2026 06:26:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-94/</guid><description>&lt;p&gt;Foojay.io, the website for the Friends of OpenJDK, is turning six years old. To celebrate, Frank Delporte headed to JCON in Cologne, Germany, and sat down with twelve members of the Java community to talk about what Foojay means to them, what they learn from each other, and how the community is evolving.&lt;/p&gt;
&lt;p&gt;This episode covers a lot of ground. Sharat Chandar reflects on 25 years in the Java community and why the people are what keep the language alive. Markus Westergren and Iryna Dohndorf both focus on a theme that comes up again and again: developer sustainability. Not just green software, but how you stay healthy, grounded, and relevant when AI is changing everything around you. Markus and his wife researched how developers are reacting to AI, from ignoring it completely to transforming everything they do. Iryna talks about building resilience and robustness as skills, not afterthoughts.&lt;/p&gt;</description></item><item><title>Dockerizing a Java 26 Project with Docker Init</title><link>https://foojayio.github.io/website/today/dockerizing-a-java-26-project-with-docker-init/</link><pubDate>Mon, 27 Apr 2026 09:55:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/dockerizing-a-java-26-project-with-docker-init/</guid><description>&lt;p&gt;Docker Init was introduced in Docker Desktop 4.27, before LLMs became the default answer to everything. It&amp;rsquo;s a &amp;ldquo;smart&amp;rdquo; interactive wizard that analyzes your project and generates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A &lt;code&gt;Dockerfile&lt;/code&gt; (multi-stage, production-ready)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A &lt;code&gt;compose.yaml&lt;/code&gt; file&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A &lt;code&gt;.dockerignore&lt;/code&gt; file&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A &lt;code&gt;README.Docker.md&lt;/code&gt; with build and run instructions&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What makes it valuable is that it&amp;rsquo;s deterministic&amp;mdash;not a probabilistic guess. It produces the same correct output every time, following Docker&amp;rsquo;s own best practices.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://dockersecurity.io/commandos-asgard/asgard-init.png" alt="Docker Commandos setting up the command center" loading="lazy"&gt;
&lt;/p&gt;</description></item><item><title>The Java in Education Catalog Now Has a Beautiful Home</title><link>https://foojayio.github.io/website/today/the-java-in-education-catalog-now-has-a-beautiful-home/</link><pubDate>Fri, 27 Mar 2026 13:17:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-java-in-education-catalog-now-has-a-beautiful-home/</guid><description>&lt;p&gt;A few weeks ago, Igor De Souza shared &lt;a href="https://foojayio.github.io/website/today/bringing-java-closer-to-education-a-community-driven-initiative/"&gt;Bringing Java Closer to Education: A Community-Driven Initiative&lt;/a&gt;
 here on Foojay. It&amp;rsquo;s something we started together to gather Java educational resources in one place, making it easier for mentors, educators, and learners to discover what&amp;rsquo;s out there.&lt;/p&gt;
&lt;p&gt;But let&amp;rsquo;s be honest: a GitHub README, while perfectly functional, is not exactly the most inviting front door for educators who aren&amp;rsquo;t already deep in the coding ecosystem. That&amp;rsquo;s now fixed&amp;hellip;
&lt;img src="https://foojayio.github.io/website/today/the-java-in-education-catalog-now-has-a-beautiful-home/java-in-education-site-1024x745.png" alt="" loading="lazy"&gt;
&lt;/p&gt;</description></item><item><title>Azul Zulu OpenJDK Docker Images Now Available on Docker Hub</title><link>https://foojayio.github.io/website/today/official-azul-zulu-openjdk-images-now-available-on-docker-hub/</link><pubDate>Mon, 23 Mar 2026 07:53:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/official-azul-zulu-openjdk-images-now-available-on-docker-hub/</guid><description>&lt;p&gt;&lt;a href="https://www.azul.com/blog/trusted-java-containers-azul-zulu-openjdk-joins-dockers-official-images/" title="Azul recently announced that" target="_blank" rel="noopener noreferrer"&gt;Azul recently announced that&lt;/a&gt;
 Azul Zulu Builds of OpenJDK are now available as Docker Official images on Docker Hub. That means you can pull TCK‑verified, fully compliant OpenJDK builds directly from the same Official Images library you already trust for your base OS and databases.&lt;/p&gt;
&lt;p&gt;You can browse and pull the images here:&lt;br&gt;
&lt;a href="https://hub.docker.com/_/azul-zulu" target="_blank" rel="noopener noreferrer"&gt;https://hub.docker.com/_/azul-zulu&lt;/a&gt;
&lt;/p&gt;
&lt;h2 id="h2-0-why-should-you-care-about-official-images"&gt;Why should you care about official images?&lt;/h2&gt;
&lt;p&gt;With the official Docker images you get:&lt;/p&gt;</description></item><item><title>Gotta Code 'Em All: How Java Evolved Beyond Verbosity – Celebrating 30 Years of Pokémon</title><link>https://foojayio.github.io/website/today/gotta-code-em-all-how-java-evolved-beyond-verbosity-celebrating-30-years-of-pokemon/</link><pubDate>Fri, 27 Feb 2026 09:57:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/gotta-code-em-all-how-java-evolved-beyond-verbosity-celebrating-30-years-of-pokemon/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/gotta-code-em-all-how-java-evolved-beyond-verbosity-celebrating-30-years-of-pokemon/pokemon01-1024x640.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Happy 30th Anniversary to &lt;strong&gt;Pokémon&lt;/strong&gt;! 🎉&lt;/p&gt;
&lt;p&gt;February 27, 2026 marks exactly 30 years since the original Pokémon Red and Green launched in Japan on February 27, 1996. From catching your first Pokémon in Pallet Town to becoming Champion in the Indigo League, the franchise has spent three decades teaching millions of players about strategy, friendship, exploration, and constant improvement, evolving creatures, teams, and even entire generations of games.&lt;/p&gt;
&lt;p&gt;Pokémon is literally all about evolution and that same spirit of evolution perfectly matches what&amp;rsquo;s happening in Java right now.&lt;/p&gt;</description></item><item><title>Personal Branding Tips for Java Developers</title><link>https://foojayio.github.io/website/today/watch-the-recording-diy-technical-marketing-for-java-developers/</link><pubDate>Thu, 26 Feb 2026 10:28:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/watch-the-recording-diy-technical-marketing-for-java-developers/</guid><description>&lt;p&gt;The software development industry is more competitive than ever. Being a strong technical expert is essential, but on its own it is often not enough to grow your career or open new opportunities.&lt;/p&gt;
&lt;p&gt;In this short, practical talk&lt;em&gt;DIY Technical Marketing, Real World Tips For Building A Successful Developer Brand&lt;/em&gt; , delivered at &lt;a href="https://www.jfokus.se/" title="Jfokus 2026 conference" target="_blank" rel="noopener noreferrer"&gt;Jfokus 2026 conference&lt;/a&gt;
, Payara Community Manager Dominika Tasarz-Sochacka explores why personal branding matters for developers and how even small, intentional actions can make a real difference over time.&lt;/p&gt;</description></item><item><title>Bringing Java Closer to Education: A Community-Driven Initiative</title><link>https://foojayio.github.io/website/today/bringing-java-closer-to-education-a-community-driven-initiative/</link><pubDate>Mon, 02 Feb 2026 18:02:20 +0000</pubDate><guid>https://foojayio.github.io/website/today/bringing-java-closer-to-education-a-community-driven-initiative/</guid><description>&lt;p&gt;Over the past decades, Java has proven itself to be one of the most reliable, versatile, and widely used programming languages in the world. From enterprise systems to mobile applications and embedded devices, Java continues to evolve and adapt. Yet, one important area still holds enormous untapped potential: education.&lt;/p&gt;
&lt;p&gt;This initiative was born from a simple but powerful idea: to aggregate Java-related educational content in a way that helps newcomers get started, supports educators, and encourages new Java initiatives focused on learning. By making Java more accessible and visible in educational environments, we strengthen not only the language itself, but the entire ecosystem around it.&lt;/p&gt;</description></item><item><title>Jakarta Data Makes Persistence a Breeze</title><link>https://foojayio.github.io/website/today/jakarta-data-makes-persistence-a-breeze/</link><pubDate>Fri, 12 Dec 2025 11:55:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/jakarta-data-makes-persistence-a-breeze/</guid><description>&lt;p&gt;Working with enterprise Java databases can sometimes feel like swimming upstream. Jakarta EE 11&amp;rsquo;s Jakarta Data helps developers glide through data operations effortlessly, cutting complexity and keeping projects flowing smoothly.&lt;/p&gt;
&lt;p&gt;In this blog post, we look at what Jakarta Data brings to the table and how it can transform everyday Java development tasks.&lt;/p&gt;
&lt;p&gt;Jakarta EE is evolving, and one of the most talked-about additions in the latest release (&lt;a href="https://payara.fish/blog/jakarta-ee-11-is-here-and-its-ready-for-the-cloud/" title="Jakarta EE 11" target="_blank" rel="noopener noreferrer"&gt;Jakarta EE 11&lt;/a&gt;
) is &lt;a href="https://projects.eclipse.org/projects/ee4j.data" title="Jakarta Data" target="_blank" rel="noopener noreferrer"&gt;Jakarta Data&lt;/a&gt;
, a framework designed to simplify how developers interact with databases. By reducing boilerplate and offering a more intuitive approach, Jakarta Data promises to make enterprise Java development cleaner, faster and more maintainable.&lt;/p&gt;</description></item><item><title>First Experiments with Java on the LattePanda IOTA: An Alternative to Raspberry Pi?</title><link>https://foojayio.github.io/website/today/first-experiments-with-java-on-the-lattepanda-iota/</link><pubDate>Thu, 11 Dec 2025 09:13:14 +0000</pubDate><guid>https://foojayio.github.io/website/today/first-experiments-with-java-on-the-lattepanda-iota/</guid><description>&lt;p&gt;After years of experimenting with Raspberry Pi boards, Java, JavaFX, and &lt;a href="https://www.pi4j.com/" target="_blank" rel="noopener noreferrer"&gt;Pi4J&lt;/a&gt;
 to control electronics, I wanted to explore whether my knowledge and experience could be applied to similar boards from other providers. There are many alternatives available these days, based on ARM, Intel processors, and RISC-V architectures.&lt;/p&gt;
&lt;p&gt;I reached out to several suppliers to see if I could get evaluation copies, and I&amp;rsquo;m happy to share that I received my first box from DFRobot containing the &lt;a href="https://www.dfrobot.com/product-2989.html" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;LattePanda IOTA&lt;/strong&gt;&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Foojay Podcast #85: Code, Community, and Opportunity: Making Tech Accessible for Everyone</title><link>https://foojayio.github.io/website/today/foojay-podcast-85/</link><pubDate>Mon, 08 Dec 2025 06:07:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-85/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;What if the future of Java depends on who we invite to learn it today?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In this Foojay Podcast, we&amp;rsquo;re diving into something that affects all of us in the Java community: How can we inspire the next generation of developers, and how do we make the developer world more inclusive?&lt;/p&gt;
&lt;p&gt;In this episode, you&amp;rsquo;ll hear four incredible guests who are actively working to make tech more accessible and inclusive. First, Daniel De Luca talks about Devoxx for Kids and how they support underprivileged students in IT education. Then Kenny Schwegler shares his insights on how we can actively promote diversity and inclusion in tech. Cassandra Chin, the youngest Java Champion and author, talks about inspiring young coders through hands-on projects and making technology fun. And finally, Igor De Souza discusses his mission to bring Java into Raspberry Pi education and bring more Java into coding clubs worldwide.&lt;/p&gt;</description></item><item><title>From Spring Boot To Jakarta EE 11</title><link>https://foojayio.github.io/website/today/from-spring-boot-to-jakarta-ee-11-how-payara-starter-eases-the-transition/</link><pubDate>Fri, 28 Nov 2025 08:11:53 +0000</pubDate><guid>https://foojayio.github.io/website/today/from-spring-boot-to-jakarta-ee-11-how-payara-starter-eases-the-transition/</guid><description>&lt;p&gt;If you&amp;rsquo;ve been living in the Spring ecosystem, you&amp;rsquo;re used to fast project setup. Spring Initializr gives you a sleek interface, some starter dependencies and a running project within minutes. Now you&amp;rsquo;re moving to Jakarta EE, where do you begin?&lt;/p&gt;
&lt;p&gt;In this blog, you&amp;rsquo;ll see how Spring developers &lt;strong&gt;can create Jakarta EE applications with the same ease they&amp;rsquo;re used to from Spring Initializr.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s be honest: Spring Boot abstracts away so much of the setup pain that you forget it&amp;rsquo;s even there. You don&amp;rsquo;t worry about the underlying servlet container, dependency versions or deployment descriptors, as Spring Boot handles it all.&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>Design Patterns Update to JDK25</title><link>https://foojayio.github.io/website/today/design-patterns-update-to-jdk25/</link><pubDate>Wed, 24 Sep 2025 11:29:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/design-patterns-update-to-jdk25/</guid><description>&lt;p&gt;&lt;strong&gt;T&lt;/strong&gt; he information technology landscape is changing rapidly. This is not only due to the utilization of AI and &lt;a href="https://foojayio.github.io/website/today/stochastic-ai-agility-breaking-cycles-of-debt/" title="new methodologies"&gt;new methodologies [8]&lt;/a&gt;
, or business requirements trying to keep up, but also because of the incremental complexity of expected solutions.&lt;/p&gt;
&lt;p&gt;Statistics and probability are slowly beginning to play a very important role in this evolution. The Java ecosystem has proven its maturity many times by delivering essential features that businesses require, although many may argue that these have been inspired by other existing solutions.&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>Taking Java Arrays to Another Dimension</title><link>https://foojayio.github.io/website/today/taking-java-arrays-to-another-dimension/</link><pubDate>Fri, 29 Aug 2025 12:53:09 +0000</pubDate><guid>https://foojayio.github.io/website/today/taking-java-arrays-to-another-dimension/</guid><description>&lt;p&gt;&lt;em&gt;Explore the intricacies of Java&amp;rsquo;s multidimensional arrays with this in-depth guide. Learn how to declare, initialize, and utilize arrays of Java arrays to manage complex data structures effectively. In this blog post, Azul Deputy CTO Simon Ritter explains how to leverage multidimensional arrays as a tool to do even more.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Java, along with many other programming languages, includes the concept of arrays. An array is an object that contains a number of variables. Since an array is itself an object, the variables in an array can also be arrays, which leads us to the idea of multidimensional arrays.&lt;/p&gt;</description></item><item><title>Why Java is Still Worth Learning in 2025: A Developer's 25-Year Journey</title><link>https://foojayio.github.io/website/today/why-java-is-still-worth-learning-in-2025-a-developers-25-year-journey/</link><pubDate>Mon, 04 Aug 2025 06:32:05 +0000</pubDate><guid>https://foojayio.github.io/website/today/why-java-is-still-worth-learning-in-2025-a-developers-25-year-journey/</guid><description>&lt;h3 id="h3-0-i-ll-be-honest-my-first-encounter-with-java-in-1999-wasn-t-love-at-first-sight-it-was-during-a-university-distributed-systems-course-and-coming-from-a-background-in-assembler-and-c-java-felt-bloated-slow-and-frankly-untrustworthy-that-automatic-memory-handling-seemed-like-dangerous-magic-i-couldn-t-control-after-years-of-meticulously-tracking-every-allocated-memory-block-the-idea-that-the-runtime-would-handle-memory-management-felt-like-giving-up-control-to-forces-i-didn-t-understand"&gt;I&amp;rsquo;ll be honest - my first encounter with Java in 1999 wasn&amp;rsquo;t love at first sight. It was during a university distributed systems course, and coming from a background in assembler and C, Java felt bloated, slow, and frankly untrustworthy. That &amp;ldquo;automatic memory handling&amp;rdquo; seemed like dangerous magic I couldn&amp;rsquo;t control. After years of meticulously tracking every allocated memory block, the idea that the runtime would handle memory management felt like giving up control to forces I didn&amp;rsquo;t understand.&lt;/h3&gt;
&lt;p&gt;For the first eight years of my career, I stubbornly stuck with C, convinced that Java was just a passing trend for developers who couldn&amp;rsquo;t handle &amp;ldquo;real&amp;rdquo; programming.&lt;/p&gt;</description></item><item><title>Understanding MCP Through Raw STDIO Communication</title><link>https://foojayio.github.io/website/today/understanding-mcp-through-raw-stdio-communication/</link><pubDate>Thu, 17 Jul 2025 15:57:05 +0000</pubDate><guid>https://foojayio.github.io/website/today/understanding-mcp-through-raw-stdio-communication/</guid><description>&lt;h2 id="h2-0-deep-dive-into-the-model-context-protocol"&gt;Deep Dive into the Model Context Protocol&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Ever wondered how AI assistants like Claude actually communicate with external tools and services? While most tutorials focus on using pre-built SDKs and frameworks, this article takes a different approach&amp;mdash;we&amp;rsquo;ll dissect a production MCP server built from scratch using only Java&amp;rsquo;s standard libraries and raw STDIO communication.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;By stripping away all the abstractions and implementing the Model Context Protocol directly, we&amp;rsquo;ll uncover the surprisingly elegant mechanics that enable AI systems to discover, understand, and execute tools.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Foojay Podcast #75: JCON Report, Part 4 - Tips and Tricks for Java Devs</title><link>https://foojayio.github.io/website/today/foojay-podcast-75/</link><pubDate>Mon, 14 Jul 2025 06:47:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-75/</guid><description>&lt;p&gt;&lt;strong&gt;This is the final part of the JCON 2025 interviews with a lot of tips and tricks!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the three previous podcasts, we featured interviews from the JCON conference on &amp;ldquo;&lt;a href="https://foojayio.github.io/website/today/foojay-podcast-72/"&gt;Being a better Java developer&lt;/a&gt;
,&amp;rdquo; &amp;ldquo;&lt;a href="https://foojayio.github.io/website/today/foojay-podcast-72/"&gt;Evolutions in Java&lt;/a&gt;
,&amp;rdquo; and &amp;ldquo;&lt;a href="https://foojayio.github.io/website/today/foojay-podcast-73/"&gt;How to use AI with Java&lt;/a&gt;
.&amp;rdquo; However, we talked to many more people during the conference, so this podcast focuses on tips and tricks. Let&amp;rsquo;s learn from the many other experienced visitors of JCON.&lt;/p&gt;</description></item><item><title>GenAI blood, sweat, and tears: Loading data to Pinecone</title><link>https://foojayio.github.io/website/today/genai-blood-sweat-and-tears-loading-data-to-pinecone/</link><pubDate>Wed, 07 May 2025 22:10:37 +0000</pubDate><guid>https://foojayio.github.io/website/today/genai-blood-sweat-and-tears-loading-data-to-pinecone/</guid><description>&lt;p&gt;As someone who is pretty familiar with relational and graph databases, I wanted to dig a little deeper into vector databases and understand the strengths and quirks they bring to the database table. I put together a conference abstract on vector RAG versus GraphRAG which got picked up, so I went to work building a demo and learning all I could.&lt;/p&gt;
&lt;p&gt;I pivoted a few times along the way, but ended up with a Spring AI application that connects to both Pinecone (vector database) and Neo4j (graph database). There were a few surprises throughout, which I&amp;rsquo;ll be sure to mention. Let&amp;rsquo;s get started!&lt;/p&gt;</description></item><item><title>Optimizing the Garbage Collector when Migrating Cloud Workloads</title><link>https://foojayio.github.io/website/today/optimizing-the-garbage-collector-when-migrating-cloud-workloads/</link><pubDate>Wed, 16 Apr 2025 10:27:49 +0000</pubDate><guid>https://foojayio.github.io/website/today/optimizing-the-garbage-collector-when-migrating-cloud-workloads/</guid><description>&lt;p&gt;&lt;strong&gt;You might associate Arm primarily with smartphones and the Java-based Android runtime. However, OpenJDK has supported AArch64 on Linux since 2014&amp;mdash; before Arm-based cloud instances were widely available.&lt;/strong&gt; &lt;strong&gt;Fast forward a decade and major cloud providers have their own Arm-based instances like AWS Graviton, Microsoft Azure Cobalt, and others, prompting many organizations to migrate Java workloads from x86 to multi-architecture environments.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A multi-architecture deployment shift allows an organization to be adaptable and choose the architecture with the ideal price to performance ratio. Large independent software vendors, such as Uber, are &lt;a href="https://www.uber.com/en-GB/blog/adopting-arm-at-scale-bootstrapping-infrastructure/" target="_blank" rel="noopener noreferrer"&gt;already making this transition&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Sliding Window Log Rate Limiter (Redis &amp; Java)</title><link>https://foojayio.github.io/website/today/sliding-window-log-rate-limiter-redis-java/</link><pubDate>Tue, 04 Feb 2025 12:21:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/sliding-window-log-rate-limiter-redis-java/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://youtu.be/bCYzRg0oQjY" target="_blank" rel="noopener noreferrer"&gt;This article is also available on YouTube. Check it out!&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;The Sliding Window Log is a &lt;em&gt;more precise&lt;/em&gt; way to handle rate limiting. Instead of splitting time into fixed intervals like the &lt;a href="https://foojayio.github.io/website/wp-admin/post.php?post=115337"&gt;Fixed Window Counter&lt;/a&gt;
 , it keeps a log of timestamps for each request. This allows it to track requests over a rolling time period, like the last second or minute, without abrupt resets at the end of an interval.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Fixed Window Counter Rate Limiter (Redis &amp; Java)</title><link>https://foojayio.github.io/website/today/fixed-window-counter-rate-limiter-redis-java/</link><pubDate>Mon, 20 Jan 2025 16:34:18 +0000</pubDate><guid>https://foojayio.github.io/website/today/fixed-window-counter-rate-limiter-redis-java/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://youtu.be/Ki3WKSNpdRU" target="_blank" rel="noopener noreferrer"&gt;This article is also available on YouTube!&lt;/a&gt;

The &lt;strong&gt;Fixed Window Counter&lt;/strong&gt; is the simplest and most straightforward rate-limiting algorithm. It divides time into fixed intervals (e.g., seconds, minutes, or hours) and counts the number of requests within each interval. If the count exceeds a predefined threshold, the requests are rejected until the next interval begins. Looking for a more precise algorithm? Take a look at the &lt;a href="https://foojayio.github.io/website/today/sliding-window-log-rate-limiter-redis-java/"&gt;Sliding Window Log implementation&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Foojay Podcast #64: Interviews at JFall about opensource, OpenJDK evolutions, Project Loom, JVM,...</title><link>https://foojayio.github.io/website/today/foojay-podcast-64/</link><pubDate>Mon, 23 Dec 2024 10:51:20 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-64/</guid><description>&lt;p&gt;Let&amp;rsquo;s wrap up this year with more interviews from the JFall conference.&lt;/p&gt;
&lt;p&gt;In this episode you&amp;rsquo;ll learn more about Foojay, JVM internals and writing your own programming language, Project Loom and structured concurrency, learning at conferences, code reviews, creating desktop applications with Java, infrastructure as code, JUG Noord, and much more!&lt;/p&gt;
&lt;h2 id="h2-0-video"&gt;Video&lt;/h2&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/kx6DfVE-I0o?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-podcast-apps"&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>JDK 23: Module Design Pattern with JEP-476</title><link>https://foojayio.github.io/website/today/exploring-new-features-in-jdk-23-module-design-pattern-with-jep-476/</link><pubDate>Thu, 31 Oct 2024 09:41:20 +0000</pubDate><guid>https://foojayio.github.io/website/today/exploring-new-features-in-jdk-23-module-design-pattern-with-jep-476/</guid><description>&lt;p&gt;Although the module design pattern can be implemented in many different ways, the main motivation behind using it remains the same. This is the isolation of a specific section into small building blocks, which are the so-called modules. Therefore, the module design pattern belongs to the structural design pattern family.&lt;/p&gt;
&lt;p&gt;Before Java 9, each project using the module design pattern at any level was a bit difficult and many times broken. Such a situation had a direct impact on source code maintainability and event extensibility, as it was very easy to break module boundaries. Many times this state has been called a bit like &amp;ldquo;classpath hell&amp;rdquo;. In order to avoid such a situation, it was necessary to preserve the coding discipline.&lt;/p&gt;</description></item><item><title>Just-Write-And-Run prototyping with JEP-477</title><link>https://foojayio.github.io/website/today/exploring-new-features-in-jdk-23-just-write-and-run-prototyping-with-jep-477-not-only-for-beginners/</link><pubDate>Wed, 23 Oct 2024 09:37:04 +0000</pubDate><guid>https://foojayio.github.io/website/today/exploring-new-features-in-jdk-23-just-write-and-run-prototyping-with-jep-477-not-only-for-beginners/</guid><description>&lt;h3 id="h3-0-it-seems-like-it-s-never-been-easier-to-start-writing-a-simple-program-that-can-be-turned-into-a-more-advanced-one-as-development-progresses-let-s-explore-possibilities-delivered-by-jdk-23-release"&gt;It seems like it&amp;rsquo;s never been easier to start writing a simple program that can be turned into a more advanced one as development progresses. Let&amp;rsquo;s explore possibilities delivered by JDK 23 release.&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;From the early days, Java may have struggled with a relatively verbose and sometimes strikingly complicated process of creating a small program. A small program just to validate an idea or assumption. Let&amp;rsquo;s call that Just-Write-And-Run feature. For example, it&amp;rsquo;s required to create a trivial solution for reading and parsing data, Oh now what&amp;hellip;&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Book Review: Mastering the Java Virtual Machine</title><link>https://foojayio.github.io/website/today/book-review-mastering-the-java-virtual-machine/</link><pubDate>Fri, 18 Oct 2024 13:54:49 +0000</pubDate><guid>https://foojayio.github.io/website/today/book-review-mastering-the-java-virtual-machine/</guid><description>&lt;p&gt;&lt;strong&gt;Otávio Santana&amp;rsquo;s&lt;/strong&gt; &lt;strong&gt;&amp;ldquo;Mastering the Java Virtual Machine&amp;rdquo;&lt;/strong&gt; takes readers on an insightful journey through the inner workings of the JVM. As I read this book, I found myself reconnecting with the fundamentals of Java programming while also discovering new depths of understanding.&lt;/p&gt;
&lt;p&gt;The book strikes a perfect balance between nostalgia and innovation. It reminded me of my early programming days, while also introducing cutting-edge concepts that are crucial for modern Java development. Santana uses clever technical metaphors to make complex JVM internals more accessible, bridging the gap between theory and practical application.&lt;/p&gt;</description></item><item><title>Deep dive into bits, bytes, shorts, ints, longs, signed, and unsigned with Java</title><link>https://foojayio.github.io/website/today/deep-dive-into-bits-bytes-shorts-ints-longs-signed-and-unsigned-with-java/</link><pubDate>Fri, 18 Oct 2024 13:54:09 +0000</pubDate><guid>https://foojayio.github.io/website/today/deep-dive-into-bits-bytes-shorts-ints-longs-signed-and-unsigned-with-java/</guid><description>&lt;p&gt;On the Pi4J discussion list, someone recently asked what the &lt;a href="https://github.com/Pi4J/pi4j-v2/discussions/379" target="_blank" rel="noopener noreferrer"&gt;best and easiest way is in Java to convert a byte value&lt;/a&gt;
. In Java, there is no distinction between signed and unsigned bytes, which can be confusing. 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;
 contains an explanation about this, and I am happy to share it in this post with some more info and code examples&amp;hellip;&lt;/p&gt;</description></item><item><title>Gatherers upgrades pipeline design pattern JEP-461</title><link>https://foojayio.github.io/website/today/exploring-new-features-in-jdk-23-gatherers-upgrades-pipeline-design-pattern-jep-461/</link><pubDate>Tue, 15 Oct 2024 06:18:04 +0000</pubDate><guid>https://foojayio.github.io/website/today/exploring-new-features-in-jdk-23-gatherers-upgrades-pipeline-design-pattern-jep-461/</guid><description>&lt;p&gt;Source-code flexibility goes hand in hand with maintainability and testability. The Java language benefits not only from its maturity but also from the fact that it is strongly typed. This may initiate possible discussion topics, as each defined variable requires its type to be known, which can lead to unnecessary verbosity in the source code (reduced by JEP-286: local variable type inference[4]).&lt;/p&gt;
&lt;p&gt;Since the introduction of the Stream API in Java 8, developers have benefited from the ability to create complex transformations inside pipelines. The Stream API allows a lazily evaluated definition of how a pipeline (Example 1.- 1) should be transformed through one or multiple intermediate functions (Example 1.- 2). The sequence of intermediate functions must be terminated by a terminal function that materializes the output (Example 1.- 3).&lt;/p&gt;</description></item><item><title>Builder Pattern Simplicity with JEP-455 Primitive Types</title><link>https://foojayio.github.io/website/today/exploring-new-features-in-jdk-23-builder-pattern-simplicity-with-jep-455-primitive-types-in-patterns-instanceof-and-switch-preview/</link><pubDate>Thu, 10 Oct 2024 10:54:08 +0000</pubDate><guid>https://foojayio.github.io/website/today/exploring-new-features-in-jdk-23-builder-pattern-simplicity-with-jep-455-primitive-types-in-patterns-instanceof-and-switch-preview/</guid><description>&lt;p&gt;&lt;strong&gt;The runtime initiation of any program requires allocating a given memory and after many additional steps the first object could be created.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In a &lt;a href="https://foojayio.github.io/website/today/exploring-new-features-in-jdk-23-factory-pattern-with-flexible-constructor-bodies-with-jep-482/"&gt;previous post&lt;/a&gt;
, we explored how to improve maintainability of complex creation processes by using the factory creational pattern[4] and JEP-482, flexible constructor bodies.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The factory design may be a good fit for many cases but it may also create obstacles due to the pattern code centralized nature.&lt;/strong&gt;&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>Creating 12-factor cloud-native Java apps with open source</title><link>https://foojayio.github.io/website/today/creating-cloud-native-java-applications-with-the-12-factor-app-methodology/</link><pubDate>Fri, 23 Aug 2024 05:30:51 +0000</pubDate><guid>https://foojayio.github.io/website/today/creating-cloud-native-java-applications-with-the-12-factor-app-methodology/</guid><description>&lt;p&gt;&lt;strong&gt;Learn how you could create cloud-native Java apps that are portable, scalable, and reliable with the 12 factor app methodology and open source Java frameworks.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Created in 2012, the 12-factor app methodology was designed to provide a set of guidelines for helping developers and organizations to design and build cloud-native applications. We&amp;rsquo;ll explore how you can take advantage of each of these 12 factors to create applications, utilizing open source technologies, that thrive in the cloud.&lt;/p&gt;</description></item><item><title>Java: Demystifying The Stream API</title><link>https://foojayio.github.io/website/today/java-demystifying-the-stream-api-part-3/</link><pubDate>Fri, 05 Jul 2024 06:57:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-demystifying-the-stream-api-part-3/</guid><description>&lt;p&gt;In our earlier articles &lt;a href="https://foojayio.github.io/website/today/java-functional-programming/"&gt;part1&lt;/a&gt;
 and &lt;a href="https://foojayio.github.io/website/today/java-functional-programming-fx-part2"&gt;part2&lt;/a&gt;
, we have previously explored the significance of functional programming, Lambda Calculus, as well as various features such as Functional Interfaces, Lambda Expressions, and Method References.&lt;/p&gt;
&lt;p&gt;This article delves into a crucial aspect, namely the Stream API, which JDK1.8 incorporated. It also covers how to utilize Lambda Expressions, Method References, and Functional Interfaces within Stream API functions.&lt;/p&gt;
&lt;p&gt;So,&lt;/p&gt;
&lt;p&gt;Succinctly, In Java, &lt;strong&gt;a Stream is a collection of data that developers can process on in a declarative and functional approach&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Master Your Journey in the School of OpenJDK Migration</title><link>https://foojayio.github.io/website/today/master-your-journey-in-the-school-of-openjdk-migration/</link><pubDate>Sun, 30 Jun 2024 09:46:03 +0000</pubDate><guid>https://foojayio.github.io/website/today/master-your-journey-in-the-school-of-openjdk-migration/</guid><description>&lt;p&gt;Azul has led so many OpenJDK migrations, we could write a book. Like, seriously, &lt;a href="https://www.azul.com/openjdk-migration-for-dummies/" target="_blank" rel="noopener noreferrer"&gt;we wrote the book&lt;/a&gt;
. If you prefer more a more visual, immersive experience, welcome to the School of OpenJDK Migration!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.azul.com/school-of-open-jdk-migration/" target="_blank" rel="noopener noreferrer"&gt;The School of OpenJDK Migration&lt;/a&gt;
 is your ultimate resource for mastering OpenJDK migration. Dive into our rich collection of webinars, where OpenJDK experts divulge their secrets, from foundational knowledge to advanced tactics, derived from industry knowledge and professional experience. You&amp;rsquo;ll leave the course with a blueprint to navigate the complexities of OpenJDK migration with confidence and ease.&lt;/p&gt;</description></item><item><title>Java: Functional Programming f(x) – Part2</title><link>https://foojayio.github.io/website/today/java-functional-programming-fx-part2/</link><pubDate>Mon, 03 Jun 2024 17:05:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-functional-programming-fx-part2/</guid><description>&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/java-functional-programming/"&gt;the preceding article&lt;/a&gt;
, we explored the significance of &lt;strong&gt;Functional Programming, Lambda Calculus&lt;/strong&gt;, and other related concepts.&lt;/p&gt;
&lt;p&gt;In this article, we delve deeper into the essential aspects of Functional Programming, such as&amp;hellip;​&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Lambda Expressions
2. Method References
3. Functional Interfaces&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;And we will discuss about the relationship between each of the features.&lt;/p&gt;
&lt;p&gt;JSR 335 has greatly facilitated programming in a multicore environment by introducing Lambda Expressions/closures/anonymous method, and related features.&lt;/p&gt;</description></item><item><title>Functional Programming: Revolutionizing Software Development</title><link>https://foojayio.github.io/website/today/java-functional-programming/</link><pubDate>Thu, 25 Apr 2024 17:43:17 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-functional-programming/</guid><description>&lt;p&gt;&lt;strong&gt;Mathematics serves as the driving force behind significant advancements in computer science from my perspective. We deeply root the fundamental principles that we utilize in our daily programming tasks and application development in mathematical concepts. I am constantly intrigued by the opportunity to incorporate mathematical ideas into the programming languages I work with as a student of Mathematics.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Many other programming paradigms, like functional programming, take inspiration from Mathematics to address challenges related to concurrency and parallelism. Computing shifts towards utilizing multiple cores and distributed systems, which makes this increasingly important.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Getting Started with bld</title><link>https://foojayio.github.io/website/today/getting-started-with-bld/</link><pubDate>Mon, 15 Apr 2024 18:31:32 +0000</pubDate><guid>https://foojayio.github.io/website/today/getting-started-with-bld/</guid><description>&lt;p&gt;&lt;strong&gt;bld is an up-and-coming build tool for the Java ecosystem. This article guides you through getting set up to use it in your own projects.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="h2-0-what-is-bld"&gt;What is &lt;code&gt;bld&lt;/code&gt;?&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;bld&lt;/code&gt; is a build tool for the Java ecosystem.&lt;/p&gt;
&lt;h2 id="h2-1-why-use-bld"&gt;Why use &lt;code&gt;bld&lt;/code&gt;?&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;bld&lt;/code&gt; is a very simple build tool.&lt;/p&gt;
&lt;p&gt;Unlike its contemporaries &lt;code&gt;Maven&lt;/code&gt; and &lt;code&gt;Gradle&lt;/code&gt;, which concern themselves with abstract models of a project, lifecycles, declarative DSLs, and avoiding repeated work, &lt;code&gt;bld&lt;/code&gt; just runs Java code.&lt;/p&gt;</description></item><item><title>Localize applications with AI</title><link>https://foojayio.github.io/website/today/localize-apps-with-ai/</link><pubDate>Wed, 20 Mar 2024 08:50:29 +0000</pubDate><guid>https://foojayio.github.io/website/today/localize-apps-with-ai/</guid><description>&lt;p&gt;Read in other languages: &lt;a href="https://flounder.dev/zh/posts/localize-apps-with-ai/" target="_blank" rel="noopener noreferrer"&gt;中文&lt;/a&gt;
 &lt;a href="https://flounder.dev/es/posts/localize-apps-with-ai/" target="_blank" rel="noopener noreferrer"&gt;Español&lt;/a&gt;
 &lt;a href="https://flounder.dev/pt/posts/localize-apps-with-ai/" target="_blank" rel="noopener noreferrer"&gt;Português&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ever wondered if AI can localize an entire project? In this article, we follow the process end-to-end using the Spring Petclinic as an example. We prepare the project for localization, automate the translation using Python and DeepL, and analyze the results&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Whether you are thinking of localizing your project or just learning how to do that, AI might help you. It offers a cost-efficient entry point for experiments and automations.&lt;/p&gt;</description></item><item><title>Foojay Podcast #45: Welcome to Java 22</title><link>https://foojayio.github.io/website/today/foojay-podcast-45/</link><pubDate>Mon, 18 Mar 2024 10:31:53 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-45/</guid><description>&lt;p&gt;Last September, we got Java 21, a Long Term Support (LTS) version with eight new big features and seven incubator or preview features.&lt;/p&gt;
&lt;p&gt;Does Java 22 also bring that much innovation, or is it just a bug-fix release?&lt;/p&gt;
&lt;p&gt;And what needs to be done to get such a release published on time? Let&amp;rsquo;s find out&amp;hellip;&lt;/p&gt;
&lt;h2 id="h2-0-video"&gt;Video&lt;/h2&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/_NYuuoCQgO8?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-podcast-apps"&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>Achieving High Throughput Without Sacrificing Latency</title><link>https://foojayio.github.io/website/today/achieving-high-throughput-without-sacrificing-latency/</link><pubDate>Fri, 02 Feb 2024 09:39:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/achieving-high-throughput-without-sacrificing-latency/</guid><description>&lt;h2 id="h2-0-latency-and-throughput"&gt;Latency and Throughput&lt;/h2&gt;
&lt;p&gt;In discussions on performance, it is common to encounter the terms &lt;em&gt;Latency&lt;/em&gt; and &lt;em&gt;Throughput&lt;/em&gt; to describe the characteristics of a software component.&lt;/p&gt;
&lt;p&gt;We can define these terms as follows:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Latency&lt;/strong&gt; is a measure of the time taken for one thing to occur. For example, it could be the time taken to respond to a change in the price of a financial instrument that could influence the decision on whether to buy, or sell. It could be the time taken for a component monitoring some external device to respond to an indication of a change in the status of that device (like a change in temperature reported from a thermometer).&lt;/p&gt;</description></item><item><title>Foojay Podcast #40: Making Java Attractive for Beginners in Programming</title><link>https://foojayio.github.io/website/today/foojay-podcast-40/</link><pubDate>Mon, 15 Jan 2024 09:06:04 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-40/</guid><description>&lt;p&gt;&amp;ldquo;Public static void main string array&amp;rdquo; are the first words everyone sees when they start their first Java Hello World experiments.&lt;/p&gt;
&lt;p&gt;Some teachers explain them, while others say you will understand each word later.&lt;/p&gt;
&lt;p&gt;Is this a problem to attract more Java developers?&lt;/p&gt;
&lt;p&gt;And how can we make the Java language more attractive for newbies? Let&amp;rsquo;s ask some experts&amp;hellip;&lt;/p&gt;
&lt;h2 id="h2-0-video"&gt;Video&lt;/h2&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/XvUmhzoL_cY?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-podcast-apps"&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>Integrate executable Java code in your blog posts</title><link>https://foojayio.github.io/website/today/integrate-executable-java-code-in-your-blog-posts/</link><pubDate>Tue, 07 Nov 2023 14:49:57 +0000</pubDate><guid>https://foojayio.github.io/website/today/integrate-executable-java-code-in-your-blog-posts/</guid><description>&lt;p&gt;While developing the &lt;a href="https://foojayio.github.io/website/java-quick-start/"&gt;Foojay Quickstart Java Tutorial&lt;/a&gt;
, I was looking for an easy way to integrate runnable Java code examples into the Foojay pages and blogs. That&amp;rsquo;s when I discovered &lt;a href="https://www.jdoodle.com/" target="_blank" rel="noopener noreferrer"&gt;jdoodle.com&lt;/a&gt;
. I started by using their online editor, but with this blog I want to show you an even easier method to integrate runnable code here on Foojay.&lt;/p&gt;
&lt;h2 id="h2-0-integration-examples"&gt;Integration examples&lt;/h2&gt;
&lt;h3 id="h3-1-single-file-code"&gt;Single file code&lt;/h3&gt;
&lt;p&gt;To integrate &amp;ldquo;plain&amp;rdquo; Java code in your post or page, use the following syntax and add it as &amp;ldquo;Custom HTML&amp;rdquo; widget:&lt;/p&gt;</description></item><item><title>Java 21 - JEP 445 - Unnamed Classes and Instance Main Methods</title><link>https://foojayio.github.io/website/today/java-21-jep-445-unnamed-classes-and-instance-main-methods/</link><pubDate>Wed, 25 Oct 2023 09:25:48 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-21-jep-445-unnamed-classes-and-instance-main-methods/</guid><description>&lt;p&gt;Java 21, released on September 19th, 2023, brings many new features, 8 which are fully integrated and 7 which are incubator or preview.&lt;/p&gt;
&lt;p&gt;In this article, I want to highlight one of those preview features: &lt;a href="https://openjdk.org/jeps/445" target="_blank" rel="noopener noreferrer"&gt;Java Enhancement Proposal (JEP) 445: &amp;ldquo;Unnamed Classes and Instance Main Methods&amp;rdquo;&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It&amp;rsquo;s a preview feature, meaning you need extra flags to use it. The goal of JEP 445 is to make it easier to get started with Java, as it&amp;rsquo;s all about reducing the number of keywords when you write, for instance, your very first HelloWorld Java code.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Contributing to Foojay's Java Community Certification</title><link>https://foojayio.github.io/website/today/how-to-participate-in-the-foojay-community-certification-project/</link><pubDate>Wed, 04 Oct 2023 07:12:55 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-participate-in-the-foojay-community-certification-project/</guid><description>&lt;h3 id="h3-0-the-recent-announcement-of-foojay-s-intention-to-create-a-community-driven-certification-exam-for-java-software-development-has-spurred-a-lot-of-interest-this-article-explains-how-any-member-of-the-java-community-can-participate-in-the-creation-of-tasks-for-the-certification"&gt;&lt;em&gt;&lt;strong&gt;The recent announcement of Foojay&amp;rsquo;s intention to create a community-driven certification exam for Java software development has spurred a lot of interest. This article explains how any member of the Java community can participate in the creation of tasks for the certification.&lt;/strong&gt;&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;In the &lt;a href="https://foojayio.github.io/website/today/foojay-developer-certification-measure-skills/" title="previous article"&gt;previous article&lt;/a&gt;
 about the Foojay Developer Certification, we introduced the need for an objective way to measure the skills of Java developers. While there are many assessments and certifications that test the theoretical knowledge of a developer, very few measure the practical ability to write code, find and fix bugs and apply proper design principles. As a community, we have a large collection of de facto best practices and common sense about what makes a developer good at their job. That is why we need your help in creating a certificate that actually communicates a Developer&amp;rsquo;s skill.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Contributing to Open Source: Hacktoberfest</title><link>https://foojayio.github.io/website/today/contributing-to-open-source-hacktoberfest/</link><pubDate>Tue, 03 Oct 2023 09:07:45 +0000</pubDate><guid>https://foojayio.github.io/website/today/contributing-to-open-source-hacktoberfest/</guid><description>&lt;p&gt;Quite frequently when it comes to contributing to open source I hear questions/doubts such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;where do I start&lt;/li&gt;
&lt;li&gt;how do I find projects/issues&lt;/li&gt;
&lt;li&gt;can I help out as a newbie&lt;/li&gt;
&lt;li&gt;are there other ways I can contribute besides coding&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Which is why I&amp;rsquo;d love to share a little bit about Hacktoberfest, which is an event organized by DigitalOcean that runs through the whole month of October that is celebrating its tenth anniversary this year. It&amp;rsquo;s an event encourages people from all over the world, from all walks of life and all skill levels to contribute to open source projects.&lt;/p&gt;</description></item><item><title>Book Review: Get Your Hands Dirty on Clean Architecture</title><link>https://foojayio.github.io/website/today/book-review-get-your-hands-dirty-on-clean-architecture/</link><pubDate>Sat, 23 Sep 2023 12:00:31 +0000</pubDate><guid>https://foojayio.github.io/website/today/book-review-get-your-hands-dirty-on-clean-architecture/</guid><description>&lt;p&gt;&lt;strong&gt;I recently completed reading &amp;ldquo;Get Your Hands Dirty on Clean Architecture&amp;rdquo; authored by Tom Hombergs and I deem it an indispensable resource for developers aspiring to produce clean code and implement the Hexagonal Architecture. Consequently, I have resolved to compose a review to aid numerous individuals who harbor a fervent interest in technology!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Title:&lt;/strong&gt; Get Your Hands Dirty on Clean Architecture&lt;br&gt;
&lt;strong&gt;Author:&lt;/strong&gt; Tom Hombergs&lt;br&gt;
&lt;strong&gt;Genre:&lt;/strong&gt; Technical, Software Architecture&lt;/p&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/book-review-get-your-hands-dirty-on-clean-architecture/GetYourHandsDirtyOnCleanArchitecture.jpg" alt="CleanArchitecture" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;In the constantly changing realm of software development, architectural principles hold a crucial position in determining the triumph and sustainability of a project. The book authored by Tom Hombergs, titled &amp;ldquo;Get Your Hands Dirty on Clean Architecture: A hands-on guide to creating clean web applications with code examples in Java,&amp;rdquo; is an exceptional guide that illuminates the importance of clean architecture, while also offering practical perspectives on its implementation through the Java programming language.&lt;/p&gt;</description></item><item><title>Manage Different Java Versions on Your Machine with SDKMan!</title><link>https://foojayio.github.io/website/today/easily-manage-different-java-versions-on-your-machine-with-sdkman/</link><pubDate>Wed, 20 Sep 2023 07:05:16 +0000</pubDate><guid>https://foojayio.github.io/website/today/easily-manage-different-java-versions-on-your-machine-with-sdkman/</guid><description>&lt;p&gt;&lt;strong&gt;So, you&amp;rsquo;re a Java developer, or maybe you&amp;rsquo;re aspiring to be one. Either way, you&amp;rsquo;ve probably faced the challenge of managing multiple versions of Java on your machine. One project requires Java 8, but another needs Java 11, yet another requires Java 17. The open-source library you&amp;rsquo;re keen on contributing to needs yet another version. What do you do? You start juggling environment variables, and before you know it, your system is a tangled mess of configurations. Not fun, right?&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>"Transitioning to Java": My First Book!</title><link>https://foojayio.github.io/website/today/transitioning-to-java-my-first-book/</link><pubDate>Wed, 24 May 2023 08:01:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/transitioning-to-java-my-first-book/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/transitioning-to-java-my-first-book/BookCover-407x510.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;When I retired from the classroom in 2021, I had no intention of sitting on a rocking chair on my front porch.&lt;/p&gt;
&lt;p&gt;I looked for speaking opportunities, became a member of the JCP EC, and continued thinking about ways to enhance Java teaching.&lt;/p&gt;
&lt;p&gt;I also wanted to write a book. I approached a number of publishers with my idea for a beginner&amp;rsquo;s book. I even wrote a sample chapter and publsihed it on my blog, &lt;a href="https://www.omnijava.com/2021/10/20/java-for-beginners-my-unsuccessful-book-proposal/" target="_blank" rel="noopener noreferrer"&gt;https://www.omnijava.com/2021/10/20/java-for-beginners-my-unsuccessful-book-proposal/&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Foojay Developer Certification: Measure Skills!</title><link>https://foojayio.github.io/website/today/foojay-developer-certification-measure-skills/</link><pubDate>Tue, 23 May 2023 16:32:31 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-developer-certification-measure-skills/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Learn the why and how of a group of enthusiastic people implementing a new sort of developer certification that objectively measures dev skills. We also invite you to join our initiative if you&amp;rsquo;re interested via #certification &lt;a href="https://bit.ly/join-foojay-slack" target="_blank" rel="noopener noreferrer"&gt;on the Foojay slack&lt;/a&gt;
.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a lot of debate about what defines a &amp;lsquo;good&amp;rsquo; developer. Of course, there are different dimensions to start with. Perhaps you can say there are two main ones: soft and technical skills. Soft skills include collaboration skills, communication, organizational sensitivity, personal leadership and so on.&lt;/p&gt;</description></item><item><title>Hidden Beauties of Java Enums</title><link>https://foojayio.github.io/website/today/hidden-beauties-of-java-enums/</link><pubDate>Tue, 11 Apr 2023 07:02:08 +0000</pubDate><guid>https://foojayio.github.io/website/today/hidden-beauties-of-java-enums/</guid><description>&lt;p&gt;Let&amp;rsquo;s take a look at the power and beauty of what Java Enums can provide&amp;hellip;&lt;/p&gt;
&lt;p&gt;I also created a video describing the same topics based on this article, so you can follow along combining both the video and this post.&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/U09ZQ3kjuqM?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-0-what-is-an-enum"&gt;What is an Enum?&lt;/h2&gt;
&lt;p&gt;Enums are the preferred way to define fixed values you want to use in your code. They are a special type of Java class and contain a group of unchangeable variables.&lt;/p&gt;</description></item><item><title>Getting started with OpenAPI Generators : tips and tricks</title><link>https://foojayio.github.io/website/today/getting-started-with-openapi-generators-tips-tricks/</link><pubDate>Tue, 28 Mar 2023 15:50:14 +0000</pubDate><guid>https://foojayio.github.io/website/today/getting-started-with-openapi-generators-tips-tricks/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;TL;DR: In this article, I&amp;rsquo;m sharing some tips and tricks on how to get productive creating OpenAPI generators.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Lately, I&amp;rsquo;ve started dabbling more and more with &lt;a href="http://https://github.com/OAI/OpenAPI-Specification" title="OpenAPI" target="_blank" rel="noopener noreferrer"&gt;OpenAPI&lt;/a&gt;
. The OpenAPI specification is a super useful way to describe the API that you&amp;rsquo;re exposing to your users, both internally and externally.&lt;/p&gt;
&lt;p&gt;Some of you may also have heard about those under the name of &amp;ldquo;Swagger files&amp;rdquo;. They&amp;rsquo;re both kinda the same in the common speak, though OpenAPI is an open standard (lead with the OpenAPI Initiative) and Swagger is a set of tools built by a company (&lt;a href="https://smartbear.com/" title="SmartBear" target="_blank" rel="noopener noreferrer"&gt;SmartBear&lt;/a&gt;
).&lt;/p&gt;</description></item><item><title>Optional in Java: A Swiss Army Knife for Handling Nulls and Improving Code Quality</title><link>https://foojayio.github.io/website/today/optional-in-java-a-swiss-army-knife-for-handling-nulls-and-improving-code-quality/</link><pubDate>Wed, 01 Feb 2023 05:29:38 +0000</pubDate><guid>https://foojayio.github.io/website/today/optional-in-java-a-swiss-army-knife-for-handling-nulls-and-improving-code-quality/</guid><description>&lt;p&gt;In Java, dealing with null values can be a real headache. Nulls can cause all sorts of problems in your code, from NullPointerExceptions to convoluted if statements and error-prone logic. Fortunately, Java 8 introduced the Optional class, which offers a simple and powerful way to handle nulls and improve code quality. Optional is a container object that may or may not contain a non-null value and provides a range of practical methods for working with its contents. In this article, we&amp;rsquo;ll explore the many use cases of Optional in Java and show you how to use this powerful class to write cleaner, more expressive, and more resilient code.&lt;/p&gt;</description></item><item><title>New Section Added to Foojay.io: Java Quick Start</title><link>https://foojayio.github.io/website/today/new-section-added-to-foojay-io-java-quick-start/</link><pubDate>Mon, 09 Jan 2023 09:31:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/new-section-added-to-foojay-io-java-quick-start/</guid><description>&lt;p&gt;Foojay.io aims to be the starting point for &amp;ldquo;all-things OpenJDK,&amp;rdquo; but during one of my morning walks the idea struck me that this site really needs complete beginner materials, too.&lt;/p&gt;
&lt;p&gt;As we want to spread the love for OpenJDK, i.e., Java, Kotlin, and other OpenJDK languages, the JVM, and all related technologies, we were missing an important audience: someone who is interested in an OpenJDK language, such as Java, but has no experience with it yet, and ends up on Foojay.io.&lt;/p&gt;</description></item><item><title>7 Reasons Why, After 26 Years, Java Still Makes Sense!</title><link>https://foojayio.github.io/website/today/7-reasons-why-after-26-years-java-still-makes-sense/</link><pubDate>Tue, 15 Mar 2022 08:02:48 +0000</pubDate><guid>https://foojayio.github.io/website/today/7-reasons-why-after-26-years-java-still-makes-sense/</guid><description>&lt;p&gt;Java has been and continues to be the most popular language over the last two decades. It has always been in the top 5 in the &lt;a href="https://www.tiobe.com/tiobe-index/" target="_blank" rel="noopener noreferrer"&gt;TIOBE index&lt;/a&gt;
 in terms of popularity. Besides popularity, Java is especially dominant in the enterprise world.&lt;/p&gt;
&lt;p&gt;However, in recent years, with the popularity of microservices and data science, other programming languages, such as Python, have gained in popularity. Some developers may view this as concerning news, as it may indicate the decline of Java, while others would argue differently.&lt;/p&gt;</description></item><item><title>Controlling Electronics with JBang on the Raspberry Pi</title><link>https://foojayio.github.io/website/today/controlling-electronics-with-jbang-on-the-raspberry-pi/</link><pubDate>Mon, 21 Feb 2022 10:08:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/controlling-electronics-with-jbang-on-the-raspberry-pi/</guid><description>&lt;p&gt;Want to get started with Java programming on the Raspberry Pi?&lt;/p&gt;
&lt;p&gt;JBang is a great way to create your first program to control electronic components connected to the GPIO pins.&lt;/p&gt;
&lt;h2 id="h2-0-what-is-jbang"&gt;What is JBang?&lt;/h2&gt;
&lt;p&gt;As described on their &lt;a href="https://www.jbang.dev/" target="_blank" rel="noopener noreferrer"&gt;website&lt;/a&gt;
:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;JBang lets Students, Educators and Professional Developers create, edit and run self-contained source-only Java programs with unprecedented ease.&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Want to learn, explore or use Java instantly without setup?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Do you like Java but use python, groovy, kotlin or similar languages for scripts, experimentation and exploration?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Ever wanted to just be able to run Java from anywhere without any or very minimal setup?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Ever tried out Java 11+ support for running .java files directly in your shell but felt it was a bit too cumbersome?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;JBang lets you do all this!&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Getting Started with VS Code for Java Developers</title><link>https://foojayio.github.io/website/today/welcome-to-vs-code-for-java/</link><pubDate>Mon, 08 Feb 2021 08:10:07 +0000</pubDate><guid>https://foojayio.github.io/website/today/welcome-to-vs-code-for-java/</guid><description>&lt;p&gt;VS Code, a.k.a. Visual Studio Code, is a modern editor available for Windows, macOS and Linux. It supports many languages and runtimes including Java. Besides editing features like IntelliSense, Code Action, etc., developers and students also like its lightweight, modern UI, extensibility, and the comprehensive support of remote development. Also, it&amp;rsquo;s free. You can refer to &lt;a href="https://code.visualstudio.com/docs" title="VS Code Overview" target="_blank" rel="noopener noreferrer"&gt;VS Code Overview&lt;/a&gt;
 for more details.&lt;/p&gt;
&lt;p&gt;On Java, thanks to the investments communities and Microsoft have been constantly making, VS Code has been used by more and more Java developers to edit, build, run, debug, test and deploy their code and manage their projects, and by more and more students and educators to learn and teach Java language.&lt;/p&gt;</description></item><item><title>Getting Started with a Simple Service with Spring Boot</title><link>https://foojayio.github.io/website/today/a-simple-service-with-spring-boot/</link><pubDate>Tue, 22 Sep 2020 12:59:42 +0000</pubDate><guid>https://foojayio.github.io/website/today/a-simple-service-with-spring-boot/</guid><description>&lt;p&gt;In this post, I will demonstrate how to create a simple Web Service using Spring Boot. This framework makes it almost effortless to develop web services, so long as the appropriate dependencies are in place.&lt;/p&gt;
&lt;p&gt;In this example, I will create a Web Service that will read the current temperature from a file and make it available to clients via a RESTful endpoint.&lt;/p&gt;
&lt;h4 id="1-use-the-spring-intializr"&gt;1. Use the Spring Intializr&lt;/h4&gt;
&lt;p&gt;The Spring Initializr helps one to choose the dependencies that are required for production a particular solution.&lt;/p&gt;</description></item></channel></rss>