<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>JDK21 on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/category/jdk21/</link><description>Recent content in JDK21 on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 26 Jun 2026 07:28:00 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/category/jdk21/index.xml" rel="self" type="application/rss+xml"/><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>How to Use Java as a Scripting Language</title><link>https://foojayio.github.io/website/today/java-for-scripting/</link><pubDate>Mon, 23 Mar 2026 10:00:19 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-for-scripting/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/java-for-scripting/java-script-cover-700x467.png" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;h2 id="h2-0-the-scripting-dilemma"&gt;The Scripting Dilemma&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re like me, as a Java developer, you struggle to remember bash or python syntax for quick scripts.&lt;/p&gt;
&lt;p&gt;You end up &amp;ldquo;vibe coding&amp;rdquo; it, then struggle again when you need to adapt it. If only you could write it in Java!&lt;/p&gt;
&lt;p&gt;You might say &amp;ldquo;Java is not for scripting&amp;rdquo; and &amp;ldquo;I don&amp;rsquo;t want maven or Gradle&amp;rdquo;.Modern Java has quietly eliminated the traditional barriers that made it unsuitable for scripting.With instant execution, shebang support, and zero-setup automation, Java has evolved into a lean scripting language. Write precise, maintainable code without the &amp;ldquo;vibe coding&amp;rdquo; that comes with unfamiliar languages.&lt;/p&gt;</description></item><item><title>foojay – a place for friends of OpenJDKJava 21+ on Raspberry Pi Zero 2 is Back In Business</title><link>https://foojayio.github.io/website/today/java-21-on-raspberry-pi-zero-2-is-back-in-business/</link><pubDate>Thu, 04 Dec 2025 08:46:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-21-on-raspberry-pi-zero-2-is-back-in-business/</guid><description>&lt;p&gt;As described before on &lt;a href="https://webtechie.be/post/2025-06-25-java-21-not-working-on-zero-2/" target="_blank" rel="noopener noreferrer"&gt;Java 21+ Not Working on Raspberry Pi Zero 2&lt;/a&gt;
, a problem appeared to execute Java code on the Raspberry Pi Zero 2 with OpenJDK 21 or higher. Reason: in OpenJDK 21 the Just-In-Time (JIT) compiler has been improved, but this change doesn&amp;rsquo;t work correctly on the ARM Cortex-A53 processor as used in the Zero 2. It&amp;rsquo;s another type of processor compared to, for instance, the Raspberry Pi 4 (Cortex-A72) and 5 (Cortex-A76).&lt;/p&gt;</description></item><item><title>The Visitor Pattern - 'Revisited' using Data Oriented Programming techniques</title><link>https://foojayio.github.io/website/today/the-visitor-pattern-revisited-using-data-oriented-programming-techniques/</link><pubDate>Wed, 26 Nov 2025 10:38:43 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-visitor-pattern-revisited-using-data-oriented-programming-techniques/</guid><description>&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Design patterns are great, they standardize solutions for common programming problems so you don&amp;rsquo;t shoot yourself in the foot or reinvent the wheel.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;However, some might argue that some design patterns only exist in a programming language because that language lacks a way to elegantly and efficiently express it in its syntax.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For example, the &lt;a href="https://en.wikipedia.org/wiki/Strategy_pattern" target="_blank" rel="noopener noreferrer"&gt;Strategy pattern&lt;/a&gt;
 is a design pattern that enables selecting algorithms at runtime. Taking the example of different &lt;em&gt;strategies&lt;/em&gt; of tax calculation, let&amp;rsquo;s see what an implementation looked like &lt;em&gt;before&lt;/em&gt; java 8:&lt;/p&gt;</description></item><item><title>Research: Measuring Energy Consumption in Programming Languages for AI Applications</title><link>https://foojayio.github.io/website/today/research-measuring-energy-consumption-in-programming-languages-for-ai-applications/</link><pubDate>Mon, 15 Sep 2025 07:03:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/research-measuring-energy-consumption-in-programming-languages-for-ai-applications/</guid><description>&lt;p&gt;&lt;strong&gt;Decades ago, I contributed to a very interesting project called &lt;a href="https://sunspotdev.org/#" title="SunSPOT " target="_blank" rel="noopener noreferrer"&gt;SunSPOT&lt;/a&gt;
at SUN Microsystems. It was a small device with wireless connectivity, built-in sensors, running on Java (compatible with runtime 1.6), and powered by battery. It enabled the design of small applications and the connection of additional hardware, or simply the utilization of available sensors. Later, together with Markus Hirt, we created the &lt;a href="https://github.com/Robo4J/robo4j" title="Robo4j framework" target="_blank" rel="noopener noreferrer"&gt;Robo4j framework&lt;/a&gt;
. A small and lightweight Java framework that enables rapid assembly of robots or other IoT systems (JDK 21+). In Robo4j, we primarily used the&lt;a href="https://www.pi4j.com/blog/" title=" Pi4j project" target="_blank" rel="noopener noreferrer"&gt;Pi4j project&lt;/a&gt;
 for handling I/O operations on the Raspberry Pi platform with drivers created for specific hardware.&lt;/strong&gt;&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>How to send prompts in bulk with Spring AI and Virtual Threads</title><link>https://foojayio.github.io/website/today/how-to-send-prompts-in-bulk-with-spring-ai-and-java-virtual-threads/</link><pubDate>Wed, 21 May 2025 09:18:45 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-send-prompts-in-bulk-with-spring-ai-and-java-virtual-threads/</guid><description>&lt;blockquote&gt;
&lt;p&gt;TL;DR: You&amp;rsquo;re building an AI-powered app that needs to send lots of prompts to OpenAI.&lt;/p&gt;
&lt;p&gt;Instead of sending them one by one, you want to do it in bulk &amp;mdash; efficiently and safely.&lt;/p&gt;
&lt;p&gt;This is how you can use Spring AI with Java Virtual Threads to process hundreds of prompts in parallel.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When calling LLM APIs like OpenAI, you&amp;rsquo;re dealing with a high-latency, network-bound task. Normally, doing that in a loop slows you down and blocks threads. But with Spring AI and Java 21 Virtual Threads, you can fire off hundreds of requests in parallel without killing your app.&lt;/p&gt;</description></item><item><title>Project Loom: Structured Concurrency - Java</title><link>https://foojayio.github.io/website/today/project-loom-structured-concurrency-java/</link><pubDate>Wed, 29 Jan 2025 12:12:38 +0000</pubDate><guid>https://foojayio.github.io/website/today/project-loom-structured-concurrency-java/</guid><description>&lt;p&gt;In today&amp;rsquo;s era of cloud computing, where high-performance infrastructure is readily available, developers face a complex challenge in achieving efficient concurrency.&lt;/p&gt;
&lt;p&gt;While modern technological advancements have brought us closer to solving these challenges, we must adopt a thoughtful, incremental approach to concurrency.&lt;/p&gt;
&lt;p&gt;This principle holds especially true as we strive to design scalable, reliable, and easy-to-maintain systems.&lt;/p&gt;
&lt;p&gt;One such advancement in this domain is &lt;em&gt;structured concurrency&lt;/em&gt;, a paradigm that simplifies concurrent programming by bringing order and predictability to task management.&lt;/p&gt;</description></item><item><title>AI-powered Chat Application using watsonx.ai and Spring AI</title><link>https://foojayio.github.io/website/today/ai-powered-chat-application-using-ibm-watsonx-ai-and-spring-ai/</link><pubDate>Fri, 03 Jan 2025 08:31:51 +0000</pubDate><guid>https://foojayio.github.io/website/today/ai-powered-chat-application-using-ibm-watsonx-ai-and-spring-ai/</guid><description>&lt;p&gt;&lt;strong&gt;Generative Artificial Intelligence (Gen AI) disrupted enterprises with the introduction of GPT-4 foundation model by Open AI in the late 2022 to early 2023 triggering big tech to release their own Gen AI platform and foundation models. Among them are Google, Microsoft, AWS and IBM. In this article, we will deal with the Gen AI platform and model of IBM called watsonx and integrate it with Spring AI to create a custom chat application using the IBM Granite Foundation Model.&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>JUG PH: 1-Day Modern Java Development Bootcamp</title><link>https://foojayio.github.io/website/today/jug-ph-1-day-modern-java-development-bootcamp/</link><pubDate>Fri, 02 Aug 2024 07:53:16 +0000</pubDate><guid>https://foojayio.github.io/website/today/jug-ph-1-day-modern-java-development-bootcamp/</guid><description>&lt;p&gt;&lt;strong&gt;A 1-Day Modern Java Bootcamp for students, early professionals and career shifters with minimal Java programming or general programming experience.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Java User Group Philippines (JUG PH) in partnership with Developer Connect (DEVCON) Philippines/Manila executed its 1st Modern Java Development Bootcamp.&lt;/p&gt;
&lt;p&gt;The bootcamp was organized by the JUG Leaders and Volunteers and DEVCON Volunteers.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/jug-ph-1-day-modern-java-development-bootcamp/java-bootcamp-2024-1-510x510.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;h2 id="h2-0-registration"&gt;Registration&lt;/h2&gt;
&lt;p&gt;The bootcamp received an overwhelming &lt;strong&gt;110+ registrations&lt;/strong&gt; but 50 was only accomodated due to the slots of the venue.&lt;/p&gt;</description></item><item><title>Structured Concurrency is More Than ShutdownOnFailure</title><link>https://foojayio.github.io/website/today/structured-concurrency-is-more-than-shutdownonfailure/</link><pubDate>Thu, 11 Jul 2024 16:34:52 +0000</pubDate><guid>https://foojayio.github.io/website/today/structured-concurrency-is-more-than-shutdownonfailure/</guid><description>&lt;p&gt;&lt;strong&gt;Since Java 21, structured concurrency has been added as a preview feature. Structured concurrency is a way to manage sub-tasks that are run in parallel within a given scope.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;ve ever seen a presentation about &lt;a href="https://docs.oracle.com/en/java/javase/21/core/structured-concurrency.html" target="_blank" rel="noopener noreferrer"&gt;structured concurrency&lt;/a&gt;
, you&amp;rsquo;ve probably seen the use of the &lt;code&gt;ShutdownOnSuccess&lt;/code&gt; or &lt;code&gt;ShutdownOnFailure&lt;/code&gt; classes.&lt;/p&gt;
&lt;p&gt;These classes will stop the scope and the still running sub-tasks within that scope when one of the sub-task succeeds or fails.&lt;/p&gt;</description></item><item><title>Let's Replace the synchronized Keyword</title><link>https://foojayio.github.io/website/today/lets-replace-the-synchronized-keyword/</link><pubDate>Tue, 07 May 2024 04:26:29 +0000</pubDate><guid>https://foojayio.github.io/website/today/lets-replace-the-synchronized-keyword/</guid><description>&lt;p&gt;&lt;strong&gt;Let&amp;rsquo;s see in this article different ways to replace the synchronized keyword to make our code more virtual threads friendly.&lt;/strong&gt;&lt;br&gt;
&lt;img src="https://foojayio.github.io/website/today/lets-replace-the-synchronized-keyword/synchronized-loc.png" alt="" loading="lazy"&gt;
 Lines of code of the different solutions discussed in this article&lt;/p&gt;
&lt;h2 id="h2-0-synchronized-and-pinning-threads"&gt;Synchronized and pinning threads&lt;/h2&gt;
&lt;p&gt;Since Java 21, we can enjoy virtual threads and have more than 1 million threads in Java.&lt;/p&gt;
&lt;p&gt;But it has a condition, the virtual thread shouldn&amp;rsquo;t be pinned to the OS thread.&lt;/p&gt;
&lt;p&gt;Pinning means that a virtual thread is blocking the OS thread from being used by any other virtual threads.&lt;/p&gt;</description></item><item><title>Ensuring the right usage of the Java 21 new features</title><link>https://foojayio.github.io/website/today/ensuring-the-right-usage-of-java-21-new-features/</link><pubDate>Sun, 14 Apr 2024 16:16:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/ensuring-the-right-usage-of-java-21-new-features/</guid><description>&lt;p&gt;&lt;strong&gt;Last September 2023 a new version of Java was released as the latest LTS (Long Time Support). This 21st version &lt;a href="https://www.sonarsource.com/blog/the-new-jdk-lts-is-out-long-live-jdk-21/" title="brought lots of new features" target="_blank" rel="noopener noreferrer"&gt;brought lots of new features&lt;/a&gt;
 that will improve performance and clarity in our code base.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;But taking advantage of these changes and new features, which we are not used to including in our code, can be a tough task. Also, it can lead to improper use or poor uptake, bugs, or basically not taking full advantage of new improvements.&lt;/p&gt;</description></item><item><title>foojay – 12 Lessons Learned From Doing The 1BRC Challenge</title><link>https://foojayio.github.io/website/today/12-lessons-learned-from-doing-the-one-billion-row-challenge/</link><pubDate>Thu, 22 Feb 2024 10:44:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/12-lessons-learned-from-doing-the-one-billion-row-challenge/</guid><description>&lt;p&gt;The One Billion Row Challenge or 1BRC or 1️⃣🐝🏎 was a challenge to read a CSV file of one billion rows with &amp;ldquo;station name;temperature&amp;rdquo; data and compute the min/average/max temperature per weather station as fast as possible.&lt;/p&gt;
&lt;p&gt;If you want to know what is the fastest algorithm, you can go the the &lt;a href="https://github.com/gunnarmorling/1brc" target="_blank" rel="noopener noreferrer"&gt;1BRC page&lt;/a&gt;
. But the real answer is &amp;ldquo;&lt;strong&gt;it depends&lt;/strong&gt;&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;It depends:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The machine you&amp;rsquo;re running it on&lt;/li&gt;
&lt;li&gt;How far are you ready to use hacks in your code&lt;/li&gt;
&lt;li&gt;The JVM&lt;/li&gt;
&lt;li&gt;The data in the file&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-0-it-works-on-my-machine"&gt;It works on my machine&lt;/h2&gt;
&lt;p&gt;or to be more precise, it&amp;rsquo;s faster on my machine.&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>SpringBoot 3.2 + CRaC</title><link>https://foojayio.github.io/website/today/springboot-3-2-crac/</link><pubDate>Tue, 28 Nov 2023 13:04:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/springboot-3-2-crac/</guid><description>&lt;p&gt;Last week Spring 6.1 and &lt;a href="https://spring.io/blog/2023/11/23/spring-boot-3-2-0-available-now" title="SpringBoot 3.2" target="_blank" rel="noopener noreferrer"&gt;SpringBoot 3.2&lt;/a&gt;
 were released and they both came with full support for CRaC (Coordinated Restore at Checkpoint).&lt;/p&gt;
&lt;p&gt;If you want to learn more about CRaC, feel free to read about it &lt;a href="https://docs.azul.com/core/crac/crac-introduction" title="here" target="_blank" rel="noopener noreferrer"&gt;here&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CRaC is an &lt;a href="https://wiki.openjdk.org/display/crac" title="OpenJDK project" target="_blank" rel="noopener noreferrer"&gt;OpenJDK project&lt;/a&gt;
 that can &amp;ldquo;snapshot&amp;rdquo; a running JVM (Java Virtual Machine) and store its state, including your application, to disk. Then, at another point in time, you can restore the JVM from the saved checkpoint back to memory. With this, one can start an application, warm it up, and create a checkpoint. Restoring from the saved checkpoint back to memory mainly relies on disk I/O, which means it is really fast (in the range of milliseconds).&lt;/strong&gt;&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>Start using Java 21 in your apps on Open Liberty 23.0.0.10</title><link>https://foojayio.github.io/website/today/start-using-java-21/</link><pubDate>Mon, 23 Oct 2023 08:39:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/start-using-java-21/</guid><description>&lt;p&gt;&lt;strong&gt;Java 21 is finally here! Java 21 is the first long-term support (LTS) release since Java 17 was released two years ago. It offers some new functionality and changes that you&amp;rsquo;ll want to check out for yourself. In particular, there&amp;rsquo;s the introduction of virtual threads. And you can try it all out now on Open Liberty 23.0.0.10.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://openliberty.io/?utm_source=foojay&amp;amp;utm_medium=news&amp;amp;utm_content=java21" target="_blank" rel="noopener noreferrer"&gt;Open Liberty&lt;/a&gt;
 is a developer-friendly, fast, modular Java application runtime for the cloud. The Open Liberty project began six years ago when &lt;a href="https://openliberty.io/blog/2017/09/19/open-sourcing-liberty.html?utm_source=foojay&amp;amp;utm_medium=news&amp;amp;utm_content=java21" target="_blank" rel="noopener noreferrer"&gt;IBM open-sourced&lt;/a&gt;
 the Liberty Java runtime. IBM&amp;rsquo;s commercial Java runtime, WebSphere Liberty, is built from the Open Liberty project. You can use Open Liberty for free though.&lt;/p&gt;</description></item><item><title>The Files in JDK 21</title><link>https://foojayio.github.io/website/today/the-files-in-jdk-21/</link><pubDate>Tue, 17 Oct 2023 07:21:32 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-files-in-jdk-21/</guid><description>&lt;p&gt;As Java developers, we all have it installed on our computer: the Java Development Kit, also known as the JDK. I remember putting the first version on a few floppy disks back in 1995. Since then it has grown multiple times. In this article, we&amp;rsquo;ll explore the files of the JDK.&lt;/p&gt;
&lt;p&gt;For this article, Eclipse Temurin &lt;a href="https://foojayio.github.io/website/today/java-21-is-available-today-and-its-quite-the-update/"&gt;JDK 21&lt;/a&gt;
 for Windows has been used.&lt;/p&gt;
&lt;h2 id="h2-0-files"&gt;Files&lt;/h2&gt;
&lt;h3 id="h3-1-the-statistics"&gt;The statistics&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Total size: 325 MB&lt;/li&gt;
&lt;li&gt;Number of files: 572&lt;/li&gt;
&lt;li&gt;Number of files including in zip files: 47,629&lt;/li&gt;
&lt;li&gt;Largest file: lib/modules with 134 MB&lt;/li&gt;
&lt;li&gt;Number of class files: 27,929 (was 27,064 in JDK 20)&lt;/li&gt;
&lt;li&gt;Number of Java files (in src.zip): 15,404 (was 15,044 in JDK 20)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/the-files-in-jdk-21/jdk21-all-files.png" alt="" loading="lazy"&gt;
&lt;/p&gt;</description></item><item><title>Foojay Podcast #31: Report of Devoxx 23 in Belgium</title><link>https://foojayio.github.io/website/today/foojay-podcast-31/</link><pubDate>Mon, 16 Oct 2023 07:16:57 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-31/</guid><description>&lt;p&gt;The first week of October, the 20th edition of Devoxx took place in Antwerp, Belgium.&lt;/p&gt;
&lt;p&gt;Over 3000 Java developers, speakers, and enthusiasts gathered to share their knowledge and learn from each other.&lt;/p&gt;
&lt;p&gt;I got the opportunity to walk around with a microphone and talk to visitors and speakers.&lt;/p&gt;
&lt;p&gt;Not all of them, as there were just too many people and too many exciting sessions happening simultaneously.&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/VJJmoiP7e-I?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-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>JavaFX Links of September 2023</title><link>https://foojayio.github.io/website/today/javafx-links-of-september-2023/</link><pubDate>Sat, 30 Sep 2023 15:21:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/javafx-links-of-september-2023/</guid><description>&lt;p&gt;This month OpenJDK and OpenJDK 21 got officially released, so links to the new downloads but also to the early access builds of the next one!&lt;/p&gt;
&lt;p&gt;Here is the overview of the JavaFX LinksOfTheWeek that got published on &lt;a href="https://www.jfx-central.com/" target="_blank" rel="noopener noreferrer"&gt;jfx-central.com&lt;/a&gt;
 during September.&lt;/p&gt;
&lt;h2 id="h2-0-core"&gt;Core&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://techhub.social/@gluonhq/111092296190292324" target="_blank" rel="noopener noreferrer"&gt;Announcement by &lt;strong&gt;GluonHQ&lt;/strong&gt;&lt;/a&gt;
: &amp;ldquo;We&amp;rsquo;re proud to announce JavaFX 21 GA. Download the SDK/jmods from &lt;a href="https://gluonhq.com/products/javafx/" target="_blank" rel="noopener noreferrer"&gt;gluonhq.com/products/javafx/&lt;/a&gt;
 or get the artifacts from Maven central. Release notes with many fixes and enhancements at &lt;a href="https://gluonhq.com/products/javafx/openjfx-21-release-notes/" target="_blank" rel="noopener noreferrer"&gt;gluonhq.com/products/javafx/openjfx-21-release-notes&lt;/a&gt;
. Great work by a growing number of contributors!&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/openjdk/jfx/blob/master/doc-files/release-notes-21.md" target="_blank" rel="noopener noreferrer"&gt;Release notes by &lt;strong&gt;Kevin Rushforth&lt;/strong&gt; on GitHub&lt;/a&gt;
.&lt;/li&gt;
&lt;li&gt;Builds are available from java.net:
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://download.java.net/java/GA/javafx21/69ca518c413e4df09f6be747a2400cf6/31/GPL/openjfx-21_linux-x64_bin-sdk.tar.gz" target="_blank" rel="noopener noreferrer"&gt;Linux / x64&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://download.java.net/java/GA/javafx21/69ca518c413e4df09f6be747a2400cf6/31/GPL/openjfx-21_macos-aarch64_bin-sdk.tar.gz" target="_blank" rel="noopener noreferrer"&gt;macOS / AArch64&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://download.java.net/java/GA/javafx21/69ca518c413e4df09f6be747a2400cf6/31/GPL/openjfx-21_macos-x64_bin-sdk.tar.gz" target="_blank" rel="noopener noreferrer"&gt;macOS / x64&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://download.java.net/java/GA/javafx21/69ca518c413e4df09f6be747a2400cf6/31/GPL/openjfx-21_windows-x64_bin-sdk.zip" target="_blank" rel="noopener noreferrer"&gt;Windows / x64&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;And on the &lt;a href="https://gluonhq.com/products/javafx/" target="_blank" rel="noopener noreferrer"&gt;Gluon website&lt;/a&gt;
.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@openjdk/111109621684880527" target="_blank" rel="noopener noreferrer"&gt;EA (early access) builds of JavaFX 22&lt;/a&gt;
!
&lt;ul&gt;
&lt;li&gt;JavaFX 22 Early-Access Builds are available here:&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jdk.java.net/javafx22/" target="_blank" rel="noopener noreferrer"&gt;jdk.java.net/javafx22&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gluonhq.com/products/javafx/" target="_blank" rel="noopener noreferrer"&gt;gluonhq.com/products/javafx&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bugs.openjdk.org/issues/?jql=project%20%3D%20JDK%20AND%20fixversion%20%3D%20jfx22%20and%20component%20%3d%20javafx%20and%20%22resolved%20in%20build%22%20%3d%20b10%20order%20by%20component%2C%20subcomponent" target="_blank" rel="noopener noreferrer"&gt;Issues addressed in this build&lt;/a&gt;
.&lt;/li&gt;
&lt;li&gt;The proposed schedule for JavaFX 22:&lt;/li&gt;
&lt;li&gt;RDP1: Jan 11, 2024 (aka &amp;ldquo;feature freeze&amp;rdquo;)&lt;/li&gt;
&lt;li&gt;RDP2: Feb 1, 2024&lt;/li&gt;
&lt;li&gt;Freeze: Feb 29, 2024&lt;/li&gt;
&lt;li&gt;GA: Mar 19, 2024&lt;/li&gt;
&lt;li&gt;JavaFX 22-ea is designed to work with JDK 22-ea, but it is known to work with JDK 17 and later versions.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/dlemmermann/status/1707024018232983615" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Dirk Lemmermann&lt;/strong&gt; is experimenting with 22-ea+9&lt;/a&gt;
: &amp;ldquo;Showing correct bold text on macOS and much lower initial memory consumption in our CRM software&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@johanvos/111121272095237602" target="_blank" rel="noopener noreferrer"&gt;A message by &lt;strong&gt;Johan Vos&lt;/strong&gt;&lt;/a&gt;
: &amp;ldquo;One of the great (non-technical) things about JavaFX is that it is not owned by a single company that tries to use it for its business strategy (e.g. like Google does with most of their &amp;ldquo;free&amp;rdquo; stuff). It is really the wide JavaFX ecosystem that drives JavaFX forward, and that allows for pure and honest innovation.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-1-applications"&gt;Applications&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/OnkelStipe/status/1696236782885474494" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Onkel Stipe&lt;/strong&gt; shared a screenshot of SoundLab&lt;/a&gt;
: &amp;ldquo;I developed it to investigate in generating realtime virtual analog sounds. The Oscilloscope feels quite analog. It also has a realtime spectrum and a view called &amp;ldquo;klangteppich&amp;rdquo;, which nicely imitates the spectral view of audacity.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/WhiteWoodCity/status/1694998831480614954" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;WhiteWoodCity&lt;/strong&gt; is upgrading dillon-boot-fx, a Permission Management System UI&lt;/a&gt;
, to JDK 17+ and also providing jigsaw support.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/makingthematrix/status/1695108624400482636" target="_blank" rel="noopener noreferrer"&gt;Fx Calculator by &lt;strong&gt;Maciek Gorywoda&lt;/strong&gt; is now available at Google Play Store&lt;/a&gt;
! &amp;ldquo;Written in Scala 3, JavaFX, and built with GraalVM Native Image&amp;rdquo;&lt;/li&gt;
&lt;li&gt;The next version of JDKMon, the tool to keep your Java installations up-to-date, will now also show you the dates of the next OpenJDK update and the next OpenJDK release, &lt;a href="https://mastodon.social/@hansolo_/111028113635396197" target="_blank" rel="noopener noreferrer"&gt;says &lt;strong&gt;Gerrit Grunwald&lt;/strong&gt;&lt;/a&gt;
.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://foojay.social/@jabref/110994245236386244" target="_blank" rel="noopener noreferrer"&gt;JabRef is using Java 21 for their new release 5.10&lt;/a&gt;
.&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://twitter.com/orango_mango/status/1698269059513462867" target="_blank" rel="noopener noreferrer"&gt;Logic simulator by &lt;strong&gt;OrangoMango&lt;/strong&gt; got updated to v1.1 update&lt;/a&gt;
: &amp;ldquo;A new web version made with WebFX, bug fix, RGB lights and some UI changes.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/surajit8017/status/1700781040779022628" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;surajit&lt;/strong&gt; completed M-AID (Retail Pharmacy Management)&lt;/a&gt;
: &amp;ldquo;With a mobile app that is always connected to the desktop app via Wi-Fi, no internet is needed for operations.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/rnartist_app" target="_blank" rel="noopener noreferrer"&gt;RNArtist by &lt;strong&gt;Fabrice Jossinet&lt;/strong&gt; offers now an undo/redo feature&lt;/a&gt;
: &amp;ldquo;It can even iterate automatically over its history. Take a look at my attempt to produce a better layout for an archaea LSU rRNA (green blinking = redo, orange = undo).&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/Biometrics_Eng/status/1704443412546474137" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Biometrics Engineer&lt;/strong&gt; shared a video&lt;/a&gt;
 showing a &amp;ldquo;JavaFX Linux Biometric Time and Attendance - Staff Registration DEMO that is implemented on Ubuntu Linux using ARATEK A600 Biometric Fingerprint Scanner.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/rnartist_app/status/1702674834193252446" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;RNArtist&lt;/strong&gt; is announcing&lt;/a&gt;
: &amp;ldquo;Installers will be available next week. Thanks to the very good tool JDeploy, you will automatically get the latest version after each launch of RNArtist. Now it&amp;rsquo;s time to write some documentation&amp;hellip;&amp;rdquo;
&lt;ul&gt;
&lt;li&gt;And shared &lt;a href="https://twitter.com/rnartist_app/status/1702641134923583639" target="_blank" rel="noopener noreferrer"&gt;screenshots of the tool 3 years ago versus now&lt;/a&gt;
, with some very nice comments and links to the project in the thread.&lt;/li&gt;
&lt;li&gt;BTW, as someone pointed out, you can maybe use this tool to design airport terminals&amp;hellip; 😉&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/SeanMiPhillips/status/1703038446854345000" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Sean Phillips&lt;/strong&gt; is using Trinity for&lt;/a&gt;
: &amp;ldquo;Detecting ChatGTP generated medium size text blocks using manifold approximation, polyhedral volume techniques and JavaFX 3D. Sorry not sorry bad guys.&amp;rdquo;
&lt;ul&gt;
&lt;li&gt;And &lt;a href="https://twitter.com/SeanMiPhillips/status/1703172036669972494" target="_blank" rel="noopener noreferrer"&gt;Apple M2 silicon (Arm64) builds&lt;/a&gt;
 now supported through Trinity&amp;rsquo;s GitHub Actions thanks to the magnificent CI work of samypr100!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/_MalikHamida/status/1707405711401963981" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Malik Hamida&lt;/strong&gt; is working on a micro banking system project&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/posts/eltayeb-ibrahim-98324a193_javafx-java-javascript-activity-7113009374276526080-G99X" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Eltayeb Ibrahim&lt;/strong&gt; created a user-friendly Product Management System using JavaFX for the frontend&lt;/a&gt;
 and Node.js with Express.js framework for the backend.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/Heshantk/status/1707473425395286439" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Heshan Thenura Kariyawasam&lt;/strong&gt; made a File Shredder app&lt;/a&gt;
 and shared the sources.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-2-games"&gt;Games&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/LondonSoftworks/status/1696427139212447753" target="_blank" rel="noopener noreferrer"&gt;London Softworks is working on a new Particle Editor and making progress with an OpenGL context being rendered to a JavaFX Canvas object (in real-time)&lt;/a&gt;
: &amp;ldquo;Making good use of FBO&amp;rsquo;s for this one. Now to sort the colour issue out&amp;hellip;&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/orango_mango/status/1703057689582993815" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;OrangoMango&lt;/strong&gt; announces &amp;ldquo;Chess 2.0 is finally complete&amp;rdquo;&lt;/a&gt;
: &amp;ldquo;The WebFX version is now available at &lt;a href="https://orangomango.itch.io/chess" target="_blank" rel="noopener noreferrer"&gt;orangomango.itch.io/chess&lt;/a&gt;
. Play single player against stockfish. Play multiplayer against a friend in LAN or on the server.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Always fun when &lt;a href="https://twitter.com/AlmasBaim/status/1703483255331094569" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Almas Baim&lt;/strong&gt; shares one of his experiments with FXGL&lt;/a&gt;
: &amp;ldquo;&amp;hellip; and in this episode of how to inefficiently clear the screen &amp;hellip;&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7109933250885685248/" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Ahmed Bakr&lt;/strong&gt; completed a Tic Tac Toe Game with Tiva C and JavaFX&lt;/a&gt;
: &amp;ldquo;Our primary goal in undertaking this project was to explore the integration of microcontrollers with high-powered processing computers to tackle tasks beyond the capabilities of a standalone microcontroller.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/WhiteWoodCity/status/1706656526726045930" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;WhiteWoodCity&lt;/strong&gt; made his game demo and self-made game utilities&lt;/a&gt;
 fully open source on &lt;a href="https://github.com/chengenzhao/fxcity" target="_blank" rel="noopener noreferrer"&gt;github.com/chengenzhao/fxcity&lt;/a&gt;
.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-3-components-libraries-tools"&gt;Components, Libraries, Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/P_Duke/status/1696149890370285877" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Pedro Duque Vieira&lt;/strong&gt; released a new library, a JavaFX theme called Transit Theme&lt;/a&gt;
: &amp;ldquo;Modern look and feel, Zero tight coupling, Looks integrated on Windows, Also works well on other OSes, Light and Dark versions,&amp;hellip;&amp;rdquo;
&lt;ul&gt;
&lt;li&gt;The announcement of this new Transit Theme &lt;a href="https://foojayio.github.io/website/today/new-javafx-theme-library-transit-released/"&gt;got published on &lt;strong&gt;Foojay.io&lt;/strong&gt;&lt;/a&gt;
.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pedro&lt;/strong&gt; is also working on a &lt;a href="https://twitter.com/P_Duke/status/1701577162015363556" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;dark mode&lt;/strong&gt;&lt;/a&gt;
: &amp;ldquo;JavaFX Windows are always shown in Light mode (window frames with light color). This new API I&amp;rsquo;ve created will allow the developer to set dark mode on a native window. New API will also allow other changes to a window.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/P_Duke/status/1704488446138454335" target="_blank" rel="noopener noreferrer"&gt;And he added a new API to FXComponents&lt;/a&gt;
: &amp;ldquo;To allow you to change the native Window frame color, native Window text color, and border. (Standard JavaFX API will always show a native Window frame with the same light color with no possibility to change it.)&amp;rdquo;&lt;/li&gt;
&lt;li&gt;The release of the new FXComponents library was also &lt;a href="https://foojayio.github.io/website/today/new-fxcomponents-library-released/"&gt;published on Foojay&lt;/a&gt;
.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/dlemmermann/status/1697192575969493372" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Dirk Lemmermann&lt;/strong&gt; released version 3.0.0 of PDFViewFX&lt;/a&gt;
: &amp;ldquo;This release is based on Apache PDFBox 3, which contains an impressive list of fixes and enhancements.&amp;rdquo;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/dlemmermann/status/1704045289743495407" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Dirk&lt;/strong&gt; has a friendly reminder&lt;/a&gt;
: &amp;ldquo;When creating custom controls for your JavaFX project, please make sure you have a way to properly test them standalone (e.g. via &lt;a href="https://jfx-central.com/tools/fxsampler" target="_blank" rel="noopener noreferrer"&gt;FXSampler&lt;/a&gt;
).&amp;rdquo;&lt;/li&gt;
&lt;li&gt;He is also &lt;a href="https://twitter.com/dlemmermann/status/1704846555004502306" target="_blank" rel="noopener noreferrer"&gt;pimping the CalendarView control in GemsFX&lt;/a&gt;
 and adding all kinds of options: &amp;ldquo;E.g. different layout for the header and also quick picking months and years). Come and check it out, let me know what you think or I missed.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/javasunsFX/status/1696959645384839544" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;JavaSuns&lt;/strong&gt; came upon this great small pure Java library, SimplePNG&lt;/a&gt;
, for storing JavaFX images to PNG files. Great compression ratios and file sizes achieved with the use of PNGJavaFXUtils class.&lt;/li&gt;
&lt;li&gt;A new week, a &lt;a href="https://twitter.com/P_Duke/status/1698687283971432648?s=20" target="_blank" rel="noopener noreferrer"&gt;new library by &lt;strong&gt;Pedro Duque Vieira&lt;/strong&gt;: FXComponents&lt;/a&gt;
. It contains a collection of new controls to be used in JavaFX applications.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WhiteWoodCity&lt;/strong&gt; extended JavaFX, FXGL, and AtlantaFX to reduce function of binding, multiple game scenes support and navigation of them, enhanced animations, self-made theme,&amp;hellip; &lt;a href="https://twitter.com/WhiteWoodCity/status/1697975469965263093?s=20" target="_blank" rel="noopener noreferrer"&gt;Check the X thread&lt;/a&gt;
, as he shared the code!&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/johanvos/status/1699335002599649549" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Johan Vos&lt;/strong&gt; shared a link to the GitHub project of Rich Text Area&lt;/a&gt;
: &amp;ldquo;One of the cool GluonHQ tools we are developing/maintaining&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/posts/carldea_javafx-activity-7081463432486477824-LCev/" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Carl Dea&lt;/strong&gt; is prototyping a new JavaFX-based Dockable windowing library&lt;/a&gt;
.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@svenruppert/111064088106916273" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Sven Ruppert&lt;/strong&gt; announced the release of version 4 of TestFX&lt;/a&gt;
, simple and clean testing for JavaFX. Check &lt;a href="https://github.com/TestFX/TestFX/releases/tag/v4.0.17" target="_blank" rel="noopener noreferrer"&gt;GitHub for all changes&lt;/a&gt;
.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/SeanMiPhillips/status/1700852671287107803" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Sean Phillips&lt;/strong&gt; announced a new release of the special effects library LitFX&lt;/a&gt;
: lightning, radio waves/bands, line of sight lighting and shadowing, animated window and floating panes, flame convolution.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/MichaelPaus/status/1701214040876323013" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Michael Paus&lt;/strong&gt; has done a basic POC for Skia integration into JavaFX&lt;/a&gt;
.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-4-tutorials"&gt;Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/posts/mark-baird-5565786_how-to-use-the-java-maps-sdk-in-a-raspberry-activity-7100825332420599808-w5P7/" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Mark Baird&lt;/strong&gt; released the second in a series of blog posts showing how to use the beta release of the Java Maps SDK (with support for Arm Linux devices) with a Raspberry Pi&lt;/a&gt;
 to integrate IoT data collection into your geospatial applications.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/EdwardAlgorist/status/1697359282449072213" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Edward Nyirenda Jr&lt;/strong&gt; explains how to add TextField autocompletion in JavaFX using ControlsFX&lt;/a&gt;
: &amp;ldquo;TextField autocompletion is a convenient feature that enhances user experience by providing suggestions or predictions as users type into a text field.&amp;rdquo;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/EdwardAlgorist" target="_blank" rel="noopener noreferrer"&gt;Check his Twitter/X timeline for more tutorials&lt;/a&gt;
.&lt;/li&gt;
&lt;li&gt;Highlighting one of the many other tutorials &lt;a href="https://twitter.com/EdwardAlgorist/status/1707165031622717625" target="_blank" rel="noopener noreferrer"&gt;&amp;ldquo;JavaFX Clipboard&amp;rdquo;&lt;/a&gt;
: &amp;ldquo;In the JavaFX framework, clipboard functionality is seamlessly integrated, making it easy for developers to provide a smooth and user-friendly experience.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;All Edward&amp;rsquo;s tutorials are available on his website &lt;a href="https://coderscratchpad.com/category/computer-programming/javafx/" target="_blank" rel="noopener noreferrer"&gt;coderscratchpad.com&lt;/a&gt;
.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gluon&lt;/strong&gt; shared four new tutorial/screencasts on YouTube:
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=ZIvSBK66tvQ" target="_blank" rel="noopener noreferrer"&gt;Introduction to Emoji&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=aST8C2N5k4g" target="_blank" rel="noopener noreferrer"&gt;Introduction to Gluon Maps&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=E2lREX9RFa0" target="_blank" rel="noopener noreferrer"&gt;Introducing Gluon Rich Text Area&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=___Fp_vk4CY" target="_blank" rel="noopener noreferrer"&gt;Basic usage of Gluon Rich Text Area&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/jachampagne8/status/1700547961921352094" target="_blank" rel="noopener noreferrer"&gt;Part 4 of the video tutorials in French by &lt;strong&gt;Jason Champagne&lt;/strong&gt;&lt;/a&gt;
: &amp;ldquo;On aborde les premiers contrôles utilisateur sur JavaFX&amp;rdquo; (First user controls in JavaFX).&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@kenkousen/111035349071040667" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Ken Kousen&lt;/strong&gt; (&amp;ldquo;Tales from the jar side&amp;rdquo;) shared a video&lt;/a&gt;
: &amp;ldquo;Generate images using Java. See how to write Java to drive the Dall-E image tool. Combined text blocks, JSON parsing, records, and even a JavaFX image carousel.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edward Nyirenda Jr&lt;/strong&gt; is continuing his series of tutorials: &lt;a href="https://twitter.com/EdwardAlgorist/status/1701348814156685713" target="_blank" rel="noopener noreferrer"&gt;Internationalization in JavaFX: Building Multilingual Apps&lt;/a&gt;
: &amp;ldquo;Internationalization is the process of designing your application so that it can be easily adapted to different languages and regions without code changes.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;In Portuguese by &lt;strong&gt;Edivaldo Brito&lt;/strong&gt; : &lt;a href="https://twitter.com/edivaldobrito/status/1702468670130425979" target="_blank" rel="noopener noreferrer"&gt;&amp;ldquo;Como instalar o Gluon Scene Builder no Linux via Flatpak&amp;rdquo;&lt;/a&gt;
 (How to install Gluon Scene Builder on Linux via Flatpak).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-5-miscellaneous"&gt;Miscellaneous&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/dlemmermann/status/1696098284002054553" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Dirk Lemmermann&lt;/strong&gt; noticed something remarkable&lt;/a&gt;
: &amp;ldquo;A JavaScript account retweeting a JavaFX tweet? 🙂 What&amp;rsquo;s next? Flying pigs? :-)&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@fthevenet/111028413815320945" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Frederic Thevenet&lt;/strong&gt; wrote a long thread on Mastodon&lt;/a&gt;
 to explain why &amp;ldquo;JavaFX is a very solid piece of tech which unfortunately came to maturity at the worst possible time for a &amp;ldquo;desktop application&amp;rdquo; GUI framework.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Looking for a specific icon? Use &lt;a href="https://twitter.com/dlemmermann/status/1699812103937290590" target="_blank" rel="noopener noreferrer"&gt;JFX Central as &lt;strong&gt;Dirk Lemmermann&lt;/strong&gt; explains here&lt;/a&gt;
.&lt;/li&gt;
&lt;li&gt;Happy to see more and more references to JavaFX when people discuss app development, like &lt;a href="https://twitter.com/t3chn01200/status/1699016124661121192" target="_blank" rel="noopener noreferrer"&gt;here by &lt;strong&gt;@t3chn01200&lt;/strong&gt;&lt;/a&gt;
 , &lt;a href="https://twitter.com/schramMedia/status/1698728400318341609" target="_blank" rel="noopener noreferrer"&gt;here by &lt;strong&gt;@schramMedia&lt;/strong&gt;&lt;/a&gt;
 and &lt;a href="https://twitter.com/Aman_Raj2241/status/1699840433596297593" target="_blank" rel="noopener noreferrer"&gt;here by &lt;strong&gt;@Aman_Raj2241&lt;/strong&gt;&lt;/a&gt;
.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.acm.org/@koppor/111054057514152665" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Oliver Kopp&lt;/strong&gt; shared more info about the reason to use Java 21 in JabRef&lt;/a&gt;
: &amp;ldquo;We needed to have the fix for a workaround of the 64kb limit of Java. We did not backport our fix to JDK20, but relied on a sufficient quality of JDK21 at the time of our release.&amp;rdquo; Check &lt;a href="https://bugs.openjdk.org/browse/JDK-8240567" target="_blank" rel="noopener noreferrer"&gt;JDK-8240567&lt;/a&gt;
 for more background info and a link to the merge request and code changes in OpenJDK.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/WhiteWoodCity/status/1704296530117906743" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;WhiteWoodCity&lt;/strong&gt; is combining JavaFX and JavaScript&lt;/a&gt;
: &amp;ldquo;Using #Graal polyglot in a JavaFX program.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/Webswing_org" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Webswing&lt;/strong&gt;&lt;/a&gt;
, a specialized web server for running Java Swing and JavaFX based applications in a web browser, announced a &lt;a href="https://www.webswing.org/es" target="_blank" rel="noopener noreferrer"&gt;Spanish version of their website&lt;/a&gt;
.&lt;/li&gt;
&lt;li&gt;From time to time, JavaFX (just like Java itself) is declared dead. Luckily, there are many fans to correct this mistake:
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/JavaFX3D/status/1705089119041593691" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;JavaFX3D&lt;/strong&gt;&lt;/a&gt;
: &amp;ldquo;As someone who worked on JavaFX at both Sun and Oracle, I can definitively say that JavaFX is not deprecated. Period.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/spyced/status/1704888013094834602" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Jonathan Ellis&lt;/strong&gt;&lt;/a&gt;
: &amp;ldquo;Users hate Electron&amp;rsquo;s performance and memory footprint, but devs love it for write-once-run-anywhere. I know we stopped using Swing years ago for good reasons, but still: wouldn&amp;rsquo;t JavaFX be better than Electron?&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/JavaFX3D/status/1705092556617576608" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;JavaFX3D&lt;/strong&gt;&lt;/a&gt;
: &amp;ldquo;I keep seeing uninformed posts, so I&amp;rsquo;d like to set the record straight. &lt;a href="https://www.youtube.com/watch?v=FFlVaB8oTi0" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Kevin Rushforth&lt;/strong&gt; and his team at Oracle are working on JavaFX&lt;/a&gt;
. Equally importantly, &lt;strong&gt;Johan Vos&lt;/strong&gt; and his team at &lt;strong&gt;Gluon&lt;/strong&gt; are the JavaFX WORA magicians.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/SeanMiPhillips/status/1703401715351904439" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Sean Phillips&lt;/strong&gt;&lt;/a&gt;
: &amp;ldquo;As the lead developer for several of the tools referenced in that article I can say as ground truth that JavaFX was selected as the superior tech stack due to a combination of quality, performance and cross-platform support.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/SystemsInCode/status/1704796679340224546" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;SystemsInCode&lt;/strong&gt;&lt;/a&gt;
: &amp;ldquo;I would love to leverage the benefits of JavaFX, but it&amp;rsquo;s a hard sell in enterprise when we need to push a critical fix&amp;hellip; It&amp;rsquo;s a shame we have to use sub optimal tech for boring practical reasons 🙂 Being able to FORCE latest version on people even with low rights is critical.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/P_Duke/status/1706658008820830476" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Pedro Duque Vieira&lt;/strong&gt; shared some hidden messages&lt;/a&gt;
: &amp;ldquo;Hint: squint, move your phone/monitor further away or zoom out, to see it more clearly.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/crschnick/status/1706982902951485727" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Christopher Schnick&lt;/strong&gt; believes JavaFX applications can always use some more Duke&lt;/a&gt;
.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-6-jfx-central"&gt;JFX Central&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The JFX Central website is now reachable via both &lt;a href="http://jfxcentral.com" target="_blank" rel="noopener noreferrer"&gt;jfxcentral.com&lt;/a&gt;
 and &lt;a href="http://jfx-central.com" target="_blank" rel="noopener noreferrer"&gt;jfx-central.com&lt;/a&gt;
.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dlsc-software-consulting-gmbh/jfxcentral2/commits/develop" target="_blank" rel="noopener noreferrer"&gt;Many improvements&lt;/a&gt;
 are going on&amp;hellip;&lt;/li&gt;
&lt;li&gt;The post by &lt;strong&gt;Frank Delporte&lt;/strong&gt; about the new version of JFX Central got republished on Foojay:
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://foojayio.github.io/website/today/new-user-interface-for-jfx-central-the-home-for-all-javafx-information-part-1/"&gt;Part 1: Description of the site and changes&lt;/a&gt;
.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://foojayio.github.io/website/today/new-user-interface-for-jfx-central-the-home-for-all-javafx-information-part-2/"&gt;Part 2: Interviews with some of the team members&lt;/a&gt;
.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;New content added to JFX Central
&lt;ul&gt;
&lt;li&gt;Library: &lt;a href="https://www.jfx-central.com/libraries/fxcomponents" target="_blank" rel="noopener noreferrer"&gt;FXComponents&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Showcase: &lt;a href="https://www.jfx-central.com/real_world/maid" target="_blank" rel="noopener noreferrer"&gt;M-AID&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Showcase: &lt;a href="https://www.jfx-central.com/showcases/easycashier" target="_blank" rel="noopener noreferrer"&gt;EasyCashier&lt;/a&gt;
, a POS (point of sale) system from Sweden.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Is your library on JFX Central, or book, or website, or company, or &amp;hellip;? Let the people know &lt;a href="https://twitter.com/dlemmermann/status/1699044022029811824" target="_blank" rel="noopener noreferrer"&gt;by adding a badge&lt;/a&gt;
!&lt;/li&gt;
&lt;li&gt;The initial data load of JFX Central is &lt;a href="https://twitter.com/dlemmermann/status/1699103833131978953?s=20" target="_blank" rel="noopener noreferrer"&gt;reduced by 50% thanks to JGit&lt;/a&gt;
.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/dlemmermann/status/1706418682170097883" target="_blank" rel="noopener noreferrer"&gt;A new feature got announced that allows you to export any icon font icon to an SVG path&lt;/a&gt;
 so that you can use it in CSS, too.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/dlemmermann/status/1700125468693868626" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Dirk Lemmermann&lt;/strong&gt; is inviting all JavaFX developers to make their work visible on JFX Central&lt;/a&gt;
: &amp;ldquo;In the end, you will have a nice personal profile page like this. A page showing your libs, your tools, your books, your videos, your blog, your showcase apps, etc&amp;hellip;&amp;rdquo;&lt;/li&gt;
&lt;li&gt;More &lt;a href="https://github.com/dlsc-software-consulting-gmbh/jfxcentral-data/commits/live" target="_blank" rel="noopener noreferrer"&gt;content was added&lt;/a&gt;
 and &lt;a href="https://github.com/dlsc-software-consulting-gmbh/jfxcentral2/commits/master" target="_blank" rel="noopener noreferrer"&gt;bugs fixed and improvements integrated&lt;/a&gt;
, go &lt;a href="https://www.jfx-central.com/" target="_blank" rel="noopener noreferrer"&gt;check it out on jfx-central.com&lt;/a&gt;
&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Java 21 Is Available Today, And It's Quite The Update</title><link>https://foojayio.github.io/website/today/java-21-is-available-today-and-its-quite-the-update/</link><pubDate>Tue, 19 Sep 2023 05:31:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-21-is-available-today-and-its-quite-the-update/</guid><description>&lt;p&gt;&lt;strong&gt;Today&amp;rsquo;s the first day of Java 21&amp;rsquo;s availability! It&amp;rsquo;s been six months since Java 20 was released, so it&amp;rsquo;s time for another fresh wave of Java features. This post takes you on a tour of the JEPs that are associated with this release and it gives you a brief introduction to each of them, and &lt;a href="https://foojayio.github.io/website/today/foojay-podcast-28/"&gt;check out the Java 21 podcast here&lt;/a&gt;
. Where applicable the differences with Java 20 are highlighted and a few typical use cases are provided, so that you&amp;rsquo;ll be more than ready to use these features after reading this!&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Foojay Podcast #28: Java 21 Has Arrived!</title><link>https://foojayio.github.io/website/today/foojay-podcast-28/</link><pubDate>Tue, 19 Sep 2023 05:27:07 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-28/</guid><description>&lt;p&gt;Since 2018, we get a new version of Java every 6 months.&lt;/p&gt;
&lt;p&gt;And &lt;a href="https://foojayio.github.io/website/today/java-21-is-available-today-and-its-quite-the-update/"&gt;version 21, released during today, is a long-term support version&lt;/a&gt;
 that can be used for many years.&lt;/p&gt;
&lt;p&gt;It also brings a lot of new features and improvements in both the language and the runtime.&lt;/p&gt;
&lt;p&gt;Actually, there are so many that we&amp;rsquo;ll probably not get all of them discussed in this podcast!&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s see what our experts find the most important facts we need to know about Java 21.&lt;/p&gt;</description></item><item><title>Preparing for JDK 21: A Comprehensive Overview of Key Features and Enhancements</title><link>https://foojayio.github.io/website/today/preparing-for-jdk-21-a-comprehensive-overview-of-key-features-and-enhancements/</link><pubDate>Wed, 02 Aug 2023 10:46:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/preparing-for-jdk-21-a-comprehensive-overview-of-key-features-and-enhancements/</guid><description>&lt;p&gt;&lt;strong&gt;As we inch closer to the release of JDK 21 in September (next month!), it&amp;rsquo;s crucial to familiarize ourselves with the transformative features and improvements this version is poised to bring to the Java ecosystem.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s embark on a comprehensive tour of the noteworthy changes and enhancements in JDK 21.&lt;/p&gt;
&lt;h2 id="h2-0-revising-the-balance-of-serviceability-and-performance-with-jep-451"&gt;Revising the Balance of Serviceability and Performance with JEP 451&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s begin with JEP 451, &amp;ldquo;Prepare to Disallow the Dynamic Loading of Agents.&amp;rdquo; Graduating to Completed status in preparation for JDK 21, this proposal doesn&amp;rsquo;t ban the dynamic loading of agents into a running JVM outright. Instead, it issues warnings when such loading happens, preparing the terrain for a future JDK release that will disallow such loading by default.&lt;/p&gt;</description></item><item><title>Exploring Java 21's Intriguing Additions (Part 1)</title><link>https://foojayio.github.io/website/today/exploring-java-21s-intriguing-additions-unveiling-new-features-part-1/</link><pubDate>Tue, 20 Jun 2023 13:40:21 +0000</pubDate><guid>https://foojayio.github.io/website/today/exploring-java-21s-intriguing-additions-unveiling-new-features-part-1/</guid><description>&lt;h2 id="h2-0-introduction"&gt;Introduction:&lt;/h2&gt;
&lt;p&gt;Java 21 is going to introduce several intriguing additions that enhance the language&amp;rsquo;s capabilities.&lt;/p&gt;
&lt;p&gt;This article aims to discuss a few notable features that stand out, providing an overview of their functionalities and potential use cases.&lt;/p&gt;
&lt;br /&gt;
&lt;h2 id="h2-1-character-enhancements"&gt;Character Enhancements:&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;Character.isEmoji(int codePoint)&lt;/code&gt;: This method determines whether a character is considered an emoji based on its Unicode properties defined in Unicode Emoji (&lt;a href="https://unicode.org/reports/tr51/#Emoji_Properties_and_Data_Files" target="_blank" rel="noopener noreferrer"&gt;Unicode Emoji Technical Standard #51&lt;/a&gt;
). For example, executing &lt;code&gt;Character.isEmoji(9203)&lt;/code&gt; would return &lt;code&gt;true&lt;/code&gt; for the character ⏳, which has the code point 9203.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Character.isEmojiPresentation(int codePoint)&lt;/code&gt;: Similar to &lt;code&gt;isEmoji()&lt;/code&gt;, this method checks if a character has the Emoji Presentation property. It helps identify characters that display as emojis when rendered.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Example:&lt;/p&gt;</description></item></channel></rss>