<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Gail Anderson on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/gail-anderson/</link><description>Articles written by Gail Anderson on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 19 Dec 2022 08:09:31 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/gail-anderson/index.xml" rel="self" type="application/rss+xml"/><item><title>Foojay Podcast #9: State of JavaFX, Libraries, and Projects</title><link>https://foojayio.github.io/website/today/foojay-podcast-9/</link><pubDate>Mon, 19 Dec 2022 08:09:31 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-9/</guid><description>&lt;p&gt;JavaFX was introduced by Sun Microsystems in May 2007 and provides a platform for desktop, mobile, and embedded applications built on Java.&lt;/p&gt;
&lt;p&gt;Libraries and software are available for the complete lifecycle of an application to run from a single codebase on Windows, macOS, Linux, Android, and iOS. JavaFX was originally part of the JDK, the Java Development Kit, and became a standalone technology in 2018.&lt;/p&gt;
&lt;p&gt;The development is a joint effort between Oracle, Gluon (a small Belgian-based company), and the community.&lt;/p&gt;</description></item><item><title>Wordish with JavaFX - Part 5</title><link>https://foojayio.github.io/website/today/wordish-with-javafx-part-5/</link><pubDate>Tue, 14 Jun 2022 07:25:37 +0000</pubDate><guid>https://foojayio.github.io/website/today/wordish-with-javafx-part-5/</guid><description>&lt;p&gt;Welcome to Part 5 and the final installment of this series.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-1/"&gt;Part 1&lt;/a&gt;
, we introduced the Wordish game with JavaFX and discussed the main UI layout.&lt;/li&gt;
&lt;li&gt;In &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-2/"&gt;Part 2&lt;/a&gt;
, we discussed look and feel enhancements. We introduced specialized Label and Button controls that use pseudo-classes for advanced CSS styling. In addition, we covered incorporating third-party font libraries and customizing Scene Builder to leverage these features.&lt;/li&gt;
&lt;li&gt;Next, in &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-3/"&gt;Part 3&lt;/a&gt;
, we explored the controller code that maintains game state and responds to user input with appropriate updates to the UI.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-4/"&gt;Part 4&lt;/a&gt;
, &lt;strong&gt;What&amp;rsquo;s in a Word, Anyway?&lt;/strong&gt;, examines how we get our words and how we determine if a submitted word is valid.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And now in Part 5, we turn to JavaFX charts, showing how to customize charts with orientation and colors and how to add nodes to the chart scene graph.&lt;/p&gt;</description></item><item><title>Wordish with JavaFX - Part 4 : Foojay</title><link>https://foojayio.github.io/website/today/wordish-with-javafx-part-4/</link><pubDate>Tue, 07 Jun 2022 09:23:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/wordish-with-javafx-part-4/</guid><description>&lt;p&gt;Welcome to Part 4 of this five part series.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-1/"&gt;Part 1&lt;/a&gt;
, we introduced the Wordish game with JavaFX and discussed the main UI layout.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-2/"&gt;Part 2&lt;/a&gt;
, we discussed look and feel enhancements.&lt;/p&gt;
&lt;p&gt;We introduced specialized Label and Button controls that use pseudo-classes for advanced CSS styling.&lt;/p&gt;
&lt;p&gt;We covered incorporating third-party font libraries and customizing Scene Builder to leverage these features.&lt;/p&gt;
&lt;p&gt;Next, in &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-3/"&gt;Part 3&lt;/a&gt;
, we explored the controller code that maintains game state and responds to user input with appropriate updates to the UI.&lt;/p&gt;</description></item><item><title>Wordish with JavaFX - Part 3</title><link>https://foojayio.github.io/website/today/wordish-with-javafx-part-3/</link><pubDate>Tue, 31 May 2022 07:23:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/wordish-with-javafx-part-3/</guid><description>&lt;p&gt;Welcome to Part 3 of this five part series.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-1/"&gt;Part 1&lt;/a&gt;
, we introduced the Wordish game with JavaFX and discussed the main UI layout.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-2/"&gt;Part 2&lt;/a&gt;
, we discussed look and feel enhancements.&lt;/p&gt;
&lt;p&gt;We introduced specialized Label and Button controls that use pseudo-classes for advanced CSS styling.&lt;/p&gt;
&lt;p&gt;We covered incorporating third-party font libraries and customizing Scene Builder to leverage these features.&lt;/p&gt;
&lt;p&gt;Now in Part 3, we&amp;rsquo;ll examine the controller code. The controller code maintains game state and responds to user input with appropriate updates to the UI.&lt;/p&gt;</description></item><item><title>Wordish with JavaFX - Part 2</title><link>https://foojayio.github.io/website/today/wordish-with-javafx-part-2/</link><pubDate>Tue, 24 May 2022 07:50:54 +0000</pubDate><guid>https://foojayio.github.io/website/today/wordish-with-javafx-part-2/</guid><description>&lt;h2 id="h2-0-building-games-and-having-fun-with-java-and-javafx"&gt;Building Games and Having Fun with Java and JavaFX&lt;/h2&gt;
&lt;p&gt;Welcome to Part 2 of this five part series!&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/wordish-with-javafx-part-1/"&gt;Part 1&lt;/a&gt;
, we introduced the Wordish game with JavaFX and discussed the main UI layout.&lt;/p&gt;
&lt;p&gt;In this second part, we&amp;rsquo;ll discuss some important look and feel enhancements.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll show you specialized Label and Button controls and using pseudo-classes for advanced CSS styling.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll also cover incorporating third-party font libraries and customizing Scene Builder to leverage these features.&lt;/p&gt;</description></item><item><title>Wordish with JavaFX - Part 1</title><link>https://foojayio.github.io/website/today/wordish-with-javafx-part-1/</link><pubDate>Tue, 17 May 2022 10:13:21 +0000</pubDate><guid>https://foojayio.github.io/website/today/wordish-with-javafx-part-1/</guid><description>&lt;h2 id="h2-0-building-games-and-having-fun-with-java-and-javafx"&gt;Building Games and Having Fun with Java and JavaFX&lt;/h2&gt;
&lt;p&gt;Wordish is a JavaFX implementation of the game Wordle. It&amp;rsquo;s like Wordle. It is Wordle-ish. It&amp;rsquo;s Wordish.
&lt;img src="https://foojayio.github.io/website/today/wordish-with-javafx-part-1/playgame5-308x510.png" alt="" loading="lazy"&gt;
 Figure 1. Wordish main layout view&lt;/p&gt;
&lt;p&gt;Wordle is a daily online word game. You can play the official Wordle game here:&lt;a href="https://www.nytimes.com/games/wordle/index.html" target="_blank" rel="noopener noreferrer"&gt;https://www.nytimes.com/games/wordle/index.html&lt;/a&gt;
. If you haven&amp;rsquo;t played yet, go check it out.&lt;/p&gt;
&lt;p&gt;As I played Wordle, I realized how much fun it would be to create a JavaFX implementation. When you submit a word, each tile rotates to reveal how the individual letter matches &amp;ndash; or doesn&amp;rsquo;t match &amp;ndash; the target word. &lt;em&gt;(Ooh, animation!)&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Creating Mobile Apps with JavaFX - Part 3</title><link>https://foojayio.github.io/website/today/creating-mobile-apps-with-javafx-part-3/</link><pubDate>Fri, 25 Jun 2021 09:04:04 +0000</pubDate><guid>https://foojayio.github.io/website/today/creating-mobile-apps-with-javafx-part-3/</guid><description>&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/creating-mobile-apps-with-javafx---part-1/"&gt;Part 1&lt;/a&gt;
, we introduced a mobile app game, TiltMaze, written completely in JavaFX, which you can download from either the &lt;a href="https://apps.apple.com/app/id1566464439" target="_blank" rel="noopener noreferrer"&gt;Apple App Store&lt;/a&gt;
 or &lt;a href="https://play.google.com/store/apps/details?id=com.asgteach.accelerometer.TiltMaze" target="_blank" rel="noopener noreferrer"&gt;Google Play&lt;/a&gt;
 and install it on your mobile device or tablet. In &lt;a href="https://foojayio.github.io/website/today/creating-mobile-apps-with-javafx---part-1/"&gt;P&lt;/a&gt;
&lt;a href="https://foojayio.github.io/website/today/creating-mobile-apps-with-javafx---part-2/"&gt;art 2&lt;/a&gt;
, we showed you how to work with Gluon and GraalVM to build native images that execute on either Apple or Android mobile devices and tablets.&lt;/p&gt;
&lt;p&gt;In this article, we&amp;rsquo;ll discuss how to upload your application to the respective mobile app stores so the world can install your application on their devices.&lt;/p&gt;</description></item><item><title>Creating Mobile Apps with JavaFX - Part 2</title><link>https://foojayio.github.io/website/today/creating-mobile-apps-with-javafx-part-2/</link><pubDate>Fri, 18 Jun 2021 07:10:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/creating-mobile-apps-with-javafx-part-2/</guid><description>&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/creating-mobile-apps-with-javafx---part-1/"&gt;Part 1&lt;/a&gt;
, we introduced a mobile app game, TiltMaze, written completely in JavaFX, which you can download from either the &lt;a href="https://apps.apple.com/app/id1566464439" target="_blank" rel="noopener noreferrer"&gt;Apple App Store&lt;/a&gt;
 or &lt;a href="https://play.google.com/store/apps/details?id=com.asgteach.accelerometer.TiltMaze" target="_blank" rel="noopener noreferrer"&gt;Google Play&lt;/a&gt;
 and install it on your mobile device or tablet.&lt;/p&gt;
&lt;p&gt;In this article, we&amp;rsquo;ll discuss the technologies we use with JavaFX to build the JVM byte code version as well as native images that target iOS and Android devices.&lt;/p&gt;
&lt;h3 id="h3-0-gluonfx-plugin-for-maven"&gt;GluonFX plugin for Maven&lt;/h3&gt;
&lt;p&gt;Gluon (&lt;a href="https://docs.gluonhq.com/#_the_gluon_client_plugin_for_maven" target="_blank" rel="noopener noreferrer"&gt;https://docs.gluonhq.com/&lt;/a&gt;
) has a Maven plugin that lets you build native-image JavaFX applications targeting multiple platforms. While Java has always been about compiling Java byte code that runs in a Java Virtual Machine (JVM) anywhere and everywhere (Write Once, Run Anywhere), there are prohibitions with running byte code in the mobile environment. Besides the performance penalties of executing byte code in a virtual machine and the relatively long startup time, Apple prohibits JVM applications on mobile targets and Android Java is non-standard. If you choose to leave the JavaFX world for native toolkits, you need to acquire expertise in Objective C/Swift as well as the respective native UI toolkits to target these platforms. Spoiler alert: I didn&amp;rsquo;t do that!&lt;/p&gt;</description></item><item><title>Creating Mobile Apps with JavaFX - Part 1</title><link>https://foojayio.github.io/website/today/creating-mobile-apps-with-javafx-part-1/</link><pubDate>Fri, 11 Jun 2021 07:14:27 +0000</pubDate><guid>https://foojayio.github.io/website/today/creating-mobile-apps-with-javafx-part-1/</guid><description>&lt;p&gt;Mobile application offerings for both IOS and Android &lt;a href="https://www.statista.com/statistics/271644/worldwide-free-and-paid-mobile-app-store-downloads/" target="_blank" rel="noopener noreferrer"&gt;continue increasing each year&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;In this three-part series, I&amp;rsquo;ll show how to use JavaFX for mobile app development: JavaFX looks great and runs on both mobile platforms.&lt;/p&gt;
&lt;p&gt;You use the same JavaFX code targeting Google Play and Apple App stores. Performance is excellent and startup time is fast with native images. You use Java 11+ and the latest JavaFX.&lt;/p&gt;
&lt;p&gt;Our game is TiltMaze Labyrinth. Figure 1 shows TiltMaze running on an Android Nexus 5X. Figure 2 shows TiltMaze running on an iPhone 8 Plus.&lt;br&gt;
&lt;img src="https://foojayio.github.io/website/today/creating-mobile-apps-with-javafx-part-1/TiltMaze-android-small.png" alt="" loading="lazy"&gt;
 Figure 1. TiltMaze on Android&lt;br&gt;
&lt;img src="https://foojayio.github.io/website/today/creating-mobile-apps-with-javafx-part-1/TiltMaze-iPhone-small.png" alt="TiltMaze on iPhone" loading="lazy"&gt;
 Figure 2. TiltMaze on iPhone&lt;/p&gt;</description></item></channel></rss>