<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Project Panama on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/category/project-panama/</link><description>Recent content in Project Panama on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 10 Jun 2026 14:49:57 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/category/project-panama/index.xml" rel="self" type="application/rss+xml"/><item><title>Your TLS Stack Is Lying to You About Zero-Copy</title><link>https://foojayio.github.io/website/today/your-tls-stack-is-lying-about-zero-copy/</link><pubDate>Wed, 10 Jun 2026 12:00:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/your-tls-stack-is-lying-about-zero-copy/</guid><description>&lt;h2 id="h2-0-the-no-waste-compute-constraint"&gt;The &amp;ldquo;No Waste Compute&amp;rdquo; Constraint&lt;/h2&gt;
&lt;p&gt;When I started designing the Exeris Kernel, I set one non-negotiable rule very early: no waste compute. That rule sounds like a performance slogan until it starts killing otherwise normal design decisions.&lt;/p&gt;
&lt;p&gt;I had already banned &lt;code&gt;ThreadLocal&lt;/code&gt;, moved context propagation to Scoped Values, and pushed more of the runtime into explicit off-heap ownership. The idea was simple: if the hot path is supposed to stay outside GC pressure, then memory shape and lifetime cannot be treated as incidental details.&lt;/p&gt;</description></item><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>Async file IO with Java and io_uring</title><link>https://foojayio.github.io/website/today/async-file-io-with-java-and-io_uring/</link><pubDate>Fri, 18 Apr 2025 09:28:16 +0000</pubDate><guid>https://foojayio.github.io/website/today/async-file-io-with-java-and-io_uring/</guid><description>&lt;p&gt;When I first started exploring Virtual Threads in Java, I wanted to understand everything about them like, performance characteristics, when they yield, and limitations. This journey led me to an interesting challenge about file I/O operations. These operations cause Virtual Threads to become &amp;ldquo;pinned&amp;rdquo; to platform threads, limiting their effectiveness for I/O-heavy applications.&lt;/p&gt;
&lt;p&gt;This pinning issue has been widely acknowledged across the Java community. It&amp;rsquo;s mentioned in the Virtual Threads &lt;a href="https://openjdk.org/jeps/425" target="_blank" rel="noopener noreferrer"&gt;JEP&lt;/a&gt;
, discussed on &lt;a href="https://www.reddit.com/r/java/comments/1h0cr5g/comment/lz3lv11/" target="_blank" rel="noopener noreferrer"&gt;Reddit threads&lt;/a&gt;
, debated on &lt;a href="https://mail.openjdk.org/pipermail/loom-dev/2024-June/006638.html" target="_blank" rel="noopener noreferrer"&gt;mailing lists&lt;/a&gt;
, and highlighted in the &amp;ldquo;&lt;a href="https://cr.openjdk.org/~rpressler/loom/loom/sol1_part1.html" target="_blank" rel="noopener noreferrer"&gt;State of Loom&lt;/a&gt;
&amp;rdquo;. The consistent message: File I/O and Virtual Threads don&amp;rsquo;t play nicely together.&lt;/p&gt;</description></item><item><title>Foojay Podcast #62: Better Coding with AI: Friend or Enemy?</title><link>https://foojayio.github.io/website/today/foojay-podcast-62/</link><pubDate>Mon, 02 Dec 2024 14:57:10 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-62/</guid><description>&lt;p&gt;AI, LLMs, ChatGPT&amp;mdash;these are just a few of the buzzwords of the massive revolution unfolding right now.&lt;/p&gt;
&lt;p&gt;These tools are reshaping how we work, but they come with a catch: while they help us work faster and smarter, we need to be careful about placing too much trust in them.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve spoken with several guests at the JFall conference in the Netherlands actively working with these tools to learn more about them. And I had a chat with Grace Jansen about a recent Foojay blog post.&lt;/p&gt;</description></item><item><title>Foojay Podcast #56: Vectors in Java Code, Databases, and LLMs</title><link>https://foojayio.github.io/website/today/foojay-podcast-56/</link><pubDate>Mon, 08 Jul 2024 07:33:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-56/</guid><description>&lt;p&gt;In this Foojay podcast, we enter the world of mathematics by discussing Vectors and how they are crucial for AI and machine learning.&lt;/p&gt;
&lt;p&gt;As ChatGPT explains: &lt;strong&gt;&amp;ldquo;A Vector is a mathematical structure that holds numerical values. Vectors are fundamental to the field of Artificial Intelligence, as they allow mathematical operations to be performed efficiently and form the basis of many machine learning algorithms.&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;OK, but&amp;hellip; how are these vectors crucial for the whole Artificial Intelligence evolution?&lt;/p&gt;</description></item><item><title>Foojay Podcast #47: Artificial Intelligence and Machine Learning with Java</title><link>https://foojayio.github.io/website/today/foojay-podcast-47/</link><pubDate>Mon, 15 Apr 2024 09:59:42 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-47/</guid><description>&lt;p&gt;About one and a half years ago, ChatGPT was launched.&lt;/p&gt;
&lt;p&gt;The way we search for information and develop software has changed a lot since then as the use of Artificial Intelligence suddenly became a lot easier.&lt;/p&gt;
&lt;p&gt;What can we expect in the near future, and how can we program AI ourselves with Java? Let&amp;rsquo;s find out&amp;hellip;&lt;/p&gt;
&lt;h2 id="h2-0-video"&gt;Video&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/E1gBwWFpfUA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1-podcast-apps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Java 22 Is Here, And It's Ready To Rock</title><link>https://foojayio.github.io/website/today/java-22-is-here-and-its-ready-to-rock/</link><pubDate>Tue, 19 Mar 2024 13:56:23 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-22-is-here-and-its-ready-to-rock/</guid><description>&lt;p&gt;Java 22 is here!&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s been six months since Java 21 was released, so it&amp;rsquo;s time for another fresh set of Java features.&lt;/p&gt;
&lt;p&gt;In this article, you&amp;rsquo;ll go on a tour of the JEPs that are part of this release, giving you a brief introduction to each of them.&lt;/p&gt;
&lt;p&gt;Where applicable, the differences with Java 21 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;/p&gt;</description></item><item><title>Foojay Podcast #29: How will AI and ML Influence the Role of Developers?</title><link>https://foojayio.github.io/website/today/foojay-podcast-29/</link><pubDate>Mon, 25 Sep 2023 07:24:33 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-29/</guid><description>&lt;p&gt;Artificial Intelligence and ChatGPT are the talk of the town.&lt;/p&gt;
&lt;p&gt;Every conference has several talks about these technologies, and on Foojay, you can find multiple posts about it.&lt;/p&gt;
&lt;p&gt;In this podcast, we want to take a look at it from the Java point of view.&lt;/p&gt;
&lt;p&gt;How can we use AI in Java programs or our job as a developer?&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/Tvk8ykfbkDU?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>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>It's Java 20 Release Day! Here's What's New | foojay.io Today</title><link>https://foojayio.github.io/website/today/its-java-20-release-day-heres-whats-new/</link><pubDate>Tue, 21 Mar 2023 06:40:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/its-java-20-release-day-heres-whats-new/</guid><description>&lt;p&gt;This will be a good day, because it&amp;rsquo;s Java 20 release day!&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s been six months since Java 19 was released, and so it&amp;rsquo;s time for another fresh wave of Java features.&lt;/p&gt;
&lt;p&gt;In this article, we will take you on a tour through all JEPs that come with this release and give you a brief introduction of each one of them.&lt;/p&gt;
&lt;p&gt;Where applicable the differences with Java 19 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 you&amp;rsquo;ve finished reading!&lt;/p&gt;</description></item><item><title>Foojay Podcast #5: OpenJDK Discussion Panel</title><link>https://foojayio.github.io/website/today/foojay-podcast-5/</link><pubDate>Tue, 20 Sep 2022 15:56:27 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-5/</guid><description>&lt;p&gt;It&amp;rsquo;s September 20th, OpenJDK 19 has been released. In this podcast, we discuss the new features and the changes that this release brings.&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/71ZAYZWwpuI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1--odcast-pps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://open.spotify.com/show/6CpTfgn9LirzJGAtc4ICdQ" target="_blank" rel="noopener noreferrer"&gt;Spotify&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/be/podcast/foojay-io-the-friends-of-openjdk/id1652281304" target="_blank" rel="noopener noreferrer"&gt;Apple Podcasts&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;And most others&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-1-guests"&gt;Guests&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://twitter.com/miragemiko" target="_blank" rel="noopener noreferrer"&gt;Miroslav Wengner&lt;/a&gt;
&lt;/strong&gt; (OpenValue)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://twitter.com/mgrygles" target="_blank" rel="noopener noreferrer"&gt;Mary Grygleski&lt;/a&gt;
&lt;/strong&gt; (CJUG, DataStax)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://twitter.com/deepu105" target="_blank" rel="noopener noreferrer"&gt;Deepu K Sasidharan&lt;/a&gt;
&lt;/strong&gt; (Okta, JHipster)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-2-podcast-host"&gt;Podcast host&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://twitter.com/costlow" target="_blank" rel="noopener noreferrer"&gt;Erik Costlow&lt;/a&gt;
&lt;/strong&gt; (Azul)&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>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>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></channel></rss>