<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Carl Dea on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/carldea/</link><description>Articles written by Carl Dea on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 02 Jan 2026 01:21:00 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/carldea/index.xml" rel="self" type="application/rss+xml"/><item><title>Project Panama for Newbies (Part 2)</title><link>https://foojayio.github.io/website/today/project-panama-for-newbies-part-2/</link><pubDate>Fri, 02 Jan 2026 01:21:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/project-panama-for-newbies-part-2/</guid><description>&lt;p&gt;&lt;strong&gt;Updated December 29, 2025 &lt;strong&gt;(&lt;strong&gt;originally published August 17&lt;/strong&gt;, 2021, republished January 2, 2026):&lt;/strong&gt;&lt;/strong&gt; This article now features Java 25 and the Foreign Function &amp;amp; Memory (FFM) API, which has been a standard feature since JDK 22 (&lt;a href="https://openjdk.java.net/jeps/454" target="_blank" rel="noopener noreferrer"&gt;JEP-454&lt;/a&gt;
).&lt;/p&gt;
&lt;figure class="wp-block-image size-full is-resized"&gt;
 &lt;img fetchpriority="high" decoding="async" width="218" height="407" src="panama_part2.png" alt="" class="wp-image-46434" style="width:140px;height:261px"&gt;
&lt;/figure&gt;
&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Welcome back to Part 2 of Project Panama for Newbies! If you are new to this series, check out &lt;a href="https://foojayio.github.io/website/today/project-panama-for-newbies-part-1/"&gt;Part 1&lt;/a&gt;
 first.&lt;/p&gt;
&lt;p&gt;If you remember from Part 1, we learned how to create C language strings, primitive data types and arrays. We also got a chance to iterate through the data outside of the Java heap and later display items via C&amp;rsquo;s &lt;code&gt;printf()&lt;/code&gt; and Java&amp;rsquo;s &lt;code&gt;printf()&lt;/code&gt; method from the &lt;code&gt;IO.printf()&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Project Panama for Newbies (Part 1)</title><link>https://foojayio.github.io/website/today/project-panama-for-newbies-part-1/</link><pubDate>Thu, 01 Jan 2026 09:11:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/project-panama-for-newbies-part-1/</guid><description>&lt;p&gt;&lt;strong&gt;Updated December 28, 2025 (&lt;strong&gt;originally published August 10&lt;/strong&gt;, 2021, republished January 1, 2026):&lt;/strong&gt; This article now features Java 25 and the Foreign Function &amp;amp; Memory (FFM) API, which has been a standard feature since JDK 22.
&lt;img src="https://foojayio.github.io/website/today/project-panama-for-newbies-part-1/duke_and_panama.png" alt="Java&amp;rsquo;s Project Panama" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;In this series of articles, we will explore the APIs from OpenJDK&amp;rsquo;s &lt;a href="https://openjdk.java.net/projects/panama/" target="_blank" rel="noopener noreferrer"&gt;Project&lt;/a&gt;
 &lt;a href="http://jdk.java.net/panama/" target="_blank" rel="noopener noreferrer"&gt;Panama&lt;/a&gt;
. My intent is to show you how to be proficient in using the Foreign Function and Memory Access APIs as it relates to Java interoperability with native code. After FFI (foreign function interface) &amp;amp; FFM (foreign function memory) have been finalized in JDK 22 the APIs currently reside in the following package namespaces.&lt;/p&gt;</description></item><item><title>Building Project Panama's jextract tool by yourself</title><link>https://foojayio.github.io/website/today/building-project-panamas-jextract-tool-by-yourself/</link><pubDate>Thu, 09 Jun 2022 14:22:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/building-project-panamas-jextract-tool-by-yourself/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Absorb what is useful, discard what is useless and add what is specifically your own. &amp;ndash; Bruce Lee&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Do you want to build Project Panama&amp;rsquo;s &lt;a href="https://github.com/openjdk/jextract" target="_blank" rel="noopener noreferrer"&gt;Jextract&lt;/a&gt;
 tool by yourself? I can show you how!&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;ve seen any of my past &lt;a href="https://foojayio.github.io/website/today/project-panama-for-newbies-part-3/"&gt;articles&lt;/a&gt;
 on Project Panama I&amp;rsquo;ve mentioned a really convenient tool called &lt;code&gt;jextract&lt;/code&gt; that can generate Java binding code that represents native functions or variables (symbols) from C libraries.&lt;/p&gt;
&lt;p&gt;This alleviates the developer&amp;rsquo;s need of creating binding code by hand. By passing in a C header file (.h extension) &lt;code&gt;jextract&lt;/code&gt; can generate source code or compiled Java classes.&lt;/p&gt;</description></item><item><title>Java Panama Polyglot (Rust) Part 4</title><link>https://foojayio.github.io/website/today/java-panama-polyglot-rust-part-4/</link><pubDate>Thu, 26 May 2022 08:33:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-panama-polyglot-rust-part-4/</guid><description>&lt;p&gt;Hello and welcome to the final article of the &lt;strong&gt;&lt;a href="https://foojayio.github.io/website/today/java-panama-polyglot-part1/"&gt;Java Panama Polyglot&lt;/a&gt;
&lt;/strong&gt; series, where we are presenting quick tutorials or recipes on how to access native libraries written in other languages.&lt;/p&gt;
&lt;p&gt;In this article you will be using Project Panama to talk to the &lt;a href="https://www.rust-lang.org" target="_blank" rel="noopener noreferrer"&gt;Rust&lt;/a&gt;
 language.&lt;/p&gt;
&lt;p&gt;If you are new to Java&amp;rsquo;s Foreign Function Access APIs (&lt;a href="https://jdk.java.net/panama/" target="_blank" rel="noopener noreferrer"&gt;Project&lt;/a&gt;
&lt;a href="https://jdk.java.net/panama/" target="_blank" rel="noopener noreferrer"&gt;Panama&lt;/a&gt;
) check out &lt;a href="https://foojayio.github.io/website/today/project-panama-for-newbies-part-1/"&gt;Panama4Newbies&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/java-panama-polyglot-part-3/"&gt;Part 3&lt;/a&gt;
 you had a chance to learn about how to use Java Project Panama&amp;rsquo;s abilities to access the locally installed Python interpreter.&lt;/p&gt;</description></item><item><title>Java Panama Polyglot (Python/Tensorflow) Part 3</title><link>https://foojayio.github.io/website/today/java-panama-polyglot-part-3/</link><pubDate>Tue, 26 Apr 2022 04:42:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-panama-polyglot-part-3/</guid><description>&lt;p&gt;Hello and welcome back to the &lt;strong&gt;&lt;a href="https://foojayio.github.io/website/today/java-panama-polyglot-part1/"&gt;Java Panama Polyglot&lt;/a&gt;
&lt;/strong&gt; series where we are presenting quick tutorials or recipes on how to access native libraries written in other languages.&lt;/p&gt;
&lt;p&gt;If you are new to Java&amp;rsquo;s Foreign Function Access APIs (&lt;a href="https://jdk.java.net/panama/" target="_blank" rel="noopener noreferrer"&gt;Project&lt;/a&gt;
&lt;a href="https://jdk.java.net/panama/" target="_blank" rel="noopener noreferrer"&gt;Panama&lt;/a&gt;
) check out: &lt;a href="https://foojayio.github.io/website/today/project-panama-for-newbies-part-1/"&gt;Panama4Newbies&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/java-panama-polyglot-swift-part-2/"&gt;Part 2&lt;/a&gt;
 you got a chance to learn about how to use Java Project Panama&amp;rsquo;s (foreign function interface APIs) abilities to access native libraries written in Apple&amp;rsquo;s &lt;a href="https://www.swift.org" target="_blank" rel="noopener noreferrer"&gt;Swift language&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Java Panama Polyglot (Swift) Part 2</title><link>https://foojayio.github.io/website/today/java-panama-polyglot-swift-part-2/</link><pubDate>Wed, 13 Apr 2022 15:34:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-panama-polyglot-swift-part-2/</guid><description>&lt;p&gt;Hello and welcome back to the &lt;strong&gt;Java Panama Polyglot&lt;/strong&gt; series where we will be presenting quick tutorials or recipes on how to access native libraries written in other languages.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/java-panama-polyglot-part1/"&gt;Part 1&lt;/a&gt;
 you got a chance to learn about how to use Java &lt;a href="https://jdk.java.net/panama/" target="_blank" rel="noopener noreferrer"&gt;Project Panama&lt;/a&gt;
&amp;rsquo;s (foreign function interface) abilities to access native libraries written in C++. Today, we will be looking at Java code being able to talk to Apple&amp;rsquo;s &lt;a href="https://developer.apple.com/swift/" target="_blank" rel="noopener noreferrer"&gt;Swift&lt;/a&gt;
 language.&lt;/p&gt;</description></item><item><title>Java Panama Polyglot (C++) Part 1</title><link>https://foojayio.github.io/website/today/java-panama-polyglot-part1/</link><pubDate>Wed, 06 Apr 2022 15:41:49 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-panama-polyglot-part1/</guid><description>&lt;figure class="wp-block-image size-full is-resized"&gt;
 &lt;img fetchpriority="high" decoding="async" src="polyglot.png" alt="" class="wp-image-55283" width="469" height="112"&gt;
&lt;/figure&gt;
&lt;p&gt;Hello and welcome to the &lt;strong&gt;Java Panama Polyglot&lt;/strong&gt; series where we will be presenting quick tutorials or recipes on how to access native libraries written in other languages.&lt;/p&gt;
&lt;p&gt;For example, you will learn about Java Project Panama&amp;rsquo;s (foreign function interface) abilities to access native libraries written in C++, Swift, Python, and others.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is Polyglot?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Have you heard of polyglot as it relates to developing &lt;a href="https://en.wikipedia.org/wiki/Solution_stack" target="_blank" rel="noopener noreferrer"&gt;full stack&lt;/a&gt;
 applications? If your answer is &lt;strong&gt;yes&lt;/strong&gt;, then you probably know about the programming languages needed to build an enterprise web application.&lt;/p&gt;</description></item><item><title>Increasing Event Streaming with Kafka and Azul</title><link>https://foojayio.github.io/website/today/increasing-event-streaming-with-kafka-and-azul/</link><pubDate>Tue, 29 Mar 2022 13:41:48 +0000</pubDate><guid>https://foojayio.github.io/website/today/increasing-event-streaming-with-kafka-and-azul/</guid><description>&lt;p&gt;Welcome to getting started with &lt;a href="https://www.azul.com/products/prime/" target="_blank" rel="noopener noreferrer"&gt;Azul Platform Prime&lt;/a&gt;
 and &lt;a href="https://www.azul.com/technologies/kafka/" target="_blank" rel="noopener noreferrer"&gt;Apache Kafka&lt;/a&gt;
!&lt;/p&gt;
&lt;p&gt;In this article you will learn how to switch between two different Java runtime environments to run an Apache Kafka instance.&lt;/p&gt;
&lt;p&gt;In later articles, this will allow you to compare runtime performance benchmarks.&lt;/p&gt;
&lt;p&gt;Before we begin, let&amp;rsquo;s supply some context on Azul&amp;rsquo;s Platform offerings and Apache Kafka.&lt;/p&gt;
&lt;h2 id="h-what-is-azul-platform-prime-and-platform-core"&gt;What is Azul Platform Prime and Platform Core?&lt;/h2&gt;
&lt;p&gt;Azul offers two Java runtime environments &lt;a href="https://www.azul.com/products/prime/" target="_blank" rel="noopener noreferrer"&gt;Platform Prime&lt;/a&gt;
 and &lt;a href="https://www.azul.com/products/core/" target="_blank" rel="noopener noreferrer"&gt;Platform Core&lt;/a&gt;
. Platform Prime (formerly known as Zing) is a high-performance implementation of the JVM (Java Virtual Machine) while Platform Core refers to Azul&amp;rsquo;s solution that includes the Zulu build of OpenJDK with dedicated support.&lt;/p&gt;</description></item><item><title>Project Panama for Newbies (Part 4)</title><link>https://foojayio.github.io/website/today/project-panama-for-newbies-part-4/</link><pubDate>Thu, 24 Feb 2022 08:34:52 +0000</pubDate><guid>https://foojayio.github.io/website/today/project-panama-for-newbies-part-4/</guid><description>&lt;p&gt;&lt;strong&gt;Updated December 31, 2025:&lt;/strong&gt; This article now features Java 25 and the Foreign Function &amp;amp; Memory (FFM) API, which has been a standard feature since JDK 22.&lt;/p&gt;
&lt;p&gt;Welcome to Part 4 of Java&amp;rsquo;s Project Panama for newbies! If you&amp;rsquo;ve been following &lt;a href="https://foojayio.github.io/website/today/project-panama-for-newbies-part-1/"&gt;this&lt;/a&gt;
 &lt;a href="https://foojayio.github.io/website/today/project-panama-for-newbies-part-2/"&gt;series&lt;/a&gt;
 of &lt;a href="https://foojayio.github.io/website/today/project-panama-for-newbies-part-3/"&gt;posts&lt;/a&gt;
 on how to use Java&amp;rsquo;s Project Panama APIs you probably have noticed that all of the examples thus far demonstrate how Java code can execute C code by using the &lt;a href="https://github.com/openjdk/panama-foreign/blob/d8c0fe5918cb1c6c744eb26797ea4fa04142c237/doc/panama_ffi.md#c-linker" target="_blank" rel="noopener noreferrer"&gt;linker&lt;/a&gt;
&amp;rsquo;s &lt;code&gt;downCall()&lt;/code&gt; method.&lt;/p&gt;</description></item><item><title>Lights, Camera, Action: GitHub Actions with Java (Part 3)</title><link>https://foojayio.github.io/website/today/lights-camera-action-github-actions-with-java-part-3/</link><pubDate>Thu, 03 Feb 2022 15:24:33 +0000</pubDate><guid>https://foojayio.github.io/website/today/lights-camera-action-github-actions-with-java-part-3/</guid><description>&lt;br /&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/lights-camera-action-github-actions-with-java-part-3/Spidey_GitHub_Action_disco_latest.jpg" alt="Spiderman chooses GitHub Action&amp;rsquo;s Disco API" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;The Java GitHub Action that Rules them all - Disco API{#caption-attachment-51347}&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;When we ended Part 2 of this blog series Lights, Camera, Action: GitHub Actions with Java &lt;a href="https://foojayio.github.io/website/today/github-actions-with-java-part-2" title="Part 2"&gt;Part 2&lt;/a&gt;
, I talked about the near future of GitHub Actions. Well, today the future is now, so let&amp;rsquo;s get into this!&lt;/p&gt;
&lt;p&gt;Welcome back to the series of articles on GitHub Actions with Java Part 3. If you didn&amp;rsquo;t catch Part 1 &amp;amp; 2 head over here: &lt;a href="https://foojayio.github.io/website/today/github-actions-with-java-part-1" title="Part 1"&gt;Part 1&lt;/a&gt;
 &amp;amp; &lt;a href="https://foojayio.github.io/website/today/github-actions-with-java-part-2" title="Part 2"&gt;Part 2&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Lights, Camera, Action: GitHub Actions with Java (Part 2)</title><link>https://foojayio.github.io/website/today/github-actions-with-java-part-2/</link><pubDate>Mon, 15 Nov 2021 14:35:43 +0000</pubDate><guid>https://foojayio.github.io/website/today/github-actions-with-java-part-2/</guid><description>&lt;figure class="alignright is-resized"&gt;
 &lt;img fetchpriority="high" decoding="async" src="distro-choice.jpg" alt="Distro Choice 337" width="308" height="465"&gt;
&lt;/figure&gt;
&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Have you ever been given too many choices resulting in the feeling of indifference (&amp;ldquo;not a big deal, doesn&amp;rsquo;t really matter either way&amp;rdquo;)? However, when given &lt;strong&gt;two&lt;/strong&gt; choices, somehow you feel torn or become more critical of one versus the other.&lt;/p&gt;
&lt;p&gt;In this short overview, you will learn how to create a GitHub Action workflow that allows you to choose a particular OpenJDK build distribution.&lt;/p&gt;
&lt;p&gt;And welcome back to the series of articles on GitHub Actions with Java &lt;strong&gt;Part 2&lt;/strong&gt; . If you didn&amp;rsquo;t catch &lt;strong&gt;Part 1&lt;/strong&gt; head over here: &lt;a href="https://foojayio.github.io/website/today/github-actions-with-java-part-1/"&gt;https://foojay.io/today/github-actions-with-java-part-1&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Lights, Camera, Action: GitHub Actions with Java (Part 1)</title><link>https://foojayio.github.io/website/today/github-actions-with-java-part-1/</link><pubDate>Thu, 28 Oct 2021 12:36:19 +0000</pubDate><guid>https://foojayio.github.io/website/today/github-actions-with-java-part-1/</guid><description>&lt;h4 id="have-you-ever-heard-of-jenkins-travis-teamcity-or-bamboo"&gt;Have you ever heard of &lt;a href="https://www.jenkins.io/" target="_blank" rel="noopener noreferrer"&gt;Jenkins&lt;/a&gt;
, &lt;a href="https://www.travis-ci.com/" target="_blank" rel="noopener noreferrer"&gt;Travis&lt;/a&gt;
, &lt;a href="https://www.jetbrains.com/teamcity/" target="_blank" rel="noopener noreferrer"&gt;TeamCity&lt;/a&gt;
 or &lt;a href="https://www.atlassian.com/software/bamboo" target="_blank" rel="noopener noreferrer"&gt;Bamboo&lt;/a&gt;
?&lt;/h4&gt;
&lt;figure class="alignright size-full is-resized"&gt;
 &lt;img fetchpriority="high" decoding="async" src="github_smothie.jpg" alt="GitHub Actions with Java" class="wp-image-50461" width="332" height="442"&gt;
 &lt;figcaption&gt;
 "Github smoothie" Acarlos1000
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;For those who do not know, these are build infrastructure software services that manage and schedule (notify) the building of software artifacts (yours).&lt;/p&gt;
&lt;p&gt;Often, you might hear the term &amp;ldquo;CI/CD pipelines&amp;rdquo;, which refers to the concept of Continuous Integration and/or Continuous Delivery. In layman&amp;rsquo;s terms, it&amp;rsquo;s all about building, testing and deploying software in an automated fashion.&lt;/p&gt;</description></item><item><title>Project Panama for Newbies (Part 3)</title><link>https://foojayio.github.io/website/today/project-panama-for-newbies-part-3/</link><pubDate>Mon, 13 Sep 2021 08:53:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/project-panama-for-newbies-part-3/</guid><description>&lt;p&gt;&lt;strong&gt;Updated December 31, 2025:&lt;/strong&gt; This article now features Java 25 and the Foreign Function &amp;amp; Memory (FFM) API, which has been a standard feature since JDK 22 (&lt;a href="https://openjdk.java.net/jeps/454" target="_blank" rel="noopener noreferrer"&gt;JEP-454&lt;/a&gt;
).&lt;/p&gt;
&lt;figure class="wp-block-image size-full is-resized is-style-default"&gt;
 &lt;img fetchpriority="high" decoding="async" width="218" height="407" src="panama_part3.png" alt="Panama for newbies Part 3" class="wp-image-46521" style="width:140px;height:230px"&gt;
 &lt;figcaption class="wp-element-caption"&gt;
 Panama for newbies Part 3
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Welcome to the third part of the series on Java&amp;rsquo;s Project Panama for newbies. Before jumping into this article, I want to congratulate you for getting this far, you deserve a virtual pat on the back!&lt;/p&gt;</description></item><item><title>Learn JShell with JavaFX in Only 60 Seconds</title><link>https://foojayio.github.io/website/today/learn-javafx-with-jshell-in-60-seconds/</link><pubDate>Mon, 12 Jul 2021 10:54:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/learn-javafx-with-jshell-in-60-seconds/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Spoon boy&lt;/strong&gt; : Do not try and bend the spoon. That&amp;rsquo;s impossible. Instead&amp;hellip; only try to realize the truth.&lt;br&gt;
&lt;strong&gt;Neo&lt;/strong&gt; : What truth?&lt;br&gt;
&lt;strong&gt;Spoon boy&lt;/strong&gt; : There is no spoon.&lt;br&gt;
&lt;strong&gt;Neo&lt;/strong&gt; : There is no spoon?&lt;br&gt;
&lt;strong&gt;Spoon boy&lt;/strong&gt; : Then you&amp;rsquo;ll see, that it is not the spoon that bends, it is only yourself.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;ndash; The Matrix, a conversation between Neo and Spoon boy.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/learn-javafx-with-jshell-in-60-seconds/matrix-rain-effect.gif" alt="Matrix Rain Code Effect" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;In the classic science fiction movie, The Matrix, there&amp;rsquo;s a cool special effect better known as the &lt;em&gt;falling&lt;/em&gt; or &lt;em&gt;raining green code&lt;/em&gt; effect. In &lt;a href="https://youtu.be/MvEXkd3O2ow?t=27" title="one scene" target="_blank" rel="noopener noreferrer"&gt;one scene&lt;/a&gt;
 the character named &lt;strong&gt;&amp;lsquo;Cypher&amp;rsquo;&lt;/strong&gt; played by &lt;a href="https://www.imdb.com/name/nm0001592/" title="Joe Pantoliano" target="_blank" rel="noopener noreferrer"&gt;Joe Pantoliano&lt;/a&gt;
 explains how they can monitor activity inside the &lt;strong&gt;matrix&lt;/strong&gt; by looking at the patterns as the code rains down. He claims it&amp;rsquo;s done this way to simplify seeing people in the matrix than other means due to the fact that there is just way too much data (movie scifi magic talk).&lt;/p&gt;</description></item><item><title>Announcement: Friends of OpenJDK Podcast #1</title><link>https://foojayio.github.io/website/today/foojay-podcast-1/</link><pubDate>Fri, 09 Jul 2021 08:39:39 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-1/</guid><description>&lt;p&gt;Foojay community members discuss recent news:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JavaFX Skins for cross-platform apps on Android, iOS, and regular computers.&lt;/li&gt;
&lt;li&gt;BlockHound, for detecting cases of blocking in reactive (non-blocking) applications.&lt;/li&gt;
&lt;li&gt;JEP 411, the SecurityManager deprecation&lt;/li&gt;
&lt;li&gt;The recent Snyk/Azul community survey&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Sorry, this recording got &amp;ldquo;lost in cyberspace&amp;hellip;&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Creating a JavaFX World Clock from Scratch (Part 6)</title><link>https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-6/</link><pubDate>Fri, 25 Jun 2021 16:48:48 +0000</pubDate><guid>https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-6/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Wherever you go, no matter what the weather, always bring your own sunshine. &amp;ndash; Anthony J. D&amp;rsquo;Angelo&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hello, and welcome to the last part of this series of articles on creating a JavaFX World Clock from scratch!&lt;/p&gt;
&lt;p&gt;In this part, I will show you how to make WebService calls (RESTful) to retrieve weather data based on geographic locations.&lt;/p&gt;
&lt;p&gt;If you remember, &lt;a href="https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-5/"&gt;in Part 5&lt;/a&gt;
 you learned how to use the JavaFX WebView and the popular mapping library Leaflet JS enabling the user to discover geographic locations. In Part 6, I will show you how I used Java 11&amp;rsquo;s Http Client to retrieve and display weather content. If you are new to this series, you can visit Part &lt;a href="https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-1/" title="1"&gt;1&lt;/a&gt;
-&lt;a href="https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-5/" title="5"&gt;5&lt;/a&gt;
.&lt;br&gt;
&lt;img src="https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-6/JFX-World-Clock-Part-6.png" alt="JFX World Clock Part 6" loading="lazy"&gt;
&lt;/p&gt;</description></item><item><title>Beginning JavaFX Applications with IntelliJ IDE</title><link>https://foojayio.github.io/website/today/beginning-javafx-with-intellij/</link><pubDate>Wed, 28 Apr 2021 19:33:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/beginning-javafx-with-intellij/</guid><description>&lt;figure class="alignleft size-large"&gt;
 &lt;img src="https://foojayio.github.io/website/today/beginning-javafx-with-intellij/duke-intellij-shirt.png" alt="" width="174" height="313" loading="lazy" class="is-zoomable"&gt;&lt;figcaption class="wp-element-caption"&gt;JavaFX in IntelliJ IDE&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;This article is for the beginner who wants to get started developing JavaFX applications using &lt;a href="https://www.jetbrains.com/idea/" target="_blank" rel="noopener noreferrer"&gt;Jetbrains&amp;rsquo; IntelliJ&lt;/a&gt;
 IDE. The article will create three flavors of a HelloWorld JavaFX application as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Plain - Create a new project from scratch using no build tools&lt;/li&gt;
&lt;li&gt;Maven - Create a new project using the Maven build tool&lt;/li&gt;
&lt;li&gt;Gradle - Create a new project using the Gradle build tool&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While this article may seem elementary for some, I believe it can help newcomers to the JavaFX platform avoid some pitfalls and really hit the ground running.&lt;/p&gt;</description></item><item><title>Creating a JavaFX World Clock from Scratch (Part 4)</title><link>https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-4/</link><pubDate>Fri, 09 Apr 2021 07:51:05 +0000</pubDate><guid>https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-4/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;The tools we use have a profound (and devious!) influence on our thinking habits, and, therefore, on our thinking abilities.&amp;rdquo; &amp;ndash; Edsger W. Dijkstra, 18 June 1975&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-4/Screen-Shot-2021-03-28-at-4.05.45-PM.png" alt="JFX World Clock &amp;amp; JPackager" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Hello and welcome to Part 4 of a series of blog entries on how I created a &amp;ldquo;sci-fi&amp;rdquo; looking world clock using JavaFX. If you are new to this series you can visit Part &lt;a href="https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-1/" title="Part 1"&gt;1&lt;/a&gt;
, &lt;a href="https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-2/" title="Part 2"&gt;2&lt;/a&gt;
, &amp;amp; &lt;a href="https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-3/" title="Part3"&gt;3&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Creating a JavaFX World Clock from Scratch (Part 3)</title><link>https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-3/</link><pubDate>Fri, 02 Apr 2021 09:51:45 +0000</pubDate><guid>https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-3/</guid><description>&lt;blockquote&gt;
&lt;p&gt;An old trick well done is far better than a new trick with no effect. &amp;ndash; Harry Houdini&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-3/Screen-Shot-2021-03-25-at-4.04.43-PM.png" alt="World Clock Location Config Form" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Welcome back to the series of blog entries on how I created a &amp;ldquo;sci-fi&amp;rdquo; looking world clock using JavaFX. If you are new to this series you can visit Part &lt;a href="https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-1/" title="Creating a JavaFX World Clock from Scratch (Part 1)"&gt;[1]&lt;/a&gt;
 &amp;amp; &lt;a href="https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-2/" title="Creating a JavaFX World Clock from Scratch (Part 2)"&gt;[2]&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Creating a JavaFX World Clock from Scratch (Part 2)</title><link>https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-2/</link><pubDate>Thu, 24 Dec 2020 09:46:11 +0000</pubDate><guid>https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-2/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&amp;ldquo;The only way to learn mathematics is to do mathematics.&amp;rdquo;&lt;/em&gt; &amp;ndash; Paul Halmos&lt;a href="https://en.wikipedia.org/wiki/Paul_Halmos" title="Mathematician Paul Halmos" target="_blank" rel="noopener noreferrer"&gt;[1]&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Welcome to &lt;em&gt;Creating a JavaFX World Clock from Scratch Part 2!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is the second installment of a series of blog entries on how I created a &amp;ldquo;sci-fi&amp;rdquo; looking world clock using JavaFX.&lt;/p&gt;
&lt;p&gt;If you have not read Part 1&lt;a href="https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-1/" title="Creating a JavaFX World Clock from Scratch Part 1"&gt;[2]&lt;/a&gt;
 please see the introduction section of the &lt;em&gt;Creating a JavaFX World Clock from Scratch (Part 1)&lt;/em&gt; &lt;a href="https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-1/" title="Creating a JavaFX World Clock from Scratch Part 1"&gt;[2]&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Creating a JavaFX World Clock from Scratch (Part 1)</title><link>https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-1/</link><pubDate>Mon, 14 Dec 2020 09:27:54 +0000</pubDate><guid>https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-1/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Good design&amp;rsquo;s not about what medium you&amp;rsquo;re working in. It&amp;rsquo;s about thinking hard about what you want to do and what you have to work with before you start.&amp;quot; &amp;ndash; Susan Kare &lt;a href="https://en.wikipedia.org/wiki/Susan_Kare" title="Susan Kare" target="_blank" rel="noopener noreferrer"&gt;[6]&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="h3-0-introduction"&gt;Introduction&lt;/h3&gt;
&lt;p&gt;Welcome to &lt;em&gt;Creating a JavaFX World Clock from Scratch (Part 1)&lt;/em&gt;! In this series of blog entries I would like to show you how I created a &amp;ldquo;sci-fi&amp;rdquo; looking world clock that happens to be a cross-platform Java desktop application.&lt;/p&gt;</description></item><item><title>How to get a JavaFX App on ZuluFX in 60 Seconds</title><link>https://foojayio.github.io/website/today/a-javafx-app-on-zulufx-in-60-seconds/</link><pubDate>Sun, 23 Aug 2020 06:57:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/a-javafx-app-on-zulufx-in-60-seconds/</guid><description>&lt;figure class="alignleft is-resized"&gt;
 &lt;img fetchpriority="high" decoding="async" src="https://carlfx.files.wordpress.com/2020/08/duke_azul_jfx_shirt.png?w=174" alt="Duke's shirt with Azul and JavaFX." class="wp-image-3276" width="174" height="313"&gt;
&lt;/figure&gt;
&lt;p&gt;Most Java developers probably know by now that &lt;a href="https://www.oracle.com/" target="_blank" rel="noopener noreferrer"&gt;Oracle&lt;/a&gt;
 has open sourced the Java JDK and hosted its source code on &lt;a href="https://github.com/openjdk" target="_blank" rel="noopener noreferrer"&gt;Github&lt;/a&gt;
 (aka &lt;a href="https://openjdk.java.net/projects/skara/" target="_blank" rel="noopener noreferrer"&gt;Project Skara&lt;/a&gt;
).&lt;/p&gt;
&lt;p&gt;Oracle encourages companies to get paid &lt;a href="https://www.oracle.com/java/java-se-subscription.html" target="_blank" rel="noopener noreferrer"&gt;support&lt;/a&gt;
for their LTS (Long-term support) versions of the JDK, however for the mass majority of developers (like myself), who still want to enjoy free versions of the latest JDK and JavaFX, we can now get distributions from third-party vendors or build it ourselves (&lt;a href="https://github.com/openjdk" target="_blank" rel="noopener noreferrer"&gt;OpenJDK&lt;/a&gt;
 / &lt;a href="https://github.com/openjdk/jfx" target="_blank" rel="noopener noreferrer"&gt;OpenJFX&lt;/a&gt;
).&lt;/p&gt;</description></item></channel></rss>