JavaFX Links of December 2024
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!
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.
Core
- The OpenJFX project is looking for UI designers and developers for a new modern theme: “Ideally, this is more than a “Modena 2025” refresh. I completely agree that this is a big project, and it requires talented people to pull it off. However, there are talented UI designers and developers in the JavaFX community. I hope this will start a discussion on how a modern JavaFX user experience can look like, and how we’d be able to achieve it.”
- Johan Vos shared: “Progress. This is a screenshot from the XCode console, output from an iPhone. HelloWorld.java on iOS using hotspot (zero interpreter mode). Finally back to the point reached by the great Bob Vandette many years ago. Need to anchor this.”
Applications
- BJ Dela Cruz on LinkedIn: “My HEX Viewer application is nearly done! ⭐️ Users can edit a file at a byte or bit level, and the last screenshot shows the changes after they have been saved. Note that the MD5 and SHA256 hashes will be different once the file is saved.” You can find the sources on Bitbucket.
- Patrik Karlström released CRIC 24.12: “Custom Runtime Image Creator, a gui for the jlink command. It produces custom runtime images, kind of Java Runtime Environments. Starting with this release, the snap supports classic confinement. Enjoy!” You can find the releases and source on GitHub.
- Alon Xiong is sharing more Datacollie progress on Bluesky: “Today, I finished the function for executing Update | Insert | Delete statements in SQL Console of Datacollie. And now, I have to go out in the sun, I feel like I’m growing mold.”
- Sean Phillips: “New full release for the Trinity XAI analysis tool just in time for the holiday season 💙. Thanks again to Samypr100 for his build wizardry!”
- Patrik Karlström: “Say hello to nbRsync 24.12! 🎆 It’s a GUI for rsync written in Java & JavaFX atop the NetBeans Platform. nbRsync has a built-in scheduler that manages backups in a cron like fashion. AppImage for Linux is available too.”
Games
- Mark J. Koch: “Making some small progress on dialogs for my next point and click adventure called ‘Chiba City Blues’. It’s an unauthorized remake of Neuromancer Commodore/PC (1988/1989). Same game content, new engine and new artwork. 100% open source. So much to still do.”
Components, Libraries, Tools
- Ongoing work by Dirk Lemmermann on GemsFX:
- “Just released a new control inside GemsFX 2.69.0 that will allow you to toggle between a wrapped node of your application (e.g. a list view) and a progress indicator (when loading / refreshing data). Quite handy. I use it all the time.”
- “Working on a new PagingListView control for GemsFX. It will ship with a feature-rich pagination control and background data loading. Abandoning the VirtualFlow will give you pixel perfect accuracy. The control wraps a standard ListView and standard ListCells.”
- “Getting a kick out of styling the PagingControls view in GemsFX. Reusing CSS styles by Jasper Potts.”
- Almas Baim shares a video of an experiment with shaders in pure Java (at runtime) in a 3D animation with FXGL.
- WhiteWoodCity hopes to see more: “plez do it, we are all expecting this & plez support vulkan. I made a demo project for using shader in JavaFX. it works for mac and should work for windows, since vulkan and ffm are both cross-platformed.”
- Pedro Duque Vieira is wrapping up the for the next release of Transit Theme:
- PART 13: “New LIGHT and DARK styles for ToolBar and DatePicker, including a “light” variation for ToolBar.”
- “The release is getting close. Still missing but already partially implemented: ListView, TreeView, TableView and TableTreeView.”
Podcasts, Videos, Books
- New JFXInAction interviews by Frank Delporte:
- In episode 11 he talks with Almas Baim about FXGL, 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 goal, based on actions and preconditions. In the video, Almas live codes such a solution with a minimal amount of code!
- In episode 12 you’ll learn about jDeploy, created by Steve Hannah: “Building a JavaFX 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!”
- Jago de Vreede is working on a user interface for SDKMAN that also brings its full functionality to Windows! He uses Java, JavaFX, GraalVM, SceneBuilder,… and more as you can learn from episode 13 of the “JFX In Action” interviews.
- The third edition of “The Definitive Guide to Modern Java Clients with JavaFX: Cross-Platform Mobile and Cloud Development Updated for JavaFX 21 and 23” is now available. 644 pages of JavaFX brought to you by Stephen Chin, Johan Vos, and James Weaver.
- The talk by Frank Delporte and his son Vik about the MelodyMatrix application, at the JFall conference in November, got published: “Looking at Music: an experiment with Kotlin, JavaFX, MIDI, and VirtualThreads”
Tutorials
- Muhammed Afsal Villan created a livestream tutorial on YouTube: “JavaFX with Spring AI. Building a real LLM-based AI Assistant from Scratch.” The accompanying code is available on GitHub.
- polypragmatist shared: “I’ve just published what I believe to be the most comprehensive guide to styling the JavaFX TableView available. This guide includes some tutorials plus a complete (I think) catalogue of TableView CSS selectors.”
- Radhika Vyas on index.dev: “The Best Way to Build a Java GUI Application: A Step-by-Step Guide”
Miscellaneous
- Maciej Gorywoda shared on Bluesky: “This is my BSky account if anyone was interested in talking about JavaFX on Android. In fact, I have a whole repository of examples.”
- Coding tip by Johan Vos: “VisualVM can be a great help in performance tuning for JavaFX apps. The screenshot shows the single-threaded JavaFX AppThread spends ca 2/3 of its time in “userspace” (Platform.runLater) and about 30% time in rendering (QuantumToolkit$$…).”
- Frank Delporte wrote a post for JVM Advent 2024, the JVM Programming Advent Calendar: “Coding for fun: An experiment with Virtual Threads, JavaFX, and Music! 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 play back MIDI events with just a few lines of code and thousands of threads?”
- In an ongoing discussion on Bluesky, Josh Long is asking for support: “What is the recommended way to do GraalVM images w JavaFX?”
- And a similar question by Marcin Grzejszczak: “Is there anybody out there who has managed to setup a JavaFx application so that a native image is being produced?”
- Johan Vos on Bluesky: “Combining 2 of my gigs (JavaFX and quantum physics): I think about the pulse job (the job that renders the scenegraph) as the collapse of the wavefunction. Events happen before the collapse, and the relation between events and rendering is… complex.”
- polypragmatist is looking for better JavaFX documentation: “I’m writing a new article about styling TableView. I’m trying to aim for something that can be both a tutorial and a reference and I am amazed at the depth of styling available. I’m also appalled that NONE of this stuff is documented anywhere. I’ve been researching this for hours. I mean. Would you have imagined that you can style the dots that indicate column sort order? Would you have imagined that you can style them differently for ascending vs descending? Would you have imagined that they wouldn’t have documented this????”
- A tip by Johan Vos: “I believe
Scene.addPreLayoutPulseListener
is a less-known but very powerful API in JavaFX. I use it to fix performance issues in apps using ListView, where the backingList is sometimes updated very often. Sending individual ListChange events to the control kills performance, so I sync once per pulse. Interestingly, the JBS issue, JDK-8097917, for this was created by Stuart Marks who is my #1 reference for (amongst other things) Java List performance!”() - René Gielen created a small demo: “Stripping Spring Boot + JavaFX to the core. Feedback appreciated!” You can find it on GitHub.
- A pro tip by Dirk Lemmermann: “Make ScenicView an integral part of your application. Define a keyboard shortcut to bring it up whenever you want, e.g. CTRL+SHIFT+S -> ScenicView.launch(scene). So helpful!” Thanks to Jonathan Giles.
- An article in the JVM Advent by Cay Horstmann that also mentions the JavaFX application JTaccuino: “Java in the Small”.
- Heshan Kariyawasam shared a video: “I created a fun project called Java Rabbit using JavaFX. It lets you draw on a canvas by entering simple commands. It’s just for fun, but I’m planning to add more features in the future. 🎉”. You can find it on GitHub.
- Carl Dea: “I wish someone could create UIVerse for JavaFX developers.😁 It was my wishful thinking for the JavaFX enthusiast in many of us.”
JFX Central
- New content:
- A summary of the JavaFX Links Of The Week of November got published on Foojay.io.