The JavaFX Ecosystem

46
THE JAVAFX ECOSYSTEM ANDRES ALMIRAY IX-CHEL RUIZ @AALMIRAY @IXCHELRUIZ

Transcript of The JavaFX Ecosystem

Page 1: The JavaFX Ecosystem

THE JAVAFX ECOSYSTEM

ANDRES ALMIRAY IX-CHEL RUIZ @AALMIRAY @IXCHELRUIZ

Page 2: The JavaFX Ecosystem
Page 3: The JavaFX Ecosystem

DON’T FORGET TO VOTE!

Page 4: The JavaFX Ecosystem

DISCLAIMER

Page 5: The JavaFX Ecosystem

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.

Page 6: The JavaFX Ecosystem
Page 7: The JavaFX Ecosystem

LAYOUT

Page 8: The JavaFX Ecosystem

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>  

Page 9: The JavaFX Ecosystem

WIDGETS

Page 10: The JavaFX Ecosystem

Medusa - https://github.com/HanSolo/Medusa

Page 11: The JavaFX Ecosystem

JSilhouette - https://github.com/aalmiray/jsilhouette

Page 12: The JavaFX Ecosystem

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.

Page 13: The JavaFX Ecosystem

RichTextFX - https://github.com/TomasMikula/RichTextFX

https://github.com/JFormDesigner/markdown-writer-fx

Page 14: The JavaFX Ecosystem

JFXtras - http://jfxtras.org/

Page 15: The JavaFX Ecosystem

ControlsFX - http://fxexperience.com/controlsfx/

Page 16: The JavaFX Ecosystem

LOOKS

Page 17: The JavaFX Ecosystem

JFoenix - https://github.com/jfoenixadmin/JFoenix/

Page 18: The JavaFX Ecosystem

BootstrapFX - https://github.com/aalmiray/bootstrapfx/

Page 19: The JavaFX Ecosystem

FontawesomeFX - https://bitbucket.org/Jerady/fontawesomefx/

Page 20: The JavaFX Ecosystem

Ikonli - http://aalmiray.github.io/ikonli/

Page 21: The JavaFX Ecosystem

Undecorator - https://github.com/in-sideFX/UndecoratorBis

Page 22: The JavaFX Ecosystem

TESTING

Page 23: The JavaFX Ecosystem

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"));          }  }  

Page 24: The JavaFX Ecosystem

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));  

Page 25: The JavaFX Ecosystem

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));  

Page 26: The JavaFX Ecosystem

FRAMEWORKS

Page 27: The JavaFX Ecosystem

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

Page 28: The JavaFX Ecosystem

JacpFX - http://jacpfx.org/ •  Spring support

•  Maven support

•  Workbench and Perspective concepts borrowed from Eclipse

•  Messaging

•  Light-weight event bus •  View templates

Page 29: The JavaFX Ecosystem

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

Page 30: The JavaFX Ecosystem

MvvmFX - https://github.com/sialcasa/mvvmFX Provides necessary components to implement the MVVM pattern with JavaFX. Maven compatible.

Page 31: The JavaFX Ecosystem

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

Page 32: The JavaFX Ecosystem

PLATFORMS

Page 33: The JavaFX Ecosystem

e(fx)clipse - http://efxclipse.bestsolution.at/

Eclipse RCP + JavaFX Views

eFX - https://bitbucket.org/sreimers/efx

NetBeans RCP + JavaFX Views

Page 34: The JavaFX Ecosystem

LIBRARIES

Page 35: The JavaFX Ecosystem

AnchorFX - https://github.com/aalmiray/AnchorFX

Page 36: The JavaFX Ecosystem

VWorkflows - https://github.com/miho/VWorkflows

Page 37: The JavaFX Ecosystem

ReactFX - https://github.com/TomasMikula/ReactFX Flowless - https://github.com/TomasMikula/Flowless

UndoFX - https://github.com/TomasMikula/UndoFX

WellbehavedFX - https://github.com/TomasMikula/WellBehavedFX

Page 38: The JavaFX Ecosystem

RxJavaFX - https://github.com/ReactiveX/RxJavaFX

Page 39: The JavaFX Ecosystem

MISC

Page 40: The JavaFX Ecosystem

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'                  }          }  }  

Page 41: The JavaFX Ecosystem

AsciidocFX - http://asciidocfx.com/

Page 42: The JavaFX Ecosystem
Page 43: The JavaFX Ecosystem
Page 44: The JavaFX Ecosystem
Page 45: The JavaFX Ecosystem

DON’T FORGET TO VOTE!

Page 46: The JavaFX Ecosystem

THANK YOU!

ANDRES ALMIRAY IX-CHEL RUIZ @AALMIRAY @IXCHELRUIZ