Streamline the building, testing, packaging, and release of your desktop JavaFX applications for all major platforms with simple to use CI/CD Pipelines and GitHub. This session will cover the details of combining GitHub for hosting source code and binaries for Mac OS, Windows and Linux of your application, and how to take advantage of Azure Pipelines plan for Open Source projects. We will learn about using a Maven archetype and a Gradle starter project for JavaFX apps, both ready for CI/CD and how they are configured. Join this talk and get ready to streamline your desktop apps just like your microservices.
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
1. From GitHub Source to GitHub Release:
Free CI/CD Pipelines for JavaFX Apps
Bruno Borges
Principal Product Manager, Java at Microsoft
December 02, 2019
2. Who am I?
• Java Champion
• JavaFX hobbyist/advocate
• Java developer since 2001
• Principal Program/Product Manager
• Java at Microsoft
• Previously
• Java Team Lead on the Azure Developer Relations
Advocacy Group
• Oracle: Product Manager for Developer Relations
and Engagement Strategy
@brunoborges
/brunoborges
3. Agenda
Java at Microsoft
Java Packaging Tools
• Java 9+ and jlink
• Java 14 and jpackage
• Maven/Gradle support
Microsoft CICD Overview
• Intro to GitHub Actions and Azure DevOps
JavaFX Apps – Live Demos
• Building and Shipping
5. Microsoft
Depends
Heavily
on Java
LinkedIn
• Over 500+ Java microservices in production.
• Over 60+ Java open source projects on GitHub.
Azure
• Services dependent on Java include primarily Azure HDInsight, Azure
Databricks, and Azure Spring Cloud.
SQL Server
• Java now embedded out of the box (Azul Zulu).
• PolyBase data visualization and Big Data Clusters interop with Spark,
Hadoop connectors.
• Java apps and JDBC connectors
Yammer
• Most of its back-end implemented in Java.
Mojang’s Minecraft
• Hundreds of servers built in Java.
• Client Java Edition still very popular.
Android
• 1,000+ of MS developers who build native or Xamarin apps for Android still
need Java on their dev environments and CI/CD pipelines.
• New Surface Duo phone based on Android OS.
7. Java on Azure: Free Commercial Support
§ Supported OS: Windows, Linux, MacOS
§ Supported Platforms: Microsoft Azure, Azure Stack
§ Upstream changes pushed to OpenJDK by Azul Systems
JUL 2023 MAR 2025 SEP 2026
Available now, supported until… Available now
PREVIEW
8. DevOps Tools
• Jenkins plugins for Azure and integration with Azure DevOps
• Azure Pipelines
• Supports Microsoft-hosted and self-hosted build agents
• GitHub Actions
• Supports GitHub-hosted and self-hosted build agents
• Windows, Linux, and macOS hosted build agents for both services
Azure Pipelines Azure DevOps
9. From Code to OS Installers
Azure Pipelines
App.java
Project Releases tab
MSI, EXE DEB, RPM PKG, DMG
Build Project and Installers
Upload to
Or anywhere else
12. jlink – Create Custom Java Runtimes
• Trims a Java Runtime to contain only required modules to run the app
• Full JDK 13: 305 MB (expanded)
• jlink’ed runtime: 25.5 MB (expanded)
module myapp {
requires java.logging;
}
jlink --module-path "$JAVA_HOME/jmods":target/classes
--add-modules myapp
--output jruntime/
13. jpackage – Create OS Specific Packages
• JEP 343 – jdk.java.net/jpackage/
• Under development on upcoming JDK 14
• Packages a Java application and the JRE on OS specific installers
• DMG: 11 MB (compressed)
jpackage --type dmg
--dest target/installer
--name mywebapp
--module-path target/helloworld-1.0-SNAPSHOT.jar
--module example.web/com.example.App
14. Maven and Gradle Plugins
• General support for JPMS/Jigsaw (Java 9+ modules)
• Maven: core plugins support it
• Gradle: not currently supported
• Maven
• jmod: maven.apache.org/plugins/maven-jmod-plugin
• jlink: maven.apache.org/plugins/maven-jlink-plugin
• jlink: github.com/raydac/mvn-jlink
• jlink+jpackage: agilhard-oss.github.io/jlink-jpackager-maven-plugin/site/
• Gradle
• badass-jlink-plugin.beryx.org/releases/latest
16. Azure and GitHub
Source control
Based on Git
Azure
Repos
GitHub
CI/CD
Based on the Azure
Pipelines technology
Code packages
Based on standard,
open package formats
Azure
Pipelines
GitHub
Actions
Azure
Artifacts
GitHub
Packages
17. GitHub Actions and Azure Pipelines
GitHub Actions is the modern CI/CD
platform integrated into GitHub
GitHub Actions is the best option for customers
leveraging GitHub as their source control
repository or looking to adopt modern CI/CD
Actions powered by the community.
Choose Azure Pipelines if your organization
needs…
• Support for Git repos outside of GitHub, or
inside TFVC or Subversion.
• Cloud-hosted functionality with data at rest
outside of the US.
• Continuous Delivery for containerized
workloads with deep Kubernetes integration.
• MLOps capabilities integrated with Azure
Machine Learning.