37
THE JAVAFX ECOSYSTEM ANDRES ALMIRAY @AALMIRAY

The JavaFX Ecosystem

Embed Size (px)

Citation preview

Page 1: The JavaFX Ecosystem

THE JAVAFX ECOSYSTEM

ANDRES ALMIRAY @AALMIRAY

Page 2: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

Page 3: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

Page 4: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

LAYOUT

Page 5: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

MigLayout - http://miglayout.com/ <?xml  version="1.0"  encoding="UTF-­‐8"?>    <?import  javafx.scene.control.*?>  <?import  org.tbee.javafx.scene.layout.fxml.MigPane?>    <MigLayoutPane  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"/>  </MigLayoutPane>  

Page 6: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

WIDGETS

Page 7: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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

Page 8: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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 9: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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

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

Page 10: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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

Page 11: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

LOOKS

Page 12: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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

Page 13: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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

Page 14: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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

Page 15: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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

Page 16: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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

Page 17: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

TESTING

Page 18: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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 19: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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 20: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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 21: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

FRAMEWORKS

Page 22: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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 23: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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

•  Maven support

•  Workbench and Perspective concepts borrowed from Eclipse

•  Messaging

•  Light-weight event bus •  View templates

Page 24: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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 25: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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

Page 26: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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 27: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

PLATFORMS

Page 28: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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

Eclipse RCP + JavaFX Views

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

NetBeans RCP + JavaFX Views

Page 29: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

LIBRARIES

Page 30: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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

Page 31: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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

Page 32: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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

Page 33: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

MISC

Page 34: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

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 35: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

AsciidocFX - http://asciidocfx.com/

Page 36: The JavaFX Ecosystem

@aalmiray #JavaOneBrazil @aalmiray #JavaOneBrazil

Page 37: The JavaFX Ecosystem

THANK YOU!

ANDRES ALMIRAY @AALMIRAY