Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

The JavaFX Ecosystem

402 views

Published on

The JavaFX Ecosystem - JavaOne 2016

Published in: Technology
  • Be the first to comment

  • Be the first to like this

The JavaFX Ecosystem

  1. 1. THE JAVAFX ECOSYSTEM ANDRES ALMIRAY IX-CHEL RUIZ @AALMIRAY @IXCHELRUIZ
  2. 2. DON’T FORGET TO VOTE!
  3. 3. DISCLAIMER
  4. 4. 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.
  5. 5. LAYOUT
  6. 6. 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>  
  7. 7. WIDGETS
  8. 8. Medusa - https://github.com/HanSolo/Medusa
  9. 9. JSilhouette - https://github.com/aalmiray/jsilhouette
  10. 10. 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.
  11. 11. RichTextFX - https://github.com/TomasMikula/RichTextFX https://github.com/JFormDesigner/markdown-writer-fx
  12. 12. JFXtras - http://jfxtras.org/
  13. 13. ControlsFX - http://fxexperience.com/controlsfx/
  14. 14. LOOKS
  15. 15. JFoenix - https://github.com/jfoenixadmin/JFoenix/
  16. 16. BootstrapFX - https://github.com/aalmiray/bootstrapfx/
  17. 17. FontawesomeFX - https://bitbucket.org/Jerady/fontawesomefx/
  18. 18. Ikonli - http://aalmiray.github.io/ikonli/
  19. 19. Undecorator - https://github.com/in-sideFX/UndecoratorBis
  20. 20. TESTING
  21. 21. 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"));          }   }  
  22. 22. 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));  
  23. 23. 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));  
  24. 24. FRAMEWORKS
  25. 25. 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
  26. 26. JacpFX - http://jacpfx.org/ •  Spring support •  Maven support •  Workbench and Perspective concepts borrowed from Eclipse •  Messaging •  Light-weight event bus •  View templates
  27. 27. 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
  28. 28. MvvmFX - https://github.com/sialcasa/mvvmFX Provides necessary components to implement the MVVM pattern with JavaFX. Maven compatible.
  29. 29. 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
  30. 30. PLATFORMS
  31. 31. e(fx)clipse - http://efxclipse.bestsolution.at/ Eclipse RCP + JavaFX Views eFX - https://bitbucket.org/sreimers/efx NetBeans RCP + JavaFX Views
  32. 32. LIBRARIES
  33. 33. AnchorFX - https://github.com/aalmiray/AnchorFX
  34. 34. VWorkflows - https://github.com/miho/VWorkflows
  35. 35. ReactFX - https://github.com/TomasMikula/ReactFX Flowless - https://github.com/TomasMikula/Flowless UndoFX - https://github.com/TomasMikula/UndoFX WellbehavedFX - https://github.com/TomasMikula/ WellBehavedFX
  36. 36. RxJavaFX - https://github.com/ReactiveX/RxJavaFX
  37. 37. MISC
  38. 38. 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'                  }          }   }  
  39. 39. AsciidocFX - http://asciidocfx.com/
  40. 40. DON’T FORGET TO VOTE!
  41. 41. THANK YOU! ANDRES ALMIRAY IX-CHEL RUIZ @AALMIRAY @IXCHELRUIZ

×