Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Rédacteur/Modérateur

    Conseils d'optimisation pour JavaFX Mobile (& Desktop aussi)
    L'article suivant qui contient des conseils sur les optimisation des applications JavaFX Mobile a ete poste chez Sun :http://java.sun.com/developer/techni...ile/index.html
    Ces optimisations sont bien sur egalement applicables sur JavaFX Desktop.

    • Eviter le binding quand cela n'est pas necessaire. Lui preferrer les trigger replace si possible. Et surtout eviter de binder a tout va ce qui peut etre replacer par des constantes (ex: si la resolution du telephone ne change pas, et si votre peripherique ne supporte pas la rotation d'ecran, pas la peine de faire des binding sur le changement de taille de la scene).
    • Ne surchargez pas le graphe de la scene avec des noeud inutilement invisibles.

      Attention cependant cote Desktop il existe des bugs dans SceneGraph nottament lorsqu'on utilise des composants Swing qui font que parfois les ajouter de maniere invisible est l'unique maniere de faire.
    • Utiliser des formes simples a la place d'images mais si les formes deviennent trop compliquees (effets + transformations), utiliser une image a la place.
    • Utiliser le prescaling (remise a l'echelle precalculee) en ecrivant les valeurs width et height de l'objet Image. Cela evite une remise a l'echelle dynamique de l'objet ImageView.
    • Utiliser le chargement en fond en utilisant le champs Image.backgroundLoading pour forcer un chargement asynchrone et accelerer le chargement de l'application.
    • definir les variables en tant que def plutot que var.
    • Utiliser Integer plutot que Number quitte a specifier explicitement le type de certaines variables (si vous le speficiez pas JavaFX determinera peut-etre qu'elles sont de type Number).
    • Utiliser les fonctions de la classe Sequences plutot que d'implementer vos propres fonctions de manipulation de sequences.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  2. #2
    Membre averti
    Salut Bouye, as tu plus de précisions quand à l'utilisation de def plutôt que var. Il y a quelques temps, je m'étais amusé à changer les binaires du SDK par ceux des builds de l'openjfx compiler. Eh bien j'obtenais un avertissement sur tous les trucs du genre:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    var node: Node =  ...
    ...
    function doAnim(): Void {
    Timeline {
                    keyFrames : [
                        KeyFrame {
                            time : actionAnimSpeed/2*1s
                            action: function() { 
                                node.translateX = tx;
                                node.translateY = ty
                            }
                        }
                    ]
                }.playFromStart();
    ...

    il était stipulé qu'il fallait faire comme ça:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    var node: Node =  ...
    ...
    function doAnim(): Void {
    def _node = node;
    Timeline {
                    keyFrames : [
                        KeyFrame {
                            time : actionAnimSpeed/2*1s
                            action: function() { 
                                _node.translateX = tx;
                                _node.translateY = ty
                            }
                        }
                    ]
                }.playFromStart();
    ...

    Si bien que j'ai réécris pas mal de choses dans ce goût là pour anticiper la montée de version, j'espère que je ne me suis pas trompé.

  3. #3
    Rédacteur/Modérateur

    N'utilisant pas l'openjfx je ne peut pas trop te dire. On en saura probablement plus avec les release notes de la prochaine version.

    Moi ce qui m'amuse toujours (enfin amuser n'est pas trop le bon mot) c'est des trucs du genre :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var bidule = bind ....
     
    [...]
     
    Chose {
       machin: bind bidule...
    }


    Comme NetBeans se plaint et indique que si je bind sur bidule declare en var, il n'y aura pas de notification, je suis oblige de faire ca :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def bidule = bind ....
     
    [...]
     
    Chose {
       machin: bind bidule...
    }


    sachant que le didacticiel de JavaFX insiste sur le fait que def ce sont des constantes... bref.. un probleme similaire (mais pas tout a fait identique) a final en Java. le mot-cle est un parapluie pour plusieurs fonctionnalites pas trop compatibles entre elles a premiere vue (ou du moins ce n'est pas forcement evident pour le novice).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

###raw>template_hook.ano_emploi###