<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Gerrit Grunwald on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/gerrit-grunwald/</link><description>Articles written by Gerrit Grunwald on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 04 May 2026 06:26:00 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/gerrit-grunwald/index.xml" rel="self" type="application/rss+xml"/><item><title>Foojay Podcast #94: More Than a Blog: How Foojay Connects, Sustains, and Evolves the Java Community</title><link>https://foojayio.github.io/website/today/foojay-podcast-94/</link><pubDate>Mon, 04 May 2026 06:26:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-94/</guid><description>&lt;p&gt;Foojay.io, the website for the Friends of OpenJDK, is turning six years old. To celebrate, Frank Delporte headed to JCON in Cologne, Germany, and sat down with twelve members of the Java community to talk about what Foojay means to them, what they learn from each other, and how the community is evolving.&lt;/p&gt;
&lt;p&gt;This episode covers a lot of ground. Sharat Chandar reflects on 25 years in the Java community and why the people are what keep the language alive. Markus Westergren and Iryna Dohndorf both focus on a theme that comes up again and again: developer sustainability. Not just green software, but how you stay healthy, grounded, and relevant when AI is changing everything around you. Markus and his wife researched how developers are reacting to AI, from ignoring it completely to transforming everything they do. Iryna talks about building resilience and robustness as skills, not afterthoughts.&lt;/p&gt;</description></item><item><title>Video series “JavaFX In Action”, Part 5 with Cormac Redmond (KafkIO), Brian Schlining (Annotating the Deep-Sea Wildlife), Gerrit Grunwald (JavaFX Libraries), Dirk Lemmermann (JavaFX Libraries and Applications, JFX Central)</title><link>https://foojayio.github.io/website/today/video-series-javafx-in-action-part-5/</link><pubDate>Fri, 18 Jul 2025 06:18:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/video-series-javafx-in-action-part-5/</guid><description>&lt;p&gt;This is the next part in the series of &amp;ldquo;JavaFX in Action&amp;rdquo; interviews. Are you working on a fantastic JavaFX application? Let me know, and let&amp;rsquo;s discuss it in the new year!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://foojayio.github.io/website/today/new-video-series-javafx-in-action-part-1/"&gt;July &amp;lsquo;24: Pedro Duque Vieira, Daniel Zimmermann, Christopher Schnick, and Robert Ladstätter&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://foojayio.github.io/website/today/video-series-javafx-in-action-part-2/"&gt;November &amp;lsquo;24: Maciej Gorywoda, Ramiro Domínguez Ayub, Christoph Schwentker, Ulas Ergin&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://foojayio.github.io/website/today/video-series-javafx-in-action-part-3/"&gt;December &amp;lsquo;24: Özkan Pakdil, Clément de Tastes, Almas Baim, Steve Hannah, Jago de Vreede&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://foojayio.github.io/website/today/video-series-javafx-in-action-part-4/"&gt;March &amp;lsquo;25: Mike Hearn, Sven Reimers, Chris Newland&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-0-cormac-redmond-kafkio-the-kafka-ui-for-engineers-and-admins"&gt;Cormac Redmond: KafkIO, the Kafka UI for Engineers and Admins&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.linkedin.com/in/cormacredmond/" target="_blank" rel="noopener noreferrer"&gt;Cormac Redmond&lt;/a&gt;
 is an &amp;ldquo;All-things Java / Spring / MicroServices&amp;rdquo; expert who has been computing and programming from a young age. He has 20 years of professional experience spanning several industries, building everything from complex distributed systems to bespoke intranets and mobile apps. He enjoys fully and deeply understanding any domain or technology and is happiest when working within cultures that value the importance of building clean, elegant, testable, self-documenting systems while adopting forward-thinking practices and techniques.&lt;/p&gt;</description></item><item><title>Save Time and Money by Reducing False Positives</title><link>https://foojayio.github.io/website/today/save-time-and-money-by-reducing-false-positives/</link><pubDate>Mon, 23 Jun 2025 08:35:27 +0000</pubDate><guid>https://foojayio.github.io/website/today/save-time-and-money-by-reducing-false-positives/</guid><description>&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.azul.com/blog/how-azul-identifies-java-security-vulnerabilities-with-1000-times-greater-accuracy/" target="_blank" rel="noopener noreferrer"&gt;Recently Azul announced that AVD&lt;/a&gt;
 (Azul Vulnerability Detection), which is our solution to scan for security vulnerabilities in production, now comes with a new feature that only makes it possible to identify vulnerable components on a JAR file level but also on class file level.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="h3-0-the-production-scanning-challenge"&gt;The Production Scanning Challenge&lt;/h3&gt;
&lt;p&gt;So what does that mean? Usually, security scanners work in environments from development up to CI/CD, but not in production. The main reason for that is the fact that once you start scanning for vulnerabilities in production, the scanning process itself needs too many resources, which brings down the performance of the system. The performance decrease can be in the range of 10 to 30%, which explains why companies trust security scanners that scan in CI/CD and don&amp;rsquo;t add additional scans in production.&lt;/p&gt;</description></item><item><title>Foojay Podcast #70: Celebrating 5 Years of Foojay</title><link>https://foojayio.github.io/website/today/foojay-podcast-70/</link><pubDate>Fri, 25 Apr 2025 08:00:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-70/</guid><description>&lt;p&gt;On April 25, 2020, &lt;a href="https://foojayio.github.io/website/today/foojay-a-place-for-friends-of-openjdk/"&gt;Geertjan Wielenga published the first Foojay post&lt;/a&gt;
. Yes, we are celebrating 5 years since the Friends Of OpenJDK website launch! Today, more than 1,600 posts are on the site, written by over 250 authors. And there is much more to discover within the Foojay world&amp;hellip;&lt;/p&gt;
&lt;p&gt;In this podcast, we look at how Foojay started with founder Geertjan Wielenga. We&amp;rsquo;ll also hear from Gerrit Grunwald about how Foojay&amp;rsquo;s Disco API has become part of your daily work without you realizing it. We also have several of our regular authors and podcast guests who share how Foojay has influenced them (and vice versa).&lt;/p&gt;</description></item><item><title>Foojay Podcast #63: How do we keep your Java applications up to date and secure?</title><link>https://foojayio.github.io/website/today/foojay-podcast-63/</link><pubDate>Mon, 16 Dec 2024 12:41:10 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-63/</guid><description>&lt;h2 id="h2-0-last-month-i-published-a-foojay-article-about-the-risks-in-systems-that-are-stuck-on-old-or-outdated-java-versions-and-got-a-lot-of-feedback-from-developers-most-of-them-want-to-move-on-but-get-stuck-on-management-decisions-outdated-production-environments-or-one-of-the-many-other-reasons-that-keep-systems-stuck-on-old-java-versions-and-dependencies"&gt;Last month, I published a Foojay article about &lt;a href="https://foojayio.github.io/website/today/why-java-8-is-a-ticking-time-bomb-hiding-within-your-organization/"&gt;the risks in systems that are stuck on old or outdated Java versions&lt;/a&gt;
 and got &lt;a href="https://foojayio.github.io/website/today/how-organizations-became-stuck-on-outdated-java-versions/"&gt;a lot of feedback from developers&lt;/a&gt;
. Most of them want to move on but get stuck on management decisions, outdated production environments, or one of the many other reasons that keep systems stuck on old Java versions and dependencies.&lt;/h2&gt;
&lt;p&gt;Do you want to bring your system from Java 8 to 23? Did you know that Java 17 already has 13 security releases? And that you can use tools like OpenRewrite to help you update your code?&lt;/p&gt;</description></item><item><title>Foojay Podcast #52 from JCON in Cologne!</title><link>https://foojayio.github.io/website/today/foojay-podcast-52/</link><pubDate>Mon, 10 Jun 2024 09:32:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-52/</guid><description>&lt;p&gt;This is part 4 of the JCON interviews!&lt;/p&gt;
&lt;p&gt;In this episode, we have 5 new guests for you.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We start with garbage collectors and Intelligence Cloud, a tool created by Azul to find out which of your code is actually used in production and which dependencies are known to have vulnerabilities. My colleague Gerrit Grunwald was at JCON to give a talk about these subjects.&lt;/li&gt;
&lt;li&gt;With Balkrishna Rawool we dove into Virtual Threads, a very interesting topic as concurrency and threads can be challenging&amp;hellip;&lt;/li&gt;
&lt;li&gt;Piotr Przybyl came to JCON to give a talk about Test Containers and how to test your application in an environment that is similar to your production environment. Another important topic related to testing is Flaky Tests. How do you handle tests that only fail from time to time and make your whole test report unreliable?&lt;/li&gt;
&lt;li&gt;François Martin had a talk about this subject, and he came to the conference together with Annelore Egger, who was one of the many volunteers.&lt;/li&gt;
&lt;/ul&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/9q7kSibmVBA?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>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>Video: "If I decide to stay with Oracle Java what issues will I face?"</title><link>https://foojayio.github.io/website/today/video-if-i-decide-to-stay-with-oracle-java-what-issues-will-i-face/</link><pubDate>Thu, 23 Nov 2023 09:12:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/video-if-i-decide-to-stay-with-oracle-java-what-issues-will-i-face/</guid><description>&lt;p&gt;Simon Ritter and Gerrit Grunwald answer a question that they hear repeatedly: &lt;strong&gt;&amp;ldquo;If I decide to stay with Oracle Java (rather than migrate to an OpenJDK distribution) what issues will I face?&amp;rdquo;&lt;/strong&gt;&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/rGiIm2xdp7w?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;br /&gt;
&lt;br /&gt;</description></item><item><title>New: JDKMonitor</title><link>https://foojayio.github.io/website/today/new-jdkmonitor/</link><pubDate>Wed, 18 Oct 2023 08:04:08 +0000</pubDate><guid>https://foojayio.github.io/website/today/new-jdkmonitor/</guid><description>&lt;p&gt;During &lt;a href="https://devoxx.ma/" title="Devoxx Morocco" target="_blank" rel="noopener noreferrer"&gt;Devoxx Morocco&lt;/a&gt;
 I&amp;rsquo;ve spent some time coding a little new tool where the main reason was to have a widget on my MacOS desktop that shows the days until the next release/update of &lt;a href="https://openjdk.org/" title="OpenJDK" target="_blank" rel="noopener noreferrer"&gt;OpenJDK&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;Because this alone was not enough to get it into the Mac App Store, I needed to add more functionality and so I&amp;rsquo;ve decided to also show the latest version of the last 4 LTS (Long Term Support) releases with the ability to download them either as JDK or JRE and if you like bundle JavaFX with it. At the moment that would mean JDK 8, 11, 17 and 21 with their latest versions available.&lt;/p&gt;</description></item><item><title>Gerrit and Ivar's North America JUG Tour!</title><link>https://foojayio.github.io/website/today/gerrit-and-ivars-north-america-jug-tour/</link><pubDate>Sun, 10 Sep 2023 07:55:15 +0000</pubDate><guid>https://foojayio.github.io/website/today/gerrit-and-ivars-north-america-jug-tour/</guid><description>&lt;p&gt;&lt;strong&gt;Aloha, because I will be in the US this month, I decided to do a little Java User Group tour again. Ivar Grimstad from the Eclipse Foundation will join me and we will visit a couple of JUGs in the week from the 18th to the 22nd of September.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Just in case you are in the area and interested to join one of our sessions or if you only would like to meet us in person, please check out the following links to get further information about the location etc.&lt;/p&gt;</description></item><item><title>Foojay Podcast #25: Game Development with Java, JavaFX, FXGL</title><link>https://foojayio.github.io/website/today/foojay-podcast-25/</link><pubDate>Mon, 19 Jun 2023 08:56:11 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-25/</guid><description>&lt;p&gt;Java and JavaFX are probably not the first options you consider if you want to create a game application.&lt;/p&gt;
&lt;p&gt;But the FXGL library allows you to do precisely that! Create games that run on all platforms with the same codebase as we are used to with Java.&lt;/p&gt;
&lt;p&gt;And even without an extra library, the JavaFX Components and Canvas provide many animation and gaming possibilities.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s learn from experts why Java should be on your game-development-language-list!&lt;/p&gt;</description></item><item><title>JavaFinder: Keeping Track of Java Inventories</title><link>https://foojayio.github.io/website/today/javafinder-keeping-track-of-java-inventories/</link><pubDate>Wed, 24 May 2023 20:12:31 +0000</pubDate><guid>https://foojayio.github.io/website/today/javafinder-keeping-track-of-java-inventories/</guid><description>&lt;p&gt;Do you ever wonder how many Java distributions you have installed on your machine?&lt;/p&gt;
&lt;p&gt;I not only mean versions that you use for development but also versions that come bundled with the applications you use.&lt;/p&gt;
&lt;p&gt;Last weekend I decided to write a little tool that can help me to figure that out&amp;hellip; JavaFinder.&lt;/p&gt;
&lt;p&gt;This is a simple command line tool that will search a given path, including its subfolders for any OpenJDK distribution or GraalVM derivate.&lt;/p&gt;</description></item><item><title>Porting an Existing JavaFX App to iOS</title><link>https://foojayio.github.io/website/today/porting-an-existing-javafx-app-to-ios/</link><pubDate>Fri, 24 Feb 2023 11:42:11 +0000</pubDate><guid>https://foojayio.github.io/website/today/porting-an-existing-javafx-app-to-ios/</guid><description>&lt;p&gt;Sometimes there are JavaFX apps that I would also like to use on my iPhone but I wrote them for the desktop and it&amp;rsquo;s always the question how to do that?&lt;/p&gt;
&lt;p&gt;These days the simple answer is use &lt;a href="https://gluonhq.com/products/mobile/" target="_blank" rel="noopener noreferrer"&gt;Gluon Mobile&lt;/a&gt;
. But the real question remains&amp;hellip; how to do it?&lt;/p&gt;
&lt;p&gt;To give you an idea, I will take my little game called JArkanoid (a clone of the game &lt;a href="https://github.com/HanSolo/jarkanoid" target="_blank" rel="noopener noreferrer"&gt;Arkanoid&lt;/a&gt;
 from Taito from 1986) as an example.&lt;/p&gt;</description></item><item><title>How to Run a Java Application with CRaC in a Docker Container</title><link>https://foojayio.github.io/website/today/how-to-run-a-java-application-with-crac-in-a-docker-container/</link><pubDate>Wed, 01 Feb 2023 09:41:11 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-run-a-java-application-with-crac-in-a-docker-container/</guid><description>&lt;p&gt;CRaC (Coordinated Restore at Checkpoint) is &lt;a href="https://openjdk.org/projects/crac/" target="_blank" rel="noopener noreferrer"&gt;an OpenJDK project&lt;/a&gt;
 that was &lt;a href="https://www.azul.com/blog/aws-snapstart-builds-momentum-for-the-crac-api/" target="_blank" rel="noopener noreferrer"&gt;developed by Azul&lt;/a&gt;
 to solve the problem of &amp;ldquo;slow&amp;rdquo; startup times of the Java Virtual Machine in a microservice environment.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The most up-to-date guidelines can be found on &amp;ldquo;&lt;a href="https://docs.azul.com/core/crac/crac-guidelines.html#running-crac-in-a-virtualized-environment-docker" target="_blank" rel="noopener noreferrer"&gt;Coordinated Restore at Checkpoint Usage Guidelines&lt;/a&gt;
&amp;rdquo; in the Azul Docs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When the JVM runs your application code, it does things like interpreting, compiling and optimizing code to make your application run as fast as possible under the given workload. This is great but can take some time and especially when you run short lived microservices you don&amp;rsquo;t want to wait until the JVM has produced the most optimized code.&lt;/p&gt;</description></item><item><title>Introducing the "Coordinated Restore at Checkpoint" Project</title><link>https://foojayio.github.io/website/today/introducing-the-openjdk-coordinated-restore-at-checkpoint-project/</link><pubDate>Mon, 18 Apr 2022 08:13:55 +0000</pubDate><guid>https://foojayio.github.io/website/today/introducing-the-openjdk-coordinated-restore-at-checkpoint-project/</guid><description>&lt;h3 id="h3-0-introduction"&gt;Introduction&lt;/h3&gt;
&lt;p&gt;One of the great things about the Java Virtual Machine (JVM) is the fact that it is able to adapt the performance of a Java application to the way it is used.&lt;/p&gt;
&lt;p&gt;It can figure out what parts of your code are used often and it can then optimize the code by means of its ability to compile code just in time (JIT).&lt;/p&gt;
&lt;p&gt;But that also means that it has to figure out those parts first, before it can compile those parts into faster code.&lt;/p&gt;</description></item><item><title>JDKMon 17.0.23 Released</title><link>https://foojayio.github.io/website/today/jdkmon-17-0-23-released/</link><pubDate>Fri, 11 Mar 2022 09:52:39 +0000</pubDate><guid>https://foojayio.github.io/website/today/jdkmon-17-0-23-released/</guid><description>&lt;p&gt;JDKMon is a little tool written in JavaFX that tries to detect all OpenJDK distributions installed on your machine while keeping track of updates for those distributions.&lt;/p&gt;
&lt;p&gt;It will scan for new updates every three hours and will inform you about available updates.&lt;/p&gt;
&lt;figure class="wp-block-image size-full is-resized is-style-default"&gt;
 &lt;img fetchpriority="high" decoding="async" src="jdkmon-17.0.23.png" alt="" class="wp-image-52579" width="423" height="306"&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; JDKMon won&amp;rsquo;t install the distributions on your machine but will enable you to download them to a place of your choice.&lt;/p&gt;
&lt;p&gt;At the moment the following distributions are supported:&lt;/p&gt;</description></item><item><title>JReleaser 0.10.0 Released!</title><link>https://foojayio.github.io/website/today/jreleaser-0-10-0-released/</link><pubDate>Tue, 04 Jan 2022 13:30:48 +0000</pubDate><guid>https://foojayio.github.io/website/today/jreleaser-0-10-0-released/</guid><description>&lt;p&gt;JReleaser is a tool that streamlines creating releases for [Java] projects.&lt;/p&gt;
&lt;p&gt;It can create a GitHub/GitLab/Gitea release, while also packaging binaries for Homebrew, Snapcraft, Docker, Chocolatey, Scoop, JBang and, more than that, announces releases to Twitter, SdkMan!, e-mail, Zulip, Discord, Gitter, Slack, Teams, and more.&lt;/p&gt;
&lt;p&gt;JReleaser &lt;a href="https://github.com/jreleaser/jreleaser/releases/tag/v0.10.0" title="v0.10.0" target="_blank" rel="noopener noreferrer"&gt;v0.10.0&lt;/a&gt;
 is the last push towards 1.0.0. We&amp;rsquo;ll concentrate on bug fixing and polishing from now on. Be mindful of the &lt;a href="https://github.com/jreleaser/jreleaser/issues?q=is%3Aissue&amp;#43;label%3A%22BREAKING&amp;#43;CHANGE%22&amp;#43;milestone%3Av0.10.0&amp;#43;is%3Aclosed" target="_blank" rel="noopener noreferrer"&gt;breaking changes&lt;/a&gt;
 introduced in this release.&lt;/p&gt;</description></item><item><title>JDKMon 17.0.18 Released</title><link>https://foojayio.github.io/website/today/jdkmon-17-0-18-released/</link><pubDate>Mon, 20 Dec 2021 09:06:26 +0000</pubDate><guid>https://foojayio.github.io/website/today/jdkmon-17-0-18-released/</guid><description>&lt;p&gt;JDKMon is a little tool written in JavaFX that tries to detect all OpenJDK distributions installed on your machine and keep track of updates for those distributions.&lt;/p&gt;
&lt;p&gt;It will scan for new updates every three hours and will inform you about available updates.&lt;/p&gt;
&lt;p&gt;JDKMon won&amp;rsquo;t install the distributions on your machine but will enable you to download them to a place of your choice.&lt;/p&gt;
&lt;p&gt;At the moment the following distributions are supported:&lt;/p&gt;</description></item><item><title>JDKMon 17.0.17 Released</title><link>https://foojayio.github.io/website/today/jdkmon-17-0-17-released/</link><pubDate>Wed, 08 Dec 2021 09:11:22 +0000</pubDate><guid>https://foojayio.github.io/website/today/jdkmon-17-0-17-released/</guid><description>&lt;p&gt;JDKMon is a little tool written in JavaFX that tries to detect all OpenJDK distributions installed on your machine and keep track of updates for those distributions.&lt;/p&gt;
&lt;p&gt;It will scan for new updates every three hours and will inform you about available updates. JDKMon won&amp;rsquo;t install the distributions on your machine but will only enable you to download them to a place of your choice.&lt;/p&gt;
&lt;p&gt;At the moment the following distributions are supported:&lt;/p&gt;</description></item><item><title>JReleaser 0.9.0 Released!</title><link>https://foojayio.github.io/website/today/jreleaser-0-9-0-released/</link><pubDate>Tue, 30 Nov 2021 10:29:17 +0000</pubDate><guid>https://foojayio.github.io/website/today/jreleaser-0-9-0-released/</guid><description>&lt;p&gt;JReleaser is a tool that streamlines creating releases for [Java] projects. It can create a GitHub/GitLab/Gitea release, while also packaging binaries for Homebrew, Snapcraft, Docker, Chocolatey, Scoop, JBang and, more than that, announces releases to Twitter, SdkMan!, e-mail, Zulip, Discord, Gitter, Slack, Teams, and more.&lt;/p&gt;
&lt;p&gt;JReleaser &lt;a href="https://github.com/jreleaser/jreleaser/releases/tag/v0.9.0" title="v0.9.0" target="_blank" rel="noopener noreferrer"&gt;v0.9.0&lt;/a&gt;
 has just been released! JReleaser v0.9.0 is a big update as we gear towards v1.0.0. Plenty of improvements were added to this release to make it the best one so far. Be mindful of the &lt;a href="https://github.com/jreleaser/jreleaser/issues?q=is%3Aclose&amp;#43;is%3Aissue&amp;#43;label%3A%22BREAKING&amp;#43;CHANGE%22&amp;#43;milestone%3Av0.9.0" title="breaking" target="_blank" rel="noopener noreferrer"&gt;breaking changes&lt;/a&gt;
 introduced in this release.There are plenty of improvements in several areas, a quick summary of the highlights follows:&lt;/p&gt;</description></item><item><title>Announcement: JReleaser 0.8.0 Released!</title><link>https://foojayio.github.io/website/today/jreleaser-0-8-0-released/</link><pubDate>Tue, 02 Nov 2021 12:12:29 +0000</pubDate><guid>https://foojayio.github.io/website/today/jreleaser-0-8-0-released/</guid><description>&lt;p&gt;JReleaser is a tool that streamlines creating releases for [Java] projects.&lt;/p&gt;
&lt;p&gt;It can create a GitHub/GitLab/Gitea release, while also packaging binaries for Homebrew, Snapcraft, Docker, Chocolatey, Scoop, JBang and, more than that, announces releases to Twitter, SdkMan!, e-mail, Zulip, Discord, Gitter, Slack, Teams, and more.&lt;/p&gt;
&lt;p&gt;This release closes all required items in the v1.0.0 roadmap, opening the door for v1.0.0 to be released next after polish and housekeeping items are taken care of.&lt;/p&gt;</description></item><item><title>This Just In: JReleaser 0.7.0 Released!</title><link>https://foojayio.github.io/website/today/jreleaser-0-7-0-released/</link><pubDate>Wed, 29 Sep 2021 12:12:24 +0000</pubDate><guid>https://foojayio.github.io/website/today/jreleaser-0-7-0-released/</guid><description>&lt;p&gt;JReleaser is a tool that streamlines creating releases for [Java] projects.&lt;/p&gt;
&lt;p&gt;It can create a GitHub/GitLab/Gitea release, while also packaging binaries for Homebrew, Snapcraft, Docker, Chocolatey, Scoop, JBang and, more than that, announces releases to Twitter, SdkMan!, e-mail, Zulip, Discord, Gitter, Slack, Teams, and more.&lt;/p&gt;
&lt;p&gt;This is a small release as core features are mostly complete:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JDKs:&lt;/strong&gt; The jdks-gradle-plugin now unpacks the chosen JDK distribution in a subdirectory that matches the configured named. This is a breaking change! Additionally, tasks for removing cached JDKs were also added.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; Linking a release to a discussion is automatically skipped if the release is a draft or early access.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changelog:&lt;/strong&gt; You can now specify if a full or partial changelog should be generated when the release is early access.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Homebrew:&lt;/strong&gt; Fixes automatic generation of Cask v.s Formula.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Release:&lt;/strong&gt; You may skip creating a release but keep the tag. This is useful for the case when you&amp;rsquo;d like to push release assets via an uploader but want to skip creating a Git release.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Full changelog can be found at the &lt;a href="https://github.com/jreleaser/jreleaser/releases/tag/v0.7.0" target="_blank" rel="noopener noreferrer"&gt;v0.7.0&lt;/a&gt;
 release page.&lt;/p&gt;</description></item><item><title>How To Get Your JDK As Easily As Possible!</title><link>https://foojayio.github.io/website/today/get-your-jdk-as-easily-as-possible/</link><pubDate>Tue, 20 Jul 2021 07:00:31 +0000</pubDate><guid>https://foojayio.github.io/website/today/get-your-jdk-as-easily-as-possible/</guid><description>&lt;p&gt;Have you ever been in the situation where you&amp;rsquo;ve been looking for a specific JDK version of a specific distribution? I think most of us have been there and, I don&amp;rsquo;t know how you handle this, but in the past I used to save links to distributions in my browser and then I usually I started searching through the vendor website for the package I was looking for.&lt;/p&gt;
&lt;p&gt;Sometimes that was easy&amp;hellip; sometimes it was hard&amp;hellip; but it never was fun. And if you&amp;rsquo;re used to working with JavaFX, the whole thing got even harder when JDK 11 came out and JavaFX was not bundled with the distribution any longer.&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>JDKMon: Your Friendly JDK Distribution Updater</title><link>https://foojayio.github.io/website/today/jdkmon-your-friendly-jdk-distribution-updater/</link><pubDate>Tue, 06 Jul 2021 06:59:15 +0000</pubDate><guid>https://foojayio.github.io/website/today/jdkmon-your-friendly-jdk-distribution-updater/</guid><description>&lt;p&gt;I don&amp;rsquo;t know if you have the same problem but I have around 8 OpenJDK distributions installed on my machine and I always have the problem of keeping them up to date. I know there is &lt;a href="https://sdkman.io/" title="sdkman" target="_blank" rel="noopener noreferrer"&gt;sdkman&lt;/a&gt;
 which is awesome but I somehow never got used to it.&lt;/p&gt;
&lt;p&gt;Meaning to say I download the OpenJDK distributions manually and install them on my machine. So the main problem is that there so many different distributions out there and all of them have a different way on how to get the latest version. To solve exactly this problem we at foojay.io created the DiscoAPI which keeps track on (hopefully) all available OpenJDK distributions available. Well and because we like to eat our own dogfood I&amp;rsquo;ve created a little tool that helps me keeping my installed OpenJDK distributions up to date&amp;hellip; &lt;a href="https://github.com/HanSolo/JDKMon" title="JDKMon" target="_blank" rel="noopener noreferrer"&gt;JDKMon&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Custom Controls in JavaFX (Part VII): JDK Butler</title><link>https://foojayio.github.io/website/today/custom-controls-in-javafx-part-vii/</link><pubDate>Fri, 12 Mar 2021 09:10:43 +0000</pubDate><guid>https://foojayio.github.io/website/today/custom-controls-in-javafx-part-vii/</guid><description>&lt;p&gt;Welcome the &lt;a href="https://foojayio.github.io/website/today/custom-controls-in-javafx-part-i/"&gt;final article of this little series&lt;/a&gt;
 about custom controls in JavaFX.&lt;/p&gt;
&lt;p&gt;This time, I have created an application that makes use of custom controls. I won&amp;rsquo;t go through the whole code on how I&amp;rsquo;ve created this application but only on the custom controls that I&amp;rsquo;ve created for it.&lt;/p&gt;
&lt;p&gt;But first, let me show you the application&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/custom-controls-in-javafx-part-vii/JDK-Butler-2021-02-10-11-57-56-700x504.png" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://github.com/HanSolo/jdkbutler" target="_blank" rel="noopener noreferrer"&gt;JDK Butler&lt;/a&gt;
 is an app that makes use of the &lt;a href="https://github.com/foojay2020/discoapi" target="_blank" rel="noopener noreferrer"&gt;Foojay Disco API&lt;/a&gt;
 to enable you to drill down to a JDK of your choice and download it to your machine. As you can see in the screenshot, we have columns where we can select things like major version, version, distribution etc.&lt;/p&gt;</description></item><item><title>Custom Controls in JavaFX (Part VI) -- Canvas Class</title><link>https://foojayio.github.io/website/today/custom-controls-in-javafx-part-vi/</link><pubDate>Fri, 05 Mar 2021 08:21:10 +0000</pubDate><guid>https://foojayio.github.io/website/today/custom-controls-in-javafx-part-vi/</guid><description>&lt;p&gt;We are slowly coming to the end of &lt;a href="https://foojayio.github.io/website/today/custom-controls-in-javafx-part-i/"&gt;all the different ways&lt;/a&gt;
 in which one can create a custom control in JavaFX. Today I will show you how to create a custom control that is based on the JavaFX Canvas node.&lt;/p&gt;
&lt;p&gt;To understand the Canvas node and why it is good to have it, let me briefly explain how rendering in JavaFX is done.&lt;/p&gt;
&lt;p&gt;In JavaFX, the so-called&lt;a href="http://https://en.wikipedia.org/wiki/Retained_mode" title=" retained mode rendering" target="_blank" rel="noopener noreferrer"&gt;retained mode rendering&lt;/a&gt;
 is used. That means that you, as a developer, don&amp;rsquo;t have to take care about when to render which area of the screen when you change something (remember rendering artefacts in Swing?). Instead, JavaFX takes care of the rendering of the scene graph. That makes developing applications a lot less complicated because you do not have to track dirty areas and trigger repaints, etc.&lt;/p&gt;</description></item><item><title>Custom Controls in JavaFX (Part V): Region Class</title><link>https://foojayio.github.io/website/today/custom-controls-in-javafx-part-v/</link><pubDate>Fri, 26 Feb 2021 08:31:08 +0000</pubDate><guid>https://foojayio.github.io/website/today/custom-controls-in-javafx-part-v/</guid><description>&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/custom-controls-in-javafx-part-iv/"&gt;the last article&lt;/a&gt;
, I showed you how to create a custom control based on the Control plus Skin approach, which is great for building controls libraries.&lt;/p&gt;
&lt;p&gt;This time, I will show you how to create a JavaFX Custom Control that is based on the JavaFX Region class. The Region class is the class that all JavaFX controls are based on. It is a resizable Parent node which can be styled from CSS. This is the class that you would want to use when building a JavaFX custom control that is not part of a controls library.&lt;/p&gt;</description></item><item><title>Custom Controls in JavaFX (Part IV): Control &amp; Skin Classes</title><link>https://foojayio.github.io/website/today/custom-controls-in-javafx-part-iv/</link><pubDate>Fri, 19 Feb 2021 08:22:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/custom-controls-in-javafx-part-iv/</guid><description>&lt;p&gt;I hope you found some time to play around with the custom controls that I showed you in &lt;a href="https://foojayio.github.io/website/today/custom-controls-in-javafx-part-iii/"&gt;the previous part of this series&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;This time, I will show you how to create a custom control in JavaFX by using Control and Skin classes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A custom control created by a Control and Skin class only makes sense if you will provide more than one Skin for your control or if you would like to give people the ability to create their own Skins for your Control.&lt;/em&gt;
&lt;em&gt;In any other case, you should choose another approach (e.g., use a Region or Canvas based control).&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Custom Controls in JavaFX (Part III) -- Extend an Existing Control</title><link>https://foojayio.github.io/website/today/custom-controls-in-javafx-part-iii/</link><pubDate>Fri, 12 Feb 2021 08:22:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/custom-controls-in-javafx-part-iii/</guid><description>&lt;p&gt;If you&amp;rsquo;ve been following this series of blog posts, you already read about how to create custom controls by &lt;a href="https://foojayio.github.io/website/today/custom-controls-in-javafx-part-i/"&gt;re-styling existing controls&lt;/a&gt;
 or &lt;a href="https://foojayio.github.io/website/today/custom-controls-in-javafx-part-ii/"&gt;combining existing controls&lt;/a&gt;
. This time let me show you how to create a custom JavaFX control by extending an existing control.&lt;/p&gt;
&lt;p&gt;The goal for today is to create a TextField that looks similar to the TextField that you can find in &lt;a href="https://material.io/components/text-fields" title="MaterialDesign" target="_blank" rel="noopener noreferrer"&gt;MaterialDesign&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;I use MaterialDesign because it is really popular but be aware that it is not really made for Desktop applications. The reason for this is simple, it needs a lot of space in the vertical direction which makes sense if you keep in mind that it was made for mobile devices where the screen orientation is vertical as where the screen orientation of desktops is horizontal.&lt;/p&gt;</description></item><item><title>Custom Controls in JavaFX (Part II) -- Combining Existing Controls</title><link>https://foojayio.github.io/website/today/custom-controls-in-javafx-part-ii/</link><pubDate>Fri, 05 Feb 2021 08:23:32 +0000</pubDate><guid>https://foojayio.github.io/website/today/custom-controls-in-javafx-part-ii/</guid><description>&lt;p&gt;&lt;a href="https://foojayio.github.io/website/today/custom-controls-in-javafx-part-i/"&gt;Last time we saw&lt;/a&gt;
 how to create custom controls in JavaFX by simply playing around with CSS styles for the component.&lt;/p&gt;
&lt;p&gt;This time I will show you how to create a custom control by combining existing controls. The idea is to create a control that contains a text field where you can type in values and next to the text field should be a button that when pressed will convert the value from the text field to another value.&lt;/p&gt;</description></item><item><title>How to Use Custom Controls in JavaFX (Part I)</title><link>https://foojayio.github.io/website/today/custom-controls-in-javafx-part-i/</link><pubDate>Fri, 29 Jan 2021 08:22:15 +0000</pubDate><guid>https://foojayio.github.io/website/today/custom-controls-in-javafx-part-i/</guid><description>&lt;p&gt;JavaFX is now already some years out in the wild and even if it is not as widely used as web applications, it has its place. It mainly is used in internal applications only, which leads to the impression that nobody is using it.&lt;/p&gt;
&lt;p&gt;As long as you only would like to create a simple form-based application, the available UI controls in JavaFX will work totally fine. You need to take a look at how to style the controls using CSS, but from the coding point of view it&amp;rsquo;s pretty straight forward.&lt;/p&gt;</description></item></channel></rss>