<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://inside.java/feed.xml" rel="self" type="application/atom+xml" /><link href="https://inside.java/" rel="alternate" type="text/html" /><updated>2026-04-17T12:58:26+00:00</updated><id>https://inside.java/feed.xml</id><title type="html">insidejava</title><subtitle>News and views from members of the Java team at Oracle</subtitle><entry><title type="html">Episode 55 “You Must Avoid Final Field Mutation” [IJN]</title><link href="https://inside.java/2026/04/16/podcast-055/" rel="alternate" type="text/html" title="Episode 55 “You Must Avoid Final Field Mutation” [IJN]" /><published>2026-04-16T00:00:00+00:00</published><updated>2026-04-16T00:00:00+00:00</updated><id>https://inside.java/2026/04/16/Podcast-055</id><content type="html" xml:base="https://inside.java/2026/04/16/podcast-055/"><![CDATA[<p><img class="webfeedsFeaturedVisual" style="display: none;" src="/images/thumbnail/ChadMic.jpg?708418254" /></p>

<p><br /></p>

<iframe title="Libsyn Player" style="border: none" src="//html5-player.libsyn.com/embed/episode/id/40896780/height/90/theme/custom/thumbnail/yes/direction/forward/render-playlist/no/custom-color/000000/" height="90" width="100%" scrolling="no"></iframe>

<div class="youtube-embed">
<iframe src="https://www.youtube.com/embed/KoOrPzGC_7w" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>
</div>

<p><br /></p>

<p>With JDK 26 / JEP 500 starting to prevent final field mutation through reflection, it is important that Java projects stop employing that practice. Whether it is for dependency injection, serialization, cloning, or general hackery, alternatives need to be explored.</p>

<p>Links:</p>
<ul>
  <li><a href="https://openjdk.org/jeps/500">JEP 500</a></li>
  <li><a href="https://www.youtube.com/watch?v=bdHkbEIdBAs">Inside Java Newscast #101</a></li>
</ul>

<p><br />
Make sure to also check the <strong>Duke’s Corner podcast</strong> on <a href="https://dev.java/duke/corner/">dev.java</a>.</p>

<p><br /></p>

<h3 id="additional-resources">Additional resources</h3>

<ul>
  <li><a href="https://inside.java">Inside.java</a> : News and views from members of the Java team at Oracle</li>
  <li><a href="https://dev.java">Dev.java</a> : The Destination for Java Developers</li>
  <li><a href="https://openjdk.java.net/">OpenJDK</a></li>
  <li><a href="https://www.oracle.com/java/">Oracle Java</a></li>
</ul>

<p>For more episodes, check out <a href="https://inside.java/podcast">Inside Java</a>, our <a href="https://www.youtube.com/playlist?list=PLX8CzqL3ArzV_hXbRevwzrXSMcGNzhxiZ">YouTube playlist</a>, and follow <a href="https://twitter.com/java">@Java</a> on Twitter.</p>

<p>Contact us <a href="https://inside.java/about/">here</a>.</p>]]></content><author><name>[&quot;NicolaiParlog&quot;]</name></author><category term="Integrity by Default" /><summary type="html"><![CDATA[With JDK 26 / JEP 500 starting to prevent final field mutation through reflection, it is important that Java projects stop employing that practice.]]></summary></entry><entry><title type="html">Oracle Java Extension for Visual Studio Code Version 25.1.0 Is Now Available</title><link href="https://inside.java/2026/04/14/java-vscode-extension-update/" rel="alternate" type="text/html" title="Oracle Java Extension for Visual Studio Code Version 25.1.0 Is Now Available" /><published>2026-04-14T00:00:00+00:00</published><updated>2026-04-14T00:00:00+00:00</updated><id>https://inside.java/2026/04/14/java-vscode-extension-update</id><content type="html" xml:base="https://inside.java/2026/04/14/java-vscode-extension-update/"><![CDATA[<p>The Oracle Java Platform Extension for Visual Studio Code version 25.1.0 is now live on the <a href="https://marketplace.visualstudio.com/items?itemName=Oracle.oracle-java">Visual Studio Code Marketplace</a> and the <a href="https://open-vsx.org/extension/Oracle/oracle-java">Open VSX Registry</a>.</p>

<p>The Java Extension for VS Code version 25.1.0 is based on Apache NetBeans 28 and adds the following enhancements:</p>
<ul>
  <li>Support for all JDK 26 features, including preview features.</li>
  <li>Enhanced the Notebook feature with runtime VM configuration options.</li>
  <li>UI enhancements in the JDK Downloader, simplifying the download of the latest Oracle JDK.</li>
</ul>

<p>In addition to enhancements, this release includes bug fixes. For more details, please see the <a href="https://marketplace.visualstudio.com/items/Oracle.oracle-java/changelog">Change Log</a>.</p>

<center><img src="/images/blog/vscode/duke-vscode.png" style="max-width: 300px;" /></center>]]></content><author><name>[&quot;ArvindAprameya&quot;]</name></author><category term="Oracle" /><summary type="html"><![CDATA[New release of Java Platform Extension for VS Code]]></summary></entry><entry><title type="html">Quality Outreach Heads-up - JDK 27: Obsolete Translation Resources Removed</title><link href="https://inside.java/2026/04/13/quality-heads-up/" rel="alternate" type="text/html" title="Quality Outreach Heads-up - JDK 27: Obsolete Translation Resources Removed" /><published>2026-04-13T00:00:00+00:00</published><updated>2026-04-13T00:00:00+00:00</updated><id>https://inside.java/2026/04/13/Quality-Heads-Up</id><content type="html" xml:base="https://inside.java/2026/04/13/quality-heads-up/"><![CDATA[<p><img class="webfeedsFeaturedVisual" style="display: none;" src="/images/thumbnail/code.jpg" /></p>

<p><i>The <a href="https://wiki.openjdk.java.net/display/quality/Quality+Outreach">OpenJDK Quality Group</a> is promoting the testing of FOSS projects with OpenJDK builds as a way to improve the overall quality of the release. This heads-up is part of a <a href="https://mail.openjdk.org/archives/list/quality-discuss@openjdk.org/thread/REAJQSW4DJ6BZNEKLGU56HB2757I26HM/">Quality Outreach</a> update sent to the projects involved. To learn more about the program, and how-to join, please check <a href="https://wiki.openjdk.java.net/display/quality/Quality+Outreach">here</a>.</i></p>

<h2 id="jdk-27-obsolete-translation-resources-removed">JDK 27: Obsolete Translation Resources Removed</h2>

<p>The JDK includes localized resource files for a number of locales; however, not all of these locales are actively maintained. In addition to the base English resources, only German, Japanese, and Simplified Chinese are currently maintained. Over time, resource files for unmaintained locales tend to drift out of sync with their English counterparts. Not all resource files are equally affected, as some remain relatively stable compared to others.</p>

<p>Oracle JDK builds already exclude these unmaintained resources at build time. However, they are still present in the OpenJDK source tree and may be included in other JDK builds. As a result, users of such builds may encounter outdated localized messages without being aware of it.</p>

<p>JDK 27 removes unmaintained translation resources, with the exception of those in the <code class="language-plaintext highlighter-rouge">java.desktop</code> module. Unlike other resources, <code class="language-plaintext highlighter-rouge">java.desktop</code> strings may be presented directly to end users of Java applications, not just developers. Because these resources are relatively stable and their removal would be disruptive, they are retained.</p>

<p>The overall compatibility risk is low. Oracle JDK builds are not affected, as they already exclude these unmaintained resources during the build process. However, other JDK builds that do not exclude them (which is the default) may be impacted. In these builds, unsupported locale messages will now appear in English, potentially affecting tests or applications that rely on fixed, locale-specific output (a discouraged practice).</p>

<p>For more information, please check <a href="https://bugs.openjdk.org/browse/JDK-8381511">JDK-8381511</a>.</p>

<center>~</center>]]></content><author><name>[&quot;DavidDelabassee&quot;]</name></author><category term="JDK 27" /><summary type="html"><![CDATA[This Heads-Up is part of the regular communication sent to the projects involved; it covers the removal of obsolete translation resources in JDK 27.]]></summary></entry><entry><title type="html">Newsletter: Java 26 Is Now Available | JDK 27 Heads-Ups</title><link href="https://inside.java/2026/04/12/newsletter/" rel="alternate" type="text/html" title="Newsletter: Java 26 Is Now Available | JDK 27 Heads-Ups" /><published>2026-04-12T00:00:00+00:00</published><updated>2026-04-12T00:00:00+00:00</updated><id>https://inside.java/2026/04/12/Newsletter</id><content type="html" xml:base="https://inside.java/2026/04/12/newsletter/"><![CDATA[<p>This Heads-Up is part of the regular communication sent to the projects involved; it announces the General Availability of Java 26…</p>

<p><img class="webfeedsFeaturedVisual" style="display: none;" src="/images/thumbnail/code.jpg?697567961" /></p>]]></content><author><name>[&quot;DavidDelabassee&quot;]</name></author><category term="JDK 26" /><category term="JDK 27" /><summary type="html"><![CDATA[This Heads-Up is part of the regular communication sent to the projects involved; it announces the General Availability of Java 26...]]></summary></entry><entry><title type="html">Episode 54 “How JDK 26 Improves G1’s Throughput” [AtA]</title><link href="https://inside.java/2026/04/09/podcast-054/" rel="alternate" type="text/html" title="Episode 54 “How JDK 26 Improves G1’s Throughput” [AtA]" /><published>2026-04-09T00:00:00+00:00</published><updated>2026-04-09T00:00:00+00:00</updated><id>https://inside.java/2026/04/09/Podcast-054</id><content type="html" xml:base="https://inside.java/2026/04/09/podcast-054/"><![CDATA[<p><img class="webfeedsFeaturedVisual" style="display: none;" src="/images/thumbnail/ChadMic.jpg?693870729" /></p>

<p><br /></p>

<iframe title="Libsyn Player" style="border: none" src="//html5-player.libsyn.com/embed/episode/id/40782885/height/90/theme/custom/thumbnail/yes/direction/forward/render-playlist/no/custom-color/000000/" height="90" width="100%" scrolling="no"></iframe>

<div class="youtube-embed">
<iframe src="https://www.youtube.com/embed/MIxIFnaEPwc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>
</div>

<p><br /></p>

<p>G1 is Java’s default garbage collector in most environments, and its throughput has been considerably improved in JDK 26 by streamlining its write barriers. This conversation explores the background of that change and dives deep into regions, write barriers, concurrent marking, card tables, and how all that impacts throughput before eventually getting to the improvements made in Java 26, which lay further groundwork to G1 becoming the one and only default collector across <em>all</em> environments.</p>

<p>In this “Ask the Architect” episode of the Inside Java Podcast, recorded during JavaOne 2026, Nicolai Parlog talks to Stefan Johansson, HotSpot Garbage Collection engineer at Oracle.</p>

<p>JEP 522: https://openjdk.org/jeps/522</p>

<p><br /></p>

<p>Make sure to also check the <strong>Duke’s Corner podcast</strong> on <a href="https://dev.java/duke/corner/">dev.java</a>.</p>

<p><br /></p>

<h3 id="additional-resources">Additional resources</h3>

<ul>
  <li><a href="https://inside.java">Inside.java</a> : News and views from members of the Java team at Oracle</li>
  <li><a href="https://dev.java">Dev.java</a> : The Destination for Java Developers</li>
  <li><a href="https://openjdk.java.net/">OpenJDK</a></li>
  <li><a href="https://www.oracle.com/java/">Oracle Java</a></li>
</ul>

<p>For more episodes, check out <a href="https://inside.java/podcast">Inside Java</a>, our <a href="https://www.youtube.com/playlist?list=PLX8CzqL3ArzV_hXbRevwzrXSMcGNzhxiZ">YouTube playlist</a>, and follow <a href="https://twitter.com/java">@Java</a> on Twitter.</p>

<p>Contact us <a href="https://inside.java/about/">here</a>.</p>]]></content><author><name>[&quot;NicolaiParlog&quot;]</name></author><category term="GC" /><category term="JDK 26" /><summary type="html"><![CDATA[G1 is Java's default garbage collector in most environments and its throughput has been considerably improved in JDK 26 by streamlining its write barriers, which are discussed in this episode together with regions, concurrent marking, and card tables.]]></summary></entry><entry><title type="html">Java and Post-Quantum Cryptography</title><link href="https://inside.java/2026/04/08/javaone-post-quantum-cryptography/" rel="alternate" type="text/html" title="Java and Post-Quantum Cryptography" /><published>2026-04-08T00:00:00+00:00</published><updated>2026-04-08T00:00:00+00:00</updated><id>https://inside.java/2026/04/08/JavaOne-Post-Quantum-Cryptography</id><content type="html" xml:base="https://inside.java/2026/04/08/javaone-post-quantum-cryptography/"><![CDATA[<div class="youtube-embed">
    <iframe src="https://www.youtube.com/embed/bN4W74o" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe>
</div>

<p><em>Today, the security of the world’s digital infrastructure relies on traditional public-key based cryptographic algorithms such as RSA, and Diffie-Hellman and its elliptic curve variants. However, there’s a looming threat on the horizon predicted to eventually break these algorithms: Quantum Computers.</em></p>

<p><em>In this session, we’ll show how the Java Platform is preparing for this paradigm shift in security by adding support for Post-Quantum Cryptography (PQC), which are algorithms designed to be secure against quantum computer attacks. Come to this session to learn about the PQC-related features we’ve already delivered and what we’re working on for JDK 27 and beyond.</em></p>

<p><em>Make sure to check the <a href="https://www.youtube.com/playlist?list=PLX8CzqL3ArzUMVSzm-z_-if8BIB55EGl4">JavaOne 2026 playlist</a>.</em></p>]]></content><author><name>[&quot;SeanMullan&quot;]</name></author><category term="Security" /><category term="JDK 26" /><category term="JDK 27" /><summary type="html"><![CDATA[In this session, we'll show how the Java Platform is preparing for this paradigm shift in security by adding support for Post-Quantum Cryptography (PQC), which are algorithms designed to be secure against quantum computer attacks. Come to this session to learn about the PQC-related features we've already delivered and what we're working on for JDK 27 and beyond.]]></summary></entry><entry><title type="html">Episode 53 “Analyzing Crashed JVMs” [IJN]</title><link href="https://inside.java/2026/04/04/podcast-053/" rel="alternate" type="text/html" title="Episode 53 “Analyzing Crashed JVMs” [IJN]" /><published>2026-04-04T00:00:00+00:00</published><updated>2026-04-04T00:00:00+00:00</updated><id>https://inside.java/2026/04/04/Podcast-053</id><content type="html" xml:base="https://inside.java/2026/04/04/podcast-053/"><![CDATA[<p><img class="webfeedsFeaturedVisual" style="display: none;" src="/images/thumbnail/ChadMic.jpg?685229950" /></p>

<p><br /></p>

<iframe title="Libsyn Player" style="border: none" src="//html5-player.libsyn.com/embed/episode/id/40730755/height/90/theme/custom/thumbnail/yes/direction/forward/render-playlist/no/custom-color/000000/" height="90" width="100%" scrolling="no"></iframe>

<div class="youtube-embed">
<iframe src="https://www.youtube.com/embed/5KO_JKy9fNA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>
</div>

<p><br /></p>

<p>The Java tool <code class="language-plaintext highlighter-rouge">jcmd</code> (“j command”) sends diagnostic commands to the JVM, which will react by supplying the desired information: from finalizer queues to heap and thread dumps, from GC insights to virtual thread scheduler statistics. At the moment, this requires a running JVM, but once candidate <a href="https://openjdk.org/jeps/528">JEP 528</a> is adopted, a lot of that information can be seamlessly extracted from a crashed JVM’s core dump, allowing easy post-mortem analysis.</p>

<p>Links:</p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">jcmd</code> documentation: https://docs.oracle.com/en/java/javase/26/docs/specs/man/jcmd.html</li>
  <li>JEP 528: https://openjdk.org/jeps/528</li>
</ul>

<p><br />
Make sure to also check the <strong>Duke’s Corner podcast</strong> on <a href="https://dev.java/duke/corner/">dev.java</a>.</p>

<p><br /></p>

<h3 id="additional-resources">Additional resources</h3>

<ul>
  <li><a href="https://inside.java">Inside.java</a> : News and views from members of the Java team at Oracle</li>
  <li><a href="https://dev.java">Dev.java</a> : The Destination for Java Developers</li>
  <li><a href="https://openjdk.java.net/">OpenJDK</a></li>
  <li><a href="https://www.oracle.com/java/">Oracle Java</a></li>
</ul>

<p>For more episodes, check out <a href="https://inside.java/podcast">Inside Java</a>, our <a href="https://www.youtube.com/playlist?list=PLX8CzqL3ArzV_hXbRevwzrXSMcGNzhxiZ">YouTube playlist</a>, and follow <a href="https://twitter.com/java">@Java</a> on Twitter.</p>

<p>Contact us <a href="https://inside.java/about/">here</a>.</p>]]></content><author><name>[&quot;NicolaiParlog&quot;]</name></author><category term="HotSpot" /><category term="Serviceability" /><summary type="html"><![CDATA[The Java tool jcmd (“j command”) sends diagnostic commands to the JVM, which will react by supplying the desired information: from finalizer queues to heap and thread dumps, from GC insights to virtual thread scheduler statistics. At the moment, this requires a running JVM, but once candidate is adopted, a lot of that information can be seamlessly extracted from a crashed JVM’s core dump, allowing easy post-mortem analysis.]]></summary></entry><entry><title type="html">Analyzing Crashed JVMs - Inside Java Newscast #109</title><link href="https://inside.java/2026/04/02/newscast-109/" rel="alternate" type="text/html" title="Analyzing Crashed JVMs - Inside Java Newscast #109" /><published>2026-04-02T00:00:00+00:00</published><updated>2026-04-02T00:00:00+00:00</updated><id>https://inside.java/2026/04/02/Newscast-109</id><content type="html" xml:base="https://inside.java/2026/04/02/newscast-109/"><![CDATA[<div class="youtube-embed">
    <iframe src="https://www.youtube.com/embed/5KO_JKy9fNA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe>
</div>

<p><em>The Java tool <code class="language-plaintext highlighter-rouge">jcmd</code> (“j command”) sends diagnostic commands to the JVM, which will react by supplying the desired information: from finalizer queues to heap and thread dumps, from GC insights to virtual thread scheduler statistics. At the moment, this requires a running JVM, but once candidate <a href="https://openjdk.org/jeps/528">JEP 528</a> is adopted, a lot of that information can be seamlessly extracted from a crashed JVM’s core dump, allowing easy post-mortem analysis.</em></p>

<p><em>Make sure to check the <a href="https://www.youtube.com/watch?v=5KO_JKy9fNA">show-notes</a>.</em></p>]]></content><author><name>[&quot;NicolaiParlog&quot;]</name></author><category term="HotSpot" /><category term="Serviceability" /><summary type="html"><![CDATA[The Java tool jcmd ("j command") sends diagnostic commands to the JVM, which will react by supplying the desired information: from finalizer queues to heap and thread dumps, from GC insights to virtual thread scheduler statistics. At the moment, this requires a running JVM, but once candidate JEP 528 is adopted, a lot of that information can be seamlessly extracted from a crashed JVM's core dump, allowing easy post-mortem analysis.]]></summary></entry><entry><title type="html">Episode 52 “Carrier Classes &amp;amp; Discussing Syntax” [AtA]</title><link href="https://inside.java/2026/03/26/podcast-052/" rel="alternate" type="text/html" title="Episode 52 “Carrier Classes &amp;amp; Discussing Syntax” [AtA]" /><published>2026-03-26T00:00:00+00:00</published><updated>2026-03-26T00:00:00+00:00</updated><id>https://inside.java/2026/03/26/Podcast-052</id><content type="html" xml:base="https://inside.java/2026/03/26/podcast-052/"><![CDATA[<p><img class="webfeedsFeaturedVisual" style="display: none;" src="/images/thumbnail/ChadMic.jpg?675597589" /></p>

<p><br /></p>

<iframe title="Libsyn Player" style="border: none" src="//html5-player.libsyn.com/embed/episode/id/40628645/height/90/theme/custom/thumbnail/yes/direction/forward/render-playlist/no/custom-color/000000/" height="90" width="100%" scrolling="no"></iframe>

<div class="youtube-embed">
<iframe src="https://www.youtube.com/embed/b6cXuA84c9g" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>
</div>

<p><br /></p>

<p>Carrier classes are Project Amber’s current idea to extend some of records’ benefits to regular classes. Probably the most important among them is deconstruction, which would allow classes to participate in pattern matching and reconstruction. In recent weeks, there have been two mails to the Amber mailing list that describe that idea, and in this episode we discuss them both as well as the evolution between them. We also hear why syntax discussions often provide negative value and get a sneak peak at what will likely be the next Project Amber language feature.</p>

<p>Just ahead of the JavaOne speakers dinner, Nicolai Parlog sits down with Brian Goetz, Java Language Architect in Oracle’s Java Platform Group, for this “Ask the Architect” episode of the Inside Java Podcast.</p>

<p>Links:</p>
<ul>
  <li><a href="https://mail.openjdk.org/pipermail/amber-spec-experts/2026-January/004307.html">mail #1</a></li>
  <li><a href="https://mail.openjdk.org/pipermail/amber-spec-experts/2026-February/004351.html">mail #2</a></li>
</ul>

<p><br /></p>

<p>Make sure to also check the <strong>Duke’s Corner podcast</strong> on <a href="https://dev.java/duke/corner/">dev.java</a>.</p>

<p><br /></p>

<h3 id="additional-resources">Additional resources</h3>

<ul>
  <li><a href="https://inside.java">Inside.java</a> : News and views from members of the Java team at Oracle</li>
  <li><a href="https://dev.java">Dev.java</a> : The Destination for Java Developers</li>
  <li><a href="https://openjdk.java.net/">OpenJDK</a></li>
  <li><a href="https://www.oracle.com/java/">Oracle Java</a></li>
</ul>

<p>For more episodes, check out <a href="https://inside.java/podcast">Inside Java</a>, our <a href="https://www.youtube.com/playlist?list=PLX8CzqL3ArzV_hXbRevwzrXSMcGNzhxiZ">YouTube playlist</a>, and follow <a href="https://twitter.com/java">@Java</a> on Twitter.</p>

<p>Contact us <a href="https://inside.java/about/">here</a>.</p>]]></content><author><name>[&quot;NicolaiParlog&quot;]</name></author><category term="Amber" /><category term="Java Language" /><summary type="html"><![CDATA[Carrier classes are Project Amber's current idea to extend some of records' benefits to regular classes. Probably the most important among them is deconstruction, which would allow classes to participate in pattern matching and reconstruction.]]></summary></entry><entry><title type="html">JavaFX 26 Today</title><link href="https://inside.java/2026/03/25/javaone-javafx/" rel="alternate" type="text/html" title="JavaFX 26 Today" /><published>2026-03-25T00:00:00+00:00</published><updated>2026-03-25T00:00:00+00:00</updated><id>https://inside.java/2026/03/25/JavaOne-JavaFX</id><content type="html" xml:base="https://inside.java/2026/03/25/javaone-javafx/"><![CDATA[<div class="youtube-embed">
    <iframe src="https://www.youtube.com/embed/Z3eHldNlHlU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe>
</div>

<p><em>Building a compelling desktop app today requires features such as UI controls, charts, interactive media, web content, animation, CSS styling, 2D and 3D rendering, rich text, and property binding, with an easy-to-use programming paradigm that runs cross-platform. JavaFX is all this and more, delivering a rich graphical UI toolkit for building your applications and can also seamlessly interoperate with Swing.</em></p>

<p><em>In this session you’ll learn about the new and exciting features we’ve developed over the past couple of years, culminating with the release of JavaFX 26. You’ll also get an update on RichTextArea. We’ll show plenty of demos and sample code, and finish with a sneak peek at what’s coming next.</em></p>

<p><em>Make sure to check the <a href="https://www.youtube.com/playlist?list=PLX8CzqL3ArzUMVSzm-z_-if8BIB55EGl4">JavaOne 2026 playlist</a>.</em></p>]]></content><author><name>[&quot;KevinRushforth&quot;]</name></author><category term="Client" /><category term="JDK 26" /><summary type="html"><![CDATA[Building a compelling desktop app today requires features such as UI controls, charts, interactive media, web content, animation, CSS styling, 2D and 3D rendering, rich text, and property binding, with an easy-to-use programming paradigm that runs cross-platform. JavaFX is all this and more, delivering a rich graphical UI toolkit for building your applications and can also seamlessly interoperate with Swing.]]></summary></entry></feed>