THE JAVAFX
ECOSYSTEM
ANDRES ALMIRAY IX-CHEL RUIZ
@AALMIRAY @IXCHELRUIZ
The JavaFX Ecosystem
DON’T FORGET TO VOTE!
DISCLAIMER
THE JAVAFX ECOSYSTEM IS COMPRISED OF
OPEN SOURCE AND COMMERCIAL
OFFERINGS.
ALL PROJECTS LISTED IN THIS
PRESENTATION ARE OPEN SOURCE.
WE’LL ONLY COVER LIBRARIES AND
FRAMEWORKS.
THE JAVAFX ECOSYSTEM IS SO BIG YOU
CAN’T COVER IT ALL IN 1 HOUR.
The JavaFX Ecosystem
LAYOUT
MigLayout - http://miglayout.com
<?xml	
  version="1.0"	
  encoding="UTF-­‐8"?>	
  
	
  
<?import	
  javafx.scene.control.*?>	
  
<?import	
  org.tbee.javafx.scene.layout.fxml.MigPane?>	
  
	
  
<MigPane	
  xmlns:fx="http://javafx.com/fxml"	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  fx:controller="org.example.SampleController"	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  layout="fill,	
  wrap	
  2"	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  cols="[label,	
  left,	
  pref!][grow,	
  50::]">	
  
	
  	
  	
  	
  <Label	
  text="Username:"/>	
  
	
  	
  	
  	
  <TextField/>	
  
	
  	
  	
  	
  <Label	
  text="Password:"/>	
  
	
  	
  	
  	
  <PasswordField/>	
  
	
  	
  	
  	
  <Button	
  prefWidth="200.0"	
  text="Login"	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  MigLayoutPane.cc="span	
  2,	
  right"/>	
  
</MigPane>	
  
WIDGETS
Medusa - https://github.com/HanSolo/Medusa
JSilhouette - https://github.com/aalmiray/jsilhouette
JideFX - https://github.com/jidesoft/jidefx-oss
Fields: FormattedTextField, NumericTextField, etc.
Decoration: apply decorators anywhere (like JXLayer).
Validation: custom validators; builds on top of decoration.
Common utilities for animations, tooltips, hints, search, etc.
RichTextFX - https://github.com/TomasMikula/RichTextFX
https://github.com/JFormDesigner/markdown-writer-fx
JFXtras - http://jfxtras.org/
ControlsFX - http://fxexperience.com/controlsfx/
LOOKS
JFoenix - https://github.com/jfoenixadmin/JFoenix/
BootstrapFX - https://github.com/aalmiray/bootstrapfx/
FontawesomeFX - https://bitbucket.org/Jerady/fontawesomefx/
Ikonli - http://aalmiray.github.io/ikonli/
Undecorator - https://github.com/in-sideFX/UndecoratorBis
TESTING
TestFX - https://github.com/TestFX/TestFX
public	
  class	
  DesktopPaneTest	
  extends	
  ApplicationTest	
  {	
  
	
  	
  	
  	
  public	
  void	
  start(Stage	
  stage)	
  {	
  /*	
  init	
  */	
  }	
  
	
  
	
  	
  	
  	
  @Test	
  
	
  	
  	
  	
  public	
  void	
  should_drag_file_into_trashcan()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  //	
  given:	
  
	
  	
  	
  	
  	
  	
  	
  	
  rightClickOn("#desktop").moveTo("New")	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .clickOn("Text	
  Document");	
  
	
  	
  	
  	
  	
  	
  	
  	
  write("myTextfile.txt").push(ENTER);	
  
	
  
	
  	
  	
  	
  	
  	
  	
  	
  //	
  when:	
  
	
  	
  	
  	
  	
  	
  	
  	
  drag(".file").dropTo("#trash-­‐can");	
  
	
  
	
  	
  	
  	
  	
  	
  	
  	
  //	
  then:	
  
	
  	
  	
  	
  	
  	
  	
  	
  verifyThat("#desktop",	
  hasChildren(0,	
  ".file"));	
  
	
  	
  	
  	
  }	
  
}	
  
TestFX - https://github.com/TestFX/TestFX
clickOn("#showSettingsButton");	
  
	
  
JFXDrawer	
  settingsPanel	
  =	
  lookup("#drawer").query();	
  
waitUntil(settingsPanel,	
  isShown(),	
  defaultWaitTimeout());	
  
	
  
verifyThat("#username",	
  hasText(defaultUsernameValue));	
  
clickOn("#username").eraseText(defaultUsernameValue.length());	
  
clickOn("#username").write(usernameValue);	
  
verifyThat("#username",	
  hasText(usernameValue));	
  
TestFX - https://github.com/aalmiray/testfx-dsl/
import	
  static	
  org.kordamp.testfx.QueryChain.$;	
  
	
  
$("#showSettingsButton")	
  
	
  	
  	
  	
  .click()	
  
.$$("#drawer")	
  
	
  	
  	
  	
  .waitUntil(isShown(),	
  defaultWaitTimeout())	
  
.$$("#username")	
  
	
  	
  	
  	
  .verifyThat(hasText(defaultUsernameValue))	
  
	
  	
  	
  	
  .click()	
  
	
  	
  	
  	
  .eraseText(defaultUsernameValue.length())	
  
	
  	
  	
  	
  .write(usernameValue)	
  
	
  	
  	
  	
  .verifyThat(hasText(usernameValue));	
  
FRAMEWORKS
Afterburner.fx - http://afterburner.adam-bien.com/
•  High productivity with WYSIWYG editor inclusion
•  No boilerplate code
•  Highest possible non-intrusion
•  No external libraries or dependencies
•  Maven 3 build support
JacpFX - http://jacpfx.org/
•  Spring support
•  Maven support
•  Workbench and Perspective concepts borrowed from Eclipse
•  Messaging
•  Light-weight event bus
•  View templates
JRebirth - http://www.jrebirth.org/
•  Simplify Thread Management
•  Avoid memory leak
•  Maintain a good SoC
•  Be the more convenient as possible for developers
•  Be lightweight (and modularizable)
•  Follow OSS spirit and Java Best Practices
•  Maven compatible
•  MVC
MvvmFX - https://github.com/sialcasa/mvvmFX
Provides necessary components to implement the MVVM
pattern with JavaFX.
Maven compatible.
Griffon - http://griffon-framework.org/
•  Application life cycle
•  Configuration
•  MVC artifacts
•  Localized resources (and injection)
•  Loosely coupled actions
•  Dependency injection
•  Event system
•  Centralized error management
•  Extension points via plugins
•  Maven and Gradle support
PLATFORMS
e(fx)clipse - http://efxclipse.bestsolution.at/
Eclipse RCP + JavaFX Views
eFX - https://bitbucket.org/sreimers/efx
NetBeans RCP + JavaFX Views
LIBRARIES
AnchorFX - https://github.com/aalmiray/AnchorFX
VWorkflows - https://github.com/miho/VWorkflows
ReactFX - https://github.com/TomasMikula/ReactFX
Flowless - https://github.com/TomasMikula/Flowless
UndoFX - https://github.com/TomasMikula/UndoFX
WellbehavedFX - https://github.com/TomasMikula/
WellBehavedFX
RxJavaFX - https://github.com/ReactiveX/RxJavaFX
MISC
GroovyFX - http://groovyfx.org/
application(title:	
  'Sample',	
  sizeToScene:	
  true,	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  centerOnScreen:	
  true)	
  {	
  
	
  	
  	
  	
  scene(fill:	
  WHITE,	
  width:	
  300,	
  height:	
  120)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  migLayoutPane(layoutConstraints:	
  'fill')	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  label	
  'Username:',	
  constraints:	
  'left'	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  textField	
  constraints:	
  'grow,	
  wrap')	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  label	
  'Password:',	
  constraints:	
  'left'	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  passwordField	
  constraints:	
  'grow,	
  wrap')	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  button	
  loginAction,	
  constraints:	
  'span	
  2,	
  right'	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  }	
  
}	
  
AsciidocFX - http://asciidocfx.com/
The JavaFX Ecosystem
The JavaFX Ecosystem
The JavaFX Ecosystem
DON’T FORGET TO VOTE!
THANK YOU!
ANDRES ALMIRAY IX-CHEL RUIZ
@AALMIRAY @IXCHELRUIZ

More Related Content

PDF
Making the Most of Your Gradle Build
PDF
Making the Most of Your Gradle Build
PPTX
Java Libraries You Can’t Afford to Miss
PDF
Java Libraries You Can’t Afford to Miss
PPTX
Spring Boot
PPTX
The world of gradle - an introduction for developers
PDF
Springを用いた社内ライブラリ開発
PDF
RSpec 3.0: Under the Covers
Making the Most of Your Gradle Build
Making the Most of Your Gradle Build
Java Libraries You Can’t Afford to Miss
Java Libraries You Can’t Afford to Miss
Spring Boot
The world of gradle - an introduction for developers
Springを用いた社内ライブラリ開発
RSpec 3.0: Under the Covers

What's hot (20)

PDF
REST APIs with Spring
PDF
Gradle Introduction
PDF
Contract-driven development with OpenAPI 3 and Vert.x | DevNation Tech Talk
PDF
Android Libs - Retrofit
PDF
Retrofit
PDF
Java(ee) mongo db applications in the cloud
PDF
Gradle - time for a new build
PDF
Managing user's data with Spring Session
PDF
Gradle - the Enterprise Automation Tool
PDF
手把手教你如何串接 Log 到各種網路服務
PPTX
Spring Boot and REST API
PPTX
Spring boot Introduction
PDF
BOSH / CF Deployment in modern ways #cf_tokyo
PDF
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
PDF
Java EE 6 CDI Integrates with Spring & JSF
PDF
Test Driven Documentation with Spring Rest Docs JEEConf2017
PDF
Building domain-specific testing tools : lessons learned from the Apache Slin...
PDF
Hands on the Gradle
PDF
Cool Jvm Tools to Help you Test - Aylesbury Testers Version
REST APIs with Spring
Gradle Introduction
Contract-driven development with OpenAPI 3 and Vert.x | DevNation Tech Talk
Android Libs - Retrofit
Retrofit
Java(ee) mongo db applications in the cloud
Gradle - time for a new build
Managing user's data with Spring Session
Gradle - the Enterprise Automation Tool
手把手教你如何串接 Log 到各種網路服務
Spring Boot and REST API
Spring boot Introduction
BOSH / CF Deployment in modern ways #cf_tokyo
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
Java EE 6 CDI Integrates with Spring & JSF
Test Driven Documentation with Spring Rest Docs JEEConf2017
Building domain-specific testing tools : lessons learned from the Apache Slin...
Hands on the Gradle
Cool Jvm Tools to Help you Test - Aylesbury Testers Version
Ad

Viewers also liked (10)

PPTX
Scientix 10th SPNE Brussels 26 Feb 2016: Web VLs
ODP
JavaFX in Action Part I
PPTX
Back to the Heart of it All
PDF
Présentation OuiShare - Conseil des Générations Futures
PPT
Los retos de los hospitales del futuro - Jordi Varela
PDF
2016 Digital CPA Update
PPTX
Las Comisiones Calificadoras,CCDA
PPTX
Get to Inbox Zero
PDF
Rapport fjj rn
PPTX
How to Create a Growth Framework
Scientix 10th SPNE Brussels 26 Feb 2016: Web VLs
JavaFX in Action Part I
Back to the Heart of it All
Présentation OuiShare - Conseil des Générations Futures
Los retos de los hospitales del futuro - Jordi Varela
2016 Digital CPA Update
Las Comisiones Calificadoras,CCDA
Get to Inbox Zero
Rapport fjj rn
How to Create a Growth Framework
Ad

Similar to The JavaFX Ecosystem (20)

PDF
vJUG - The JavaFX Ecosystem
PDF
The JavaFX Ecosystem
PDF
The JavaFX Ecosystem
PDF
The JavaFX Ecosystem
PDF
The JavaFX Ecosystem
KEY
Remixing Confluence with Speakeasy - AtlasCamp 2011
PDF
Primefaces Nextgen Lju
PDF
Primefaces Nextgen Lju
PDF
RichFaces: rich:* component library
PDF
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
PDF
Rich Portlet Development in uPortal
KEY
Remixing Confluence With Speakeasy
PDF
JSF 2.0 Preview
PDF
Webpack Encore Symfony Live 2017 San Francisco
PPTX
Vert.x - Reactive & Distributed [Devoxx version]
PDF
Create, test, secure, repeat
PDF
HTML5, The Open Web, and what it means for you - MDN Hack Day, Sao Paulo
PDF
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
PDF
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
PDF
Xitrum @ Scala Matsuri Tokyo 2014
vJUG - The JavaFX Ecosystem
The JavaFX Ecosystem
The JavaFX Ecosystem
The JavaFX Ecosystem
The JavaFX Ecosystem
Remixing Confluence with Speakeasy - AtlasCamp 2011
Primefaces Nextgen Lju
Primefaces Nextgen Lju
RichFaces: rich:* component library
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Rich Portlet Development in uPortal
Remixing Confluence With Speakeasy
JSF 2.0 Preview
Webpack Encore Symfony Live 2017 San Francisco
Vert.x - Reactive & Distributed [Devoxx version]
Create, test, secure, repeat
HTML5, The Open Web, and what it means for you - MDN Hack Day, Sao Paulo
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum @ Scala Matsuri Tokyo 2014

More from Andres Almiray (20)

PDF
Dealing with JSON in the relational world
PDF
Deploying to production with confidence 🚀
PDF
Going beyond ORMs with JSON Relational Duality Views
PDF
Setting up data driven tests with Java tools
PDF
Creando, creciendo, y manteniendo una comunidad de codigo abierto
PDF
Liberando a produccion con confianza
PDF
Liberando a produccion con confidencia
PDF
OracleDB Ecosystem for Java Developers
PDF
Softcon.ph - Maven Puzzlers
PDF
Maven Puzzlers
PDF
Oracle Database Ecosystem for Java Developers
PDF
JReleaser - Releasing at the speed of light
PDF
Building modular applications with the Java Platform Module System and Layrry
PDF
Going Reactive with g rpc
PDF
Building modular applications with JPMS and Layrry
PDF
Taking Micronaut out for a spin
PDF
Apache Groovy's Metaprogramming Options and You
PDF
What I wish I knew about Maven years ago
PDF
What I wish I knew about maven years ago
PDF
The impact of sci fi in tech
Dealing with JSON in the relational world
Deploying to production with confidence 🚀
Going beyond ORMs with JSON Relational Duality Views
Setting up data driven tests with Java tools
Creando, creciendo, y manteniendo una comunidad de codigo abierto
Liberando a produccion con confianza
Liberando a produccion con confidencia
OracleDB Ecosystem for Java Developers
Softcon.ph - Maven Puzzlers
Maven Puzzlers
Oracle Database Ecosystem for Java Developers
JReleaser - Releasing at the speed of light
Building modular applications with the Java Platform Module System and Layrry
Going Reactive with g rpc
Building modular applications with JPMS and Layrry
Taking Micronaut out for a spin
Apache Groovy's Metaprogramming Options and You
What I wish I knew about Maven years ago
What I wish I knew about maven years ago
The impact of sci fi in tech

Recently uploaded (20)

PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PDF
Getting started with AI Agents and Multi-Agent Systems
PPTX
Modernising the Digital Integration Hub
DOCX
search engine optimization ppt fir known well about this
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PDF
Hybrid model detection and classification of lung cancer
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PDF
A novel scalable deep ensemble learning framework for big data classification...
PPTX
Web Crawler for Trend Tracking Gen Z Insights.pptx
PDF
DP Operators-handbook-extract for the Mautical Institute
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PDF
Enhancing emotion recognition model for a student engagement use case through...
PPT
Module 1.ppt Iot fundamentals and Architecture
PPTX
The various Industrial Revolutions .pptx
PDF
Getting Started with Data Integration: FME Form 101
PDF
August Patch Tuesday
PDF
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
Getting started with AI Agents and Multi-Agent Systems
Modernising the Digital Integration Hub
search engine optimization ppt fir known well about this
A contest of sentiment analysis: k-nearest neighbor versus neural network
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
Hybrid model detection and classification of lung cancer
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
A novel scalable deep ensemble learning framework for big data classification...
Web Crawler for Trend Tracking Gen Z Insights.pptx
DP Operators-handbook-extract for the Mautical Institute
A comparative study of natural language inference in Swahili using monolingua...
NewMind AI Weekly Chronicles – August ’25 Week III
Enhancing emotion recognition model for a student engagement use case through...
Module 1.ppt Iot fundamentals and Architecture
The various Industrial Revolutions .pptx
Getting Started with Data Integration: FME Form 101
August Patch Tuesday
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
From MVP to Full-Scale Product A Startup’s Software Journey.pdf

The JavaFX Ecosystem