Pages

jeudi 8 novembre 2012

Nighthacking au Lyon Jug sur JavaFX avec Stephen Chin

L’initiative de Stephen Chin est quelque peu originale. Fan de moto et de technologie Java il a décidé de faire un petit tour d’Europe qui va le mener à Anvers pour Devoxx 2012. En chemin il a décidé de visiter plusieurs Java Users Groups pour des séances de hacking sur Java Fx et de rencontrer des acteurs de l’informatique pour les interviewer. 


Pour la petite histoire, Stephen Chin est évangéliste sur les technologies Java pour le compte d’Oracle. Il a participé à l’écriture de plusieurs bouquins sur Java Fx. Ces compétences et ces multiples interventions au sein de différents jugs lui ont valu d’être nommé Java Champion en 2009.

Stephen était donc sur Lyon le mercredi 7 novembre pour nous présenter Java Fx tout en codant. La vidéo de cette conférence est mise à disposition sur le site http://steveonjava.com/.


Qu'est ce que Java FX ?
Java FX pour ceux qui ne connaîtrait pas, permet de créer des applications clients riches sur toutes les plateformes acceptant une JVM version 7 (Windows, Apple, Linux…). La première version de Java Fx a été un échec auprès de la communauté de développeurs car elle demandait d’apprendre une nouvelle syntaxe (FX script). La version 2 est plus prometteuse et se base sur des éléments qui ont fait leurs preuves (Java, XML, un GUI Builder efficace...). Certains diront que JavaFX  arrive trop tard, qu’il existe tout un tas d’autres solutions plus faciles à mettre en place….

Personnellement je ne pense pas que toutes les applications soient faites pour avoir des interfaces web. Les alternatives pour créer des applications client riche en Java sont aujourd'hui autour des technologies Swing ou Swt. Mais ces technos passent pour désuette au côté de Java Fx quand on voit les fonctionnalités permettant de mettre rapidement des animations 2D et 3D tout en restant très fluide.

Un premier exemple
Un petit exemple pour vous convaincre. Java Fx peut être utilisé sous les principaux IDE (IntelliJ, Eclipse et Netbeans). Par contre seul Netbeans propose pour l’instant une bonne intégration de Scene Builder (GUI Builder facilitant la création des écrans). Pour les autres IDE vos pourrez aussi utiliser Scene Builder mais il ne sera pas ouvert dans Eclipse

Commencer par télécharger et installer le JDK et Scene Builder et éventuellement Netbeans.

Nous allons reprendre l’exemple que Stephen nous a fait en ligne. Dans NetBeans utilisez l’assistant pour créer un nouveau projet JavaFx


Netbeans va vous générer 3 classes

LyonJUG.java héritant de javafx.application.Application qui sera le launcher de notre première application

public class LyonJUG extends Application {
     @Override
     public void start(Stage stage) throws Exception {

        Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));
        Scene scene = new Scene(root);
        stage.setScene(scene);         stage.show();     }
} 

Un fichier Sample.fxml fixhier XML décrivant l’interface Java FX

<?xml version="1.0" encoding="UTF-8"?> 
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<AnchorPane id="AnchorPane" prefHeight="200.0" prefWidth="320.0" xmlns:fx="http://javafx.com/fxml" fx:controller="lyonjug.SampleController">

<children>
    <Label fx:id="label" layoutX="126.0" layoutY="120.0" minHeight="16.0" minWidth="69.0" />
    <Button fx:id="button" layoutX="126.0" layoutY="121.0" onAction="#handleButtonAction" text="Click Me!" />
</children>

</AnchorPane> 

Un fichier SampleController.java associé au fichier de description de l’interface précédente et permettant de gérer les interactions de l’utilisateur avec la vue.

public class SampleController implements Initializable { 
    @FXML
    private Label label;

    @FXML 
    private void handleButtonAction(ActionEvent event) {
        //TODO 
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO 
    }
}

Lancez l’application via la commande Run dans le menu accessible via un clic droit sur le projet dans Netbeans

Dans son exemple Stephen a récupéré l’image du Lyon Jug pour faire une animation quand l’utilisateur clique sur le bouton. Et le tout en trois lignes de code

RotateTransitionBuilder.create() 
        .byAngle(360 * 5) 
        .duration(Duration.seconds(5)) 
        .node(logo) 
        .build().play(); 


Les sources sont disponibles sous https://github.com/steveonjava/LyonJUG

Il nous a ensuite montré un projet montrant l’intégration de JavaFx avec Spring ==>  https://github.com/steveonjava/JavaFX-Spring

Pour vous donner un aperçu des fonctionnalités qu’il est possible d’implémenter je vous conseille fortement d’aller sur http://www.oracle.com/technetwork/java/javafx/samples/index.html et de télécharger l’application Ensemble. Cette application vous permet de voir une multitude d'exemples avec le code source associé 



5 commentaires:

  1. Super retour, Guillaume. Je verrais bien un Lightning Talk, sur le sujet, pour le lyonnais qui ne sont pas venu au NightHacking.

    Sinon, on peut aussi trouver la vidéo sur http://www.youtube.com/watch?v=1GQ2WnvWdUs.

    RépondreSupprimer
  2. Sur le Lightning Talk, Cédric m'avait demandé d'en faire un sur Android pour le 20. Sur le principe il n'y a pas de souci sauf que je ne peux pas être là au prochain Jug

    RépondreSupprimer
  3. effectivement super article!!! Merci Guillaume

    RépondreSupprimer
  4. Pour une retransmision à chaud, c'est vrai que c'est pas mal...
    Comme le dit Agnès, merci Guillaume.

    RépondreSupprimer
  5. Merci pour cette excellente présentation de Java FX. Pour moi, j’ai trouvé très intéressant la formation sur http://www.alphorm.com/tutoriel/formation-en-ligne-javafx pour maîtriser Java FX. Ça en valait le coup d’essayer.

    RépondreSupprimer

Remarque : Seul un membre de ce blog est autorisé à enregistrer un commentaire.