Java is the core topic across this site. These posts cover modern Java features, OpenJDK evolutions, performance tuning, tooling, and hands-on development lessons from real projects.
Just one week after the first public release of Lottie4J, the open-source Java library for rendering Lottie animations in JavaFX, version 1.1.0 is already out. And it’s a big one!
I’m proud to present a new JavaFX library: Lottie4J, that brings Lottie animations to JavaFX applications. I first learned about Lottie many years ago when we were developing a mobile app. We used Lottie animations to explain to users how to operate a physical device. The animations made the instructions so much clearer than static images or text alone.
Open source software is built on passion, time, and dedication. But passion alone doesn’t guarantee the long-term survival of a project. Maintainers move on, life changes, priorities shift, and sometimes a beloved project simply fades away. Something we want to avoid for the Pi4J project. So I’m very happy that I can share that on February 26, Pi4J got accepted into the Commonhaus Foundation. This is a major step to make sure that this Java library, used by many developers in all kinds of projects, can continue to exist and grow.
Here are the JavaFX LinksOfTheMonth of February 2026. You can find the weekly lists on jfx-central.com. Did we miss anything? Is there anything you want to have included in one of the next overviews? Let us know via links@jfx-central.com.
In my “Java on Single Board Computers” series, I already published several posts and videos in which I unpack the board, connect it for the first time, and try to install and run some simple Java code. In this post, I want to share some benchmarks of Java on these boards to get a better idea of the performance we can expect from Java on these platforms.
Every week I collect a list of posts, social messages, videos, etc. related to JavaFX on the JFX Central Links Of The Week. One of the regular “appearances” is Helal Anwar, who is building impressive educational tools with JavaFX. In this interview, we discuss his GradedAttendance application and other JavaFX projects he’s working on.
After my initial struggles with the BeagleV-Fire in a previous video, I succeeded in getting Java 25 running on RISC-V-powered BeagleV-Fire! Let me walk you through the journey and the steps I took to make it work.
As part of my 2026 learning goals around Java on RISC-V (see this post about x86 versus ARM versus RISC-V), I’ve asked various suppliers to send me evaluation boards. I already published these:
Here are the JavaFX LinksOfTheMonth of January 2026. You can find the weekly lists on jfx-central.com. Did we miss anything? Is there anything you want to have included in one of the next overviews? Let us know via links@jfx-central.com.
As part of my 2026 learning goals around Java on RISC-V (see this post about x86 versus ARM versus RISC-V), I’ve asked various suppliers to send me evaluation boards. I already published about two and adding a third one now:
As part of my 2026 learning goals around Java on Single Board Computers and RISC-V (see this post about x86 versus ARM versus RISC-V), I’ve been asking various suppliers to send me evaluation boards. After testing the LattePanda IOTA, I received two boards from OrangePi to evaluate: the OrangePi 5 Ultra (ARM) and the OrangePi RV2 (RISC-V).
Ever since I started my #JavaOnRaspberryPi journey in 2019, which resulted in my book “Getting Started with Java on the Raspberry Pi”, I’ve been fascinated with these tiny, inexpensive computers. For 2026, I’ve set one of my goals to experiment with Java on various Single-Board Computers (SBC), going beyond my “Raspberry Pi comfort zone.” The market is flooded with SBCs ranging from budget boards (tens of euros) to powerhouses (hundreds of euros). One of the reasons of this price range is the difference between the processors they use. Raspberry Pi uses an ARM processor, but RISC-V is gaining momentum, while Intel maintains its presence. So before I start experimenting, now is the perfect time to compare these three processor families and understand their differences.
The Pi4J project is a Java library that allows you to control the GPIO pins and electronic components connected to a Raspberry Pi with pure Java code. It removes the complexity of using native libraries and the Java Native Interface (JNI), allowing you to focus on your application logic.
Here is the final JavaFX LinksOfTheMonth for 2025… Thank you all for sharing your knowledge and experience with JavaFX. And we hope to see even more in the next year!
I met Florian Enner a few times at Devoxx in Belgium, and each time he amazed me with his JavaFX demos! He is one of those rare developers who take JavaFX to the next level by adding 3D visualizations.
Here is the overview of the JavaFX LinksOfTheMonth of November 2025. You can find the weekly lists on jfx-central.com. Did we miss anything? Is there anything you want to have included in one of the next overviews? Let us know via links@jfx-central.com.
After years of experimenting with Raspberry Pi boards, Java, JavaFX, and Pi4J to control electronics, I wanted to explore whether my knowledge and experience could be applied to similar boards from other providers. There are many alternatives available these days, based on ARM, Intel processors, and RISC-V architectures.
I don’t have any bitcoin myself, but still find the idea of the blockchain and “public shared money” fascinating. And as it turns out, there is a free and open-source bitcoin wallet, created with JavaFX, that wants to help people understand how the Bitcoin system works, and make transactions easy to understand. Thanks to the work of Craig Raw, there is an easy-to-use desktop application to create and manage wallets. And while he explains the app itself, we also learn a lot about the Bitcoin ecosystem, reproducible builds, security, hardware wallets, and more!
Here is the overview of the JavaFX LinksOfTheMonth of October 2025. You can find the weekly lists on jfx-central.com. Did we miss anything? Is there anything you want to have included in one of the next overviews? Let us know via links@jfx-central.com.
For my next JavaFX In Action interview, I talked with Matt Coley about Recaf and the JavaFX libraries he’s working on. But unexpectedly, I got a deep-dive course on Java byte code, obfuscated code, and how JARs can be (ab)used to hide the real code they are executing…!
Vlad Protsenko is a Clojure developer working at Defold. While I initially wanted to learn about the Cljfx project, our conversation evolved into a learning experience: a practical getting-started guide to Clojure, a hands-on demonstration of building JavaFX user interfaces with minimal code, and an inside look at the Defold game engine and its JavaFX-based IDE.
As described before on Java 21+ Not Working on Raspberry Pi Zero 2, a problem appeared to execute Java code on the Raspberry Pi Zero 2 with OpenJDK 21 or higher. Reason: in OpenJDK 21 the Just-In-Time (JIT) compiler has been improved, but this change doesn’t work correctly on the ARM Cortex-A53 processor as used in the Zero 2. It’s another type of processor compared to, for instance, the Raspberry Pi 4 (Cortex-A72) and 5 (Cortex-A76).
2025 is an important year as Java 25 got released, a version which will be supported for many more years. On top of that, the Pi4J library will soon be published as V4.0.0 with a new plugin making use of the FFM API, a new feature added to Java in version 22.
Here is the overview of the JavaFX LinksOfTheMonth of September 2025. You can find the weekly lists on jfx-central.com. Did we miss anything? Is there anything you want to have included in one of the next overviews? Let us know via links@jfx-central.com.
During a live stream coding session, Matti Tahvonen and I updated an existing Vaadin+Spring+Pi4J demo application to use the latest version of the libraries and Java 25. It’s a demo application I created a few years ago to using during presentations at conferences. Of course, everything evolves, so a big update and refactoring was needed.
Here is the overview of the JavaFX LinksOfTheMonth of July 2025. You can find the weekly lists on jfx-central.com. Did we miss anything? Is there anything you want to have included in one of the next overviews? Let us know via links@jfx-central.com.
In this post, I would like to inform you about a new Java library that is now available on Maven Central, allowing interaction with DMX512 devices using (optionally) the Open Fixture Library (OFL). I also published a video with a code walkthrough of my test setup and demo code.
Here is the overview of the JavaFX LinksOfTheMonth of June 2025. You can find the weekly lists on jfx-central.com. Did we miss anything? Is there anything you want to have included in one of the next overviews? Let us know via links@jfx-central.com.
Dieter Holz was experimenting with Pi4J V3 on a Raspberry Pi Zero 2. Because this version requires Java 21 or newer, he upgraded his OS to a newer Java version and found out that no Java code could be executed. He tried with Java 21 and 24, and neither worked correctly, although Java 17 runs without problems.
Here is the overview of the JavaFX LinksOfTheMonth of April 2025. You can find the weekly lists on jfx-central.com. Did we miss anything? Is there anything you want to have included in one of the next overviews? Let us know via links@jfx-central.com.
Dirk Lemmermann has created many open source and commercial libraries for Java Swing and JavaFX like CalenderFX, FlexGanttFX, GemsFX,… He is also the founder of JFX Central, the home to anything JavaFX related. In this interview he shows us some of his work, including applications used in companies, revealing the power of JavaFX to build custom tools.
Here is the overview of the JavaFX LinksOfTheMonth of April 2025. You can find the weekly lists on jfx-central.com. Did we miss anything? Is there anything you want to have included in one of the next overviews? Let us know via links@jfx-central.com.
Gerrit Grunwald, also known in the Java community as HanSolo on social media, created many JavaFX libraries and blog posts. I wanted to talk with him about his work with JavaFX, but I also learned more about SVGs and how the garbage collectors in the JVM work, thanks to the amazing visualizations he creates with … JavaFX of course.
Do you know the problem that you have done a specific task already many times in the past, but it’s too long ago to remember exactly how you did it the previous times? One of those cases for me, is how you create a JavaFX ComboBox and configure it to show a specific field of an object in the opened and closed state of the ComboBox.
Here is the overview of the JavaFX LinksOfTheMonth of March 2025. You can find the weekly lists on jfx-central.com. Did we miss anything? Is there anything you want to have included in one of the next overviews? Let us know via links@jfx-central.com.
Brian has a dream job! He is responsible for a complex system that allows scientific researchers to research the animals living in the deep sea. He provides them with the tools to annotate videos and images made by submarines diving thousands of meters deep in the oceans. While he works on this software, he gets to know all the amazing creatures living in this mysterious world.
Here is the overview of the JavaFX LinksOfTheMonth of February 2025. You can find the weekly lists on jfx-central.com. Did we miss anything? Is there anything you want to have included in one of the next overviews? Let us know via links@jfx-central.com.
Out of frustration about the existing (expensive) tools to interact with Kafka clusters, Cormac Redmond created his own beautiful tool that he shares for free!
Chris Newland has a long history in Java and JavaFX development. I invited him to talk about two of his JavaFX projects: DemoFX and JITWatch. While the demos are already impressive, Chris also gives a “crash course” in this video about Java and Byte code and how the Just-In-Time compiler converts these to native code in the Java Virtual Machine.
Coordinated Restore at Checkpoint (CRaC) is a JDK project, initiated by Azul. With CRaC, you can start Java programs with a shorter time to first transaction, combined with less time and resources to achieve full code speed. This is achieved by taking a snapshot (checkpoint) of a fully warmed-up Java process and launching one or more new JVMs from that snapshot.
Every week I collect JavaFX-related content for the JFX Central Links Of The Week. Last week I saw a video on LinkedIn, shared by Abdoulaye Wade Cissé, of a JavaFX “virtual laboratorium” and wanted to learn more about this project… Turns out he is a 22-year old student in Senegal, creating an amazing project to provide a virtual laboratory as software where the resources are not available for a physical lab. With his project, he proves that Java and JavaFX is the ideal way to generate fully free software with a lot of functionality.
Sven Reimers created a JavaFX-based notebook application to make it easier to learn Java and experiment with notebooks that can visualize the variables in different ways like tables and graphs.
Here is the first overview of the JavaFX LinksOfTheMonth for 2025. You can find the weekly lists on jfx-central.com. Did we miss anything? Is there anything you want to have included in one of the next overviews? Let us know via links@jfx-central.com.
Mike Hearn solves a problem that a lot of developers are struggling with: how to easily distribute your application and make sure the users get the latest version. With Conveyor he created a tool to do that easily with JavaFX, Electron, and Flutter apps!
In this post you’ll learn how you can run a Java application on a Raspberry Pi Zero 1 to turn it in a controllable HDMI camera. I use such cameras in my setup with an ATEM Mini Pro HDMI video switcher. This allows me to have four different inputs for a very affordable price to create videos, tutorials, virtual conference talks, etc. As I wanted to be able to easily change the zoom level of these Raspberry Pi cameras, I created a small Java application with an API.
When a nerdy dad and 14-year-old music-playing son join forces and start experimenting with music and code, some nice things can happen. Did you ever present your music piece in a business dashboard with charts? Did you know that the FXGL game library can be used to generate a piano with fireworks? And can Virtual Threads playback MIDI events with just a few lines of code and thousands of threads?
Here is the last overview of the JavaFX LinksOfTheMonth for 2024. You can find the weekly lists on jfx-central.com. We hope you enjoyed all the previous editions and we promise to go on in the next year… Have a nice holiday and see you in 2025!
Jago de Vreede is bringing SDKMAN to Windows! He builds a user interface on top of the terminal tool to make it easier to use, and add the same time solves the problem that you could only use SDKMAN on Linux and macOS. In the previous “JFX In Action” interview we saw how jDeploy can be used to distribute a JavaFX application, and in this one we see how you can achieve the same with GraalVM, although it is more difficult to setup. In the video, he walks us through the GitHub Actions that he created to build those native binaries. Jago also shows us how he uses SceneBuilder to create the layout of the app.
Building a Java(FX) app is easy and fun, but how do you efficiently distribute it to different systems? jpackage and GraalVM can help, but jDeploy makes things even more effortless by handling all the packaging and providing an upgrading flow! In this “JFX In Action” interview, you’ll learn how this works from Steve Hannah, the creator of jDeploy.
In the “JFX In Action” interviews, we already saw many business use cases of JavaFX. Let’s take a side step and look at game development. FXGL is a library that helps us create JavaFX games. But it’s much more than games! With the integrated Goal-Oriented Action Planning (GOAP) functionality, it can use game technology and AI to solve any kind of goal based on actions and preconditions.
Here is the overview of the JavaFX LinksOfTheMonth of November 2024, published on jfx-central.com during this month. Did we miss anything? Is there anything you want to have included in one of the next overviews? Let us know via links@jfx-central.com.
My recent blog post “Why Java 8 is a Ticking Time Bomb Hiding Within Your Organization” triggered quit some reactions… I went a step further and asked on social media: “Why is your company still on Java 8 (or older)? And why did you never move to 9, 10,… and got stuck on this outdated version?” Here is a summary of what I learned from the reactions.
In the previous “JFX In Action” interviews, we already saw combinations of JavaFX with Scala and Kotlin. In this episode, we look at the combination of JavaFX and Quarkus. Thanks to QuarkusFX, we can use the many advantages of the Quarkus system to create a desktop application.
The following “JFX In Action” interview gives insights into a new open-source JavaFX project: Swaggerific. It’s created by Özkan Pakdil, who tells us more about this Postman alternative to interact with REST endpoints documented with a Swagger JSON.
When I spoke to developers at Devoxx in Belgium in October, I was surprised to learn how many of them are maintaining systems that are still running on Java 8 (released in 2014). One of them even still has a Java 5 application in production, with a runtime of 20 years old!
Here is the overview of the JavaFX LinksOfTheMonth of October 2024, published on jfx-central.com during this month. With some very nice new content for JFX Central itself, see at end of the list… Did we miss anything? Is there anything you want to have included in one of the next overviews? Let us know via links@jfx-central.com.
Here is the next “JFX In Action” with Ulas Ergin. He explains how his team uses JavaFX to migrate from a Swing based application, to a Java application which combines the old Swing screens with new React user interfaces.
Recently, I was asked what the best way is to build a Fat JAR (a JAR with all dependencies) using Maven. Therefore, I created a GitHub project javafx-jar-template that you can use as a starting point. It contains a small JavaFX demo application with the TilesFX dependency and the necessary plugins in the pom.xml file.
Here is the next “JFX In Action” with Christoph Schwentker about JabRef, a tool written in Java and JavaFX to collect, organize, and discover literature for research projects.
Here is the overview of the JavaFX LinksOfTheMonth of September 2024, published on jfx-central.com during this month. Did we miss anything? Is there anything you want to have included in one of the next overviews? Let us know via links@jfx-central.com.
In the next “JFX In Action”, I’m returning to Televic, one of my former employers, to talk to Ramiro Domínguez Ayub. He explains how they create a tool with JavaFX that is used both internally and by their customers to update a lot of different types of devices on a train, tram, and/or metro.
Recently I have been experimenting with the combination of JavaFX and Kotlin. As Kotlin also runs on the Java Virtual Machine (JVM) and is a very close sister of Java, the switch is straightforward. I’m not making full use of what Kotlin can offer (non-blocking coroutines for example) as this is still a learning path for me… But I want to show you in this tutorial the difference in code style.
In the next video in this “JFX In Action” series, I talked with Maciej Gorywoda about FxCalculator, an Android app created with Scala and JavaFX you can find in Google Play.
In August, our family vacation brought us to Kazakhstan. An important trip, as it is the birth country of our (now) 14y son. It was over 13 years that we had been there and we planned to go back earlier, but some stupid virus messed up everyones life a few years ago… So finally, early this year, we decided to start organizing our trip. Or to be fully honest, we asked Ardjan of “Kazachstan Reizen” to do that for us. And we had an amazing trip, visited different cities and national parks, and had a fantastic time.
I’m one of those people with boxes full of devices, waiting to be used in experiments… And from time to time, I dive into those boxes to fill in the gaps in between other tasks. So these are the results of my first Raspberry Pi Compute Module experiments!
Here is the overview of the JavaFX LinksOfTheMonth of August 2024, published on jfx-central.com during this month. Did we miss anything? Is there anything you want to have included in one of the next overviews? Let us know via links@jfx-central.com.
Last week I was working on a blog post about Azul Zulu with JavaFX support for ARM systems, like the Raspberry Pi. As you can see in this video, I found out my little test application with a lot of “bouncing balls” started losing performance on the Raspberry Pi with more than 1000 of those balls.
People who follow me, know I have a big love for JavaFX. It’s my go-to for every desktop user interface application I build. I love the simplicity of quickly creating an app that makes full use of the “Java powers” to build both multi-threaded “backend services” combined with a beautiful-looking UI into one executable. I’m starting a new video series “JFX In Action” in which I talk to developers to show the world what is being developed with JavaFX, starting with Pedro Duque Vieira about the JavaFX libraries and apps he creates.
For a personal pet project, I started experimenting with JavaFX and Kotlin to create a user interface with a lot of Java / Kotlin background processing. As I knew there is a book available on this specific topic, Apress was so kind to send me a review copy of Frontend Development with JavaFX and Kotlin: Build State-of-the-Art Kotlin GUI Applications by Peter Späth (152 pages, 48€ on paper, 35.5€ for ebook on Amazon.nl).
I was experimenting with a Java application that can act as a web server and includes the user interface HTML-files that get modified with htmx, to replace certain parts of the HTML with other ones created in Java. I found it pretty hard to understand how to configure the embedded Jetty webserver, but as always with Java libraries, it’s pretty easy once you understand how to do it ;-) I decided to share my example, so you don’t need to go through the same search if you want to use the same approach…
At the Fosdem conference in Brussels on February 3rd, I gave a presentation about using an existing documentation set as the data for a ChatGPT-like application, created with JavaFX and LangChain4J. The video and links of that presentation are available here, and this post is a more detailed explanation of that application.
This is the final JavaFX LinksOfTheMonth review for 2023. It was an amazing year with many evolutions in Java and JavaFX and a complete “fresh” version of JFX Central. Thanks for following these updates and looking forward to more of your JavaFX work in the new year…
I had a lot of interesting talks with Java experts since I started producing the Foojay Podcast. But when I asked the organizers of the J-Fall conference, if I could do some kind of live broadcast at their event, I hadn’t imagined it would be such an amazing experience! During the day I had 29 interviews, which I all broadcasted live on multiple websites (YouTube, LinkedIn, and Twitter) with the amazing restream system.
FXGL is a framework to easily create JavaFX-based game applications. In this blog post, I want to show you how this can be done within a single Java-file which doesn’t need a full Maven or Gradle project but can be executed directly with JBang without compilation. This approach can be used as an easy way to get new Java(FX) developers started or create your first experiments with FXGL.
People who follow me, probably know I have a big love for user interface development with JavaFX (for desktop), and Vaadin (for browser). But as always, there are different solutions for every challenge, and building a web user interface with Java can be done with other frameworks. htmx seems to be one of those hot new rising stars, and I already wanted to dive deeper into it, but didn’t find the time yet. Luckily, Wim Deblauwe is here now to help me!
Thanks to the Devoxx conference, there are many hours you can spend on JavaFX-related videos! But as every month, there is a lot more to read and learn about JavaFX… Have fun with this overview of the “JavaFX LinksOfTheWeek” that got published on jfx-central.com during October.
One of the most “fancy” electronic components is definitely a LED strip. It’s really cool to control a long strip of lights with only a few lines of code… But, there is a problem. The timing of the signals is crucial to reliably control these strips. Both Python and Java on a Raspberry Pi can struggle with these timings as they are running on Linux, a non-real-time operating system. So, for instance, pauses in the garbage collection of the Java virtual machine, or any glitch in the operating system can cause unexpected effects on the LED strips. That’s why in most projects, a microcontroller (Arduino, Raspberry Pi Pico, ESP32,…) is used to drive the LED strip.
In my search for a good solution to use LED strips with Java, I stumbled on the Pixelblaze Output Expander. This small device is controlled through a serial interface, and handles the control of the LED strip. As it turns out, this is a perfect solution to offload the timing-critical operations from the Raspberry Pi and have reliable output on a LED strip.
This month OpenJDK and OpenJDK 21 got officially released, so links to the new downloads but also to the early access builds of the next one! Here is the overview of the JavaFX LinksOfTheWeek that got published on jfx-central.com during September.
Java 21, released on September 19th, 2023, brings many new features, 8 which are fully integrated and 7 which are incubator or preview. In this post I want to highlight one of those preview features: Java Enhancement Proposal (JEP) 445: “Unnamed Classes and Instance Main Methods”. It’s a preview feature, meaning you need extra flags to use it. The goal of this JEP 445 is to make it easier to get started with Java, as it’s all about reducing the number of keywords when you write, for instance, your very first HelloWorld Java code. It’s ideal for students or anyone who wants to start experimenting with Java. It may also help make Java more popular in boot camps, where JavaScript and Python dominate now.
Just like Foojay wants to be the starting place for all info related to Java, JFX Central is the place to be for all JavaFX info. The website is a project started by Dirk Lemmermann and has been online since 2021. The team has expanded since then, and the content has been extended, partially by the team, but also thanks to many contributors from the JavaFX community. End of August, a new user interface has been published to replace the initial version.
I’ve taken a holiday this month, so probably missed a lot of the amazing JavaFX news, but still some things caught my attention and you can find them in this LinksOfTheMonth overview.
Yes, the Raspberry Pi Operating System is awesome! But the Pi4J project made it if even more awesome by adding “goodies” for Java developers! Pi4J OS is not yet another OS, but the official Raspberry Pi OS, with additional tools and preconfigurations to make it the ideal OS for any Java and JavaFX developer who wants to use a Raspberry Pi.
Although I skipped a few weeks because of busy schedules, holiday interruptions, and too few hours in a day, there was still a lot to report in the two #LinksOfTheWeek that were published on jfx-central.com in July.
Again a lot has been shared this month in the jfx-central.com #LinksOfTheWeek! And that website itself is “under heavy construction” as version 2 is getting a completely new design and several improvements. Your help is wanted! See the last section of this summary…
With the April release of the Zulu Build of OpenJDK, Azul announced the integration of CRaC in its version 17 of Java for Linux. Coordinated Restore at Checkpoint (CRaC) is a feature introduced in OpenJDK to improve Java’s application startup and warmup times to milliseconds from seconds or even minutes, by allowing a running application to pause, snapshot its state, and restart later, even on a different machine.
Writing has always been my passion, and even in my previous jobs as a developer, I stood out as the one who enjoyed creating and maintaining documentation. But June 9th, 2023, marked my first birthday as a full-time technical writer at Azul. Yes, it’s already a year ago that I changed from being a developer-who-also-writes to a writer-who-also-develops. Let’s take a moment to reflect on my incredible journey over the past year.
Again a busy month in JavaFX-world! Here is a nice list with links for your reading and clicking pleasure! This is the summary of the #LinksOfTheWeek as published on jfx-central.com in May 2023.
CodeDead shared a GitHub Actions workflow for the people that are using JDK 20, Gradle and JavaFX 20 on Reddit to test, build and package your JavaFX application on Windows, Linux and macOS when creating a pull request on either the main/master or development branches of your GIT project.
JavaFX Scene Builder
Version 20 is about ready. Feel free to test the latest snapshots and report blocking issues.
On Foojay.io, Bazlur Rahman is publishing a series of interviews with various people from the OpenJDK community. I had the honor to be included in this series, and this is a repost.
Important message in the release notes: “JavaFX 20 is compiled with –release 17 and thus requires JDK 17 or later in order to run. If you attempt to run with an older JDK, the Java launcher will exit with an error message indicating that the javafx.base module cannot be read.”
Most important highlight for Johan Vos: “apps created many years ago still run on the latest JavaFX with latest OS. That is far from trivial, require lots of work, and not very common in client frameworks.”
And another quote from Johan: “I remember people and companies telling me 5 years ago they love Java and JavaFX, but they were pretty sure JavaFX would not be around in 2 years from them. So they used other client technologies… which don’t exist anymore today… while JavaFX… keeps moving forward. With less hype, and less marketing power than other client frameworks, but with dedication and focus on quality, stability and community. And with tons of stuff todo, I 100% realize that.”
You can already start experimenting with JavaFX 21 Early-Access Builds!
A request by Raumzeitfalle: “If you like Java and JavaFX, give Scene Builder Leadinge Edge a try. Its latest version runs with Java 20 using JavaFX 20 and it combines many of the pending PRs so that one can test the functionality. Feel free to share your feedback on Github.”
Announcing version 17.3 of FXGL: improve A* performance, isometric support for .tmx, 3D updates (lookAt, direction, rotation, .obj models), propertyMap convenience API.
Video with particles, one as “lead”, and other particles following with min and max distance, ensuring all particles are connected while the lead moves.
Fabrice Jossinet shared an impressive preview video of a new tool to visualize the folding pathways of an RNA during its transcription. Pathways are computed with a Rust algorithm. Visualization and GUI are made with Kotlin, JavaFX and his rnartistcore library.
“In RNAStudio, you can animate the transcription process along one of the computed folding pathways. When a new helix pops, it is first highlighted then added to the 2D. You can stop/restart the animation, go backwards/forwards.”
February is a short month, but this list seems to be longer than ever… A lot of game development, releases, interesting ongoing development, and so much more to read. Enjoy reading and clicking!
Foojay.io aims to be the starting point for “all-things OpenJDK,” but during one of my morning walks the idea struck me that this site really needs complete beginner materials, too.
Exactly one year ago, in December 2021, I published three articles of MQTT messaging with Raspberry Pi, Raspberry Pi Pico and HiveMQ Cloud. On June 30th of 2022, Raspberry Pi released a new product, that is the subject of this post: the Pico W. Yes, a new version of the original Pico, but with Wi-Fi. The new board is for sale for 6$, compared to the 4$ of the original Pico.
The end of the year is approaching, so it’s time to start scheduling your holidays for the next year. But I decided to go a step further and already planned those for 2038! Why? Well, a few weeks ago I gave a presentation to students, when I realized they had no idea what I was talking about when mentioning the Y2K-problem. Most of them weren’t even born yet in the year 2000! I also realized at that moment that I’m probably becoming a grumpy old man, but that’s a subject for another post… ;-) But I also found out a new similar problem is approaching in … 2038!
After my talk at J-Fall I got the question what is required to get started with #JavaOnRaspberryPi. In my book I list the components that are used, but indeed a short overview was missing (it’s now added to the ebook…). So here we go:
When I (re)started the JavaFX Links Of The Week on jfx-central.com in September, I was wondering if there would be enough material to share every week.
This summer I read the book “Entreprenerd” by Bruno Lowagie. It tells the story of how he started with the iText PDF Java library and turned that into a company together with his wife, and eventually sold it with all problems related to most sales and acquisitions trajects… In “Entreprenerd”, he also describes the process of writing two books about the iText library itself, as there were no good manuals available and he wanted to liberate himself from the ever-returning same questions. When I received this book about FXGL, I immediately had to think back to the story of Bruno. Who better to write a book about a library than Almas, the creator himself?
It has been a while since I last had to create documents in a program, and iText has been “on my radar” to try out for a while now. This weekend we had a party and wanted to organize a music bingo. For this, we needed a set of randomly selected songs to be printed out per person. A small Java project seemed to be the best solution, otherwise, this would have been a boring, manual, and repetitive task. Isn’t that the goal of most of our developments? “Automate the boring stuff!”
As I’m becoming a senior developer in terms of age, I’ve transitioned from one language to another. One of my main interests has always been clean, easy-to-understand UIs (User Interface). That journey started for me with Director (to create multimedia CD-ROMs), Flash website animation, and Flex Rich Internet Applications (= “Flash on steroids”). When I started developing with Java over 10 years ago, we had some projects with the early versions of Vaadin and JavaFX. As I went on with serverside applications, I only continued with JavaFX for some personal and side projects, and loved the way you can create a UI both with XML (FXML actually) and code, exactly the same approach I loved with Flex. Since then, my love for Java and JavaFX only grew and it’s still my major programming environment.
If you create a new SD card for a Raspberry Pi with the operating system, you can choose the “Raspberry Pi OS Full (32-bit)” edition, which includes Java 11. But a lot of the other available OS-versions don’t have Java included.
In the previous two posts in this series, we used Java on the Raspberry Pi mini-computer to send sensor data to HiveMQ Cloud, and visualize it on a dashboard.
In the previous post we started our discovery of HiveMQ Cloud with Java on the Raspberry Pi. We created an application to send measurements of various sensors to the HiveMQ Cloud MQTT broker. Using an online websocket client we verified the transition of the messages, and could see the data being published to this online message queue.
The Raspberry Pi in combination with an inexpensive touch screen, makes a perfect controller for a machine or game console. Let’s see how we can use Java and JavaFX to build a test application which also communicates with the pins of the Raspberry Pi to control a LED. We have done something before already in the post “Light Up your Christmas Tree with Java and Raspberry Pi”, so what’s new?
Are you a serious Java-developer looking for a fun project? Or want to learn something completely new and use your Java-knowledge to control electronic components? Here we go with this small project to get you introduced to the world of electronics programming!
Today I could give my talk “Having fun with Java and JavaFX on the Raspberry Pi” at the JFXDays. Normally this event takes place in Zurich, but this year also went virtual because… well because of 2020…
Today I had my first Devoxx talk, after my Java virtual talk a few weeks ago at the “Oracle Groundbreakers APAC Virtual Tour 2020” conference (21/10)! The event in Ukraine also went virtual which gave me the opportunity to share my love for Java, JavaFX and the Raspberry Pi again.
A micro SD card is the default way to add an operating system to the Raspberry Pi. But there is an alternative you need to consider if you want to make your system more reliable. SD cards are not super fast and can get corrupted when you are writing a lot to disc.
Thanks to Twitter and LinkedIn I got into contact with several developers who are doing Java stuff on Raspberry Pi and I want to share those projects with you as they can be an inspiration for all of us to get started with Java development on the Raspberry Pi.
In a previous post “Installing Java and JavaFX on the Raspberry Pi”, you can read how to install BellSoft LibericaJDK to be able to run JavaFX applications with a graphical user interface on a Raspberry Pi with ARMv7 or ARMv8 processor.
In my previous post “A Spring REST and H2 database application on the Raspberry Pi” an example was described to store sensors and measurements in a H2-database through REST API’s with a Spring application on the Raspberry Pi. This application takes some time to start on a Raspberry Pi, and Adam Bien who makes the airhacks.fm podcast asked me if I could compare this to a similar Quarkus application.
The “Pi” in the name of the Raspberry Pi refers to Python, but as a Java developer I love to know and experiment with the various Java frameworks I also use at work.
Spring is the main one, and I wanted to develop a proof-of-concept application which provides REST API’s to store and retrieve sensor data with a database back-end on the Raspberry Pi.
In my book “Getting Started with Java on Raspberry Pi” I dedicated a chapter on Pi4J, the leading framework to combine the power of Java with the hardware capabilities of the Raspberry Pi. This project which was started in 2012 by Robert Savage, evolved during the years to be able to support all the different Raspberry Pi-versions and many types of hardware components.
In “The MagPi Magazine” #93 and #94, published by the Raspberry Pi Foundation, you can find two articles which describe how you can get started with Java, Maven, Visual Studio Code and Pi4J on the Raspberry Pi.
FXGL is a Java, JavaFX and Kotlin Game Library (Engine) made by Almas Baimagambetov. As my son (almost 10y) challenged me to make a game during my “Corona-stay-at-home-time”, I had the luck Almas provided me a getting-started with this detailed step-by-step.
Based on multiple examples from my book “Getting started with Java on Raspberry Pi”, I created a touchscreen controller for the drum booth of my son. Combined with relays boards and an Arduino this allows to control LED strips and different lights with a touch screen interface.
While looking for a cheap and nice component to demonstrate the use of SPI (Serial Peripheral Interface) I found out this 8x8 matrix LED display on a board with a MAX7219 chip is the perfect piece of hardware!
Pi4J contains helper methods to minimize the work needed to use certain hardware modules on the Pi with Java. As an example, we will be using “GpioLcdDisplay” to control an LCD with 2 rows of 16 characters. After requesting the weather forecast from a public website, we will visualize this on the LCD display.
Trisha Gee (Coder, blogger, speaker, Developer Advocate at JetBrains, @trisha_gee), which I interviewed for “Chapter 4: Choosing an IDE”, and Josh Long (Spring Developer Advocate at Pivotal, @starbuxman) worked together on a blog series in which they showed the power of reactive data produced by a Spring application. Instead of repeating a REST call each time you want to get data from the server, you do one call which returns a continuous stream in which new data is pushed based on an interval.
To create some timeline images for my book, I created this little JavaFX application to be able to easily update the content and recreate the image. Of course you can do the same in an image editor, but hey I’m a programmer and lazy, so I want a program to do the job for me ;-)
Next step in my book progress, is getting more into the details of hardware components. And as always starting with the smallest most-used ones: resistors!
To be able to fully document this for the book and create a demo application, I started again with creating and sharing a Java library.
The best way to understand and learn something new, is to document it yourself. That’s what I’m doing in every step for my book-in-progress. And to fully get the pinnings and headers of the different Pi-boards, I decided to gather all info into a Java library with different enums to be able to auto-generate some content for the book and use in a few different example applications.
One of the example applications in my book “Getting started with Java on the Raspberry Pi” combines a JavaFX application with Mosquitto on the Raspberry Pi to control a LED strip with an Arduino. All wireless and independent of each other as the Mosquitto-queue is dealing with exchange commands between all applications.
Some time ago there was a question on the Pi4J-forum caused by some confusion about a numeric value handled as a byte which was logged as a negative number -86 instead of the expected value 170. So this is my attempt to try to solve this mystery… ;-)
This project is intended to provide a friendly object-oriented I/O API and implementation libraries for Java Programmers to access the full I/O capabilities of the Raspberry Pi platform. This project abstracts the low-level native integration and interrupt monitoring to enable Java programmers to focus on implementing their application business logic.
While trying out what Pi4J can do, I found it could easily be extended with a JavaFX application to provide info about the headers on a Pi board. This could later be extended to a remote/local (touch) User Interface using the REST interface from this post.
As my daily work mainly is Java and back-end stuff on “real servers”, I set myself for 2019 as a personal goal to experiment with Java 11 on a Raspberry PI.
So there is one “small” step remaining: build something which actually does something on the PI, talking to the GPIO’s and show what’s happening.
Spoiler alert: this is what’s is going to look like:
I prefer a Java app above a web app, because starting a new “modern” web development requires you to pull a bunch of dependencies and a lot of files before you can start. While Java just needs the JDK and one Java file, even on a Raspberry PI (as described in PiJava - Part 2).
From the Oracle site: “JavaFX is a set of graphics and media packages that enables developers to design, create, test, debug, and deploy rich client applications that operate consistently across diverse platforms.”
One of my goals for 2019 is experimenting with the latest Java and JavaFX versions on a Raspberry PI. After my experiments with the Python Pong game I was not very happy with the GUI I could build with Python and definitely wanted to try something similar, but with JavaFX which I like much more.
Is Java your first programming language and do you want to get up and running fast? Or maybe you are already an experienced programmer in another language and want to give Java a try?