Already the end of March, so time to look back at the JavaFX Links Of The Week that were published on https://www.jfx-central.com/.
Johan Vos is working on backports for JavaFX 17.0.7 to guarantee quality and long-term support.
And he announced JavaFX 20 could be released in the week of March 20th. As planned.
Together with the release of OpenJDK 20, we also got the release of OpenJFX 20. Both right on schedule, as always!
Announcement by Gluon.
Downloads are also provided via OpenJDK on jdk.java.net.
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.”
JavaFX and Game Development
17.0.13 of JArkanoid by Gerrit Grunwald adds the ability to shoot enemies.
He describes in a Foojay post how to turn an existing application to an iPhone app.
And he started with a new game, as you can see in this first screenshot of loderunner.
He shared the first version of a Tetris clone.
This is a screenshot.
You can play it online, thanks to WebFX.
Markus Eisele shared a link to the GitHub project of pacman-javafx: a JavaFX UI (2D+3D) for Pac-Man / Ms. Pac-Man, a project by Armin Reichert.
Another Minecraft-like world, in the self-made 3D engine of OrangoMango.
It got extended with more Minecraft-like functions: block breaking/placing, terrain generation, chunk system, and overall performance improvements.
He added some new block types and fixed some issues with block breaking/placing in his Minecraft-like world, and now has a small home made out of wood and coal blocks.
It also has Minecraft-like trees.
Sean Phillips – being a JavaFX 3D expert – finds his work awesome.
WhiteWoodCity shared a video with the combination of 2D and 3D game sub scenes.
Another video of a rougelike game prototype.
And shared how he created a pseudo 3D effect like Street of Rage, Dragon’s Crown with two GameSubScene and two entities of each GameWorld, and binding their properties with very clean and neat code.
His game got bumped to Graal and Java 20. Yes, indeed, already before the official release of Java 20!
And shared how he created a dynamic shadow effect of a jump action with a Shape and Binding in less than 40 lines of code.
Almas Baim has been very active on this month…
He discovered another FXGL game: “The Last Cowboy Game – UTFPR”.
And he shared a screenshot showing FXGL is available in IntelliJIDEA when creating a new JavaFX project.
Announcing version 17.3 of FXGL: improve A* performance, isometric support for .tmx, 3D updates (lookAt, direction, rotation, .obj models), propertyMap convenience API.
Pathfinding solution added to FXGL that outperforms the existing one by up to 80%, by replacing ArrayList with HashSet in critical code.
Another video with the FXGL engine pathfinding in action. This demo shows large red areas that are not passable, while dynamic entities are ignored and can be passed through.
Video showing physics sandboxes are never not fun! You can now pick up any entity as seen in this sample.
Video of text animations with particles.
Video with particles, one as “lead”, and other particles following with min and max distance, ensuring all particles are connected while the lead moves.
Isometric tile support in FXGL has had significant interest over the years. The maths looks straightforward but the architecture, as per usual, will need some careful pondering.
Screenshot of initial progress towards having first-class support for isometric levels in FXGL.
Video showing the new sliders in FXGL.
He is throwing grenades….
JavaFX in Science
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.
RNArtist shared again an impressive video showing RNA visualization with JavaFX.
“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.”
jdeploy by Steve Hannah now produces signed apps for Windows installers. This should make Windows Defender more pleasant to be around.
Dirk Lemmermann has also been very active…
TableView replacement based on GridPane. No virtualisation. Very useful for small datasets. Will be added to GemsFX very soon.
Screenshot of an answer on GitHub explaining there is only one codebase for jfxcentral website and desktop app, thanks to @jpro_one.
The TimePicker in GemsFX has been improved by @cpreisler. It can now also display and edit seconds and milliseconds.
He’s looking back at something he implemented almost 20 years ago with Java 5 and Swing, and it still works perfectly nowadays with Java 19 … just a whole lot faster!
He showed a custom tooltip implementation for charts. The tooltips show the values of all y-values for the same x-value whenever the mouse cursor hovers over one of the data points.
In a comment tweet, he shows code to illustrate that each data point in a JavaFX chart is also a node that allows us to integrate such a feature.
Read the comments to learn pro/contra of this approach and alternatives for large datasets.
He added a YearMonthPicker control to GemsFX. It’s included in version 1.67.0.
It was the result of a deep-dive into how to customize a ComboBox.
Fahim Bin Amin shows in a 1,5h video how to create your own full-fledged project from scratch using JavaFX and Maven.
Robert Ladstätter shared exciting news. LogoRRR is now officially available on the Apple Store!
工房奥谷 shared a video showing a 3D-CAD application to fit clothing patterns.
Juanan shared an example to learn how to use a REST API in Java with a JavaFX Pokemon viewer. He added links to multiple videos demonstrating the code. Sources are available on GitHub.
JavaFX 3D is asking who wants to contribute an importer for FBX or USDZ or GLB / glTF to FXyz. It already has 3D model importers for OBJ and Maya.
He already found a starting point in an existing java project.
Jakob Jenkov and Andres Almiray are talking about packaging a JavaFX app with JReleaser.
MhamadHarmush shared Java and JavaFX tutorials in Arabic.
WhiteWoodCity shared a screenshots of NotificationFX.
JavaFX3D shared an article about 3DViewer by ChrisNahr
JavaFX at DevNexus in Atlanta (4-6 April):
Juanan Pereira published a new video for his Software Engineering class: How to display custom items in JavaFX ListView
Andres Almiray updated the JavaFX plasma application to reflect changes brought by JReleaser 1.5.1, along with instructions for building.
Robert Ladstätter wrote a blog post about LogoRRR’s journey to the Apple App Store using JPackage.
Matt Coley has a long Twitter thread about new the Recaf UI JavaFX work, starting with a ‘please wait while the decompiler runs’ animation that pulls hex dumps from the class being decompiled, and many more each with a video.
Steve Hannah shared a GitHub action to generate native installers for Java desktop apps.
SmartFinder by Serendipity version 1.7.3 now runs with JavaFX 20! It’s a Desktop Search Tool APP fully developed with Java and JavaFX technology.
Dirk Lemmermann again shared a lot of JavaFX library and other info:
“If any of you work on planning and scheduling applications I can highly recommend #FlexGanttFX for visualizing plans / schedules. Yes, it is a commercial library.”
“If your JavaFX application requires an on-screen keyboard, you might wanna check out KeyboardFX.”
A screenshot of the new market data portal he is creating, running in a browser.
The new calendar view in GemsFX now also supports “date range” selection (and single date, multiple dates selection).
Thanks to Florian Kirmaier, GemsFX has been extended with a great utility class for synchronous scrolling of two VirtualFlow instances.
And he’s worried about his job as “ChatGPT “generates” a JavaFX app based on requirements”. That’s probably thanks to the stability of the API over the last years!