Affichage des articles dont le libellé est RIA. Afficher tous les articles
Affichage des articles dont le libellé est RIA. Afficher tous les articles

dimanche 17 mai 2009

Un échiquier en JavaFX

Dans ce billet, un petit programme en JavaFX qui dessine en un échiquier. Ce petit programme était l'occasion de s'essayer à utiliser un CustomNode (qui ici correspondra à l'échiquier). Et quand il y a quelques années j'enseignais la programmation en Java, le dessin d'un échiquier était un des premiers TP que je donnais aux étudiants quand nous abordions AWT/Swing, parce que c'est simple à mettre en oeuvre.

Ci-après la copie d'écran du programme :



Ce programme est composé de 2 fichiers : ChessBoardNode.fx qui contient la classe ChessBoardNode qui étend la classe CustomNode et Main.fx qui contient notre Stage et utilise le ChessBoardNode.

Tout d'abord ChessBoardNode.fx :

Tout ceci est assez simple, mais revenons sur quelques points :
- La classe CustomNode est une classe abstraite et il faut redéfinir la fonction "create" ; attention en JavaFX quand on redéfinit il faut utiliser le mot clé override.
Cette fonction create est un peu comme la méthode paint pour les composants graphiques en Java/Swing : en la redéfinissant on indique comment le composant doit être "peint". Cette méthode doit retourner un objet de type Node. Ici on créé plusieurs Rectangle (en fonction du nombre de lignes et du nombre de cases par ligne, valeurs définies dans les attributs) pour lesquels on alterne les couleurs parmi 2 et qui forment un Group, sous-classe de Node.

On remarquera qu'un certain nombre d'attributs ont été définis pour rendre l'échiquier plus facilement paramétrable.

Autre point, on notera ici l'utilisation du for et du if : il faut rappeler qu'en JavaFX, ce sont des expressions et qu'ils retournent un résultat.
A part cela, ce code ne pose pas de difficultés particulières.

Maintenant utilisons cette classe dans Main.fx :

On utilise directement un objet ChessBoardNode, en renseignant certains de ces attributs. On notera que l'abscisse et l'ordonnée de l'échiquier ne sont pas renseignées, pas plus d'ailleurs que la largeur ou la hauteur de la Scene ou du Stage : c'est JavaFX qui détermine tout cela en prenant les valeurs au plus juste.

Initialement, je voulais proposer une suite à ce billet sur JavaFX, en repartant de cet exemple et en l'améliorant un peu par la mise en oeuvre du "binding" de JavaFX pour obtenir simplement des petits effets sympathiques. Cependant je trouve que le format "billet de blog" n'est pas toujours idéal pour faire un texte comportant du code.

Entretemps j'ai donc créé un petit site sur Google Sites, dans lequel je reprends et complète ce billet.

samedi 2 mai 2009

Introduction à JavaFX (3)

Désolé, en ce moment je m'intéresse à JavaFX et après une longue période d'inactivité sur ce blog qui faisait elle-même suite à une période d'activité très modérée, je publie coup sur coup plusieurs vidéos de Sun sur JavaFX... Je trouve que cette technologie est vraiment devenue intéressante et qu'elle mérite qu'on y jette un oeil, voire plus si affinité. Sun a quand même mi presque 2 ans à proposer quelque chose qui tienne la route face à Flex ou à Silverlight mais là la technologie commence à être mature et utilisable. L'intérêt est quand même de rester sur une plateforme Java.

Cette vidéo n'est pas vraiment une introduction. C'est plutôt une vidéo de présentation du concept de "Scene Graph", élément essentiel de JavaFX. La vidéo est courte et complète bien les 2 vidéos d'introduction de Sun publiées dans mes 2 derniers billets sur JavaFX.



La présentation dure environ 6 minutes, dont seule les 5 premières minutes ont réellement un intérêt pédagogique (c'est de bonne guerre, la fin de la présentation donne des informations sur le site www.javafx.com, et comment retrouver les informations et exemples dont il est question dans la présentation).

Cette courte vidéo présente les classes et concepts fondamentaux pour réaliser des applications graphiques avec JavaFX (ce qui est il faut bien l'avouer la raison pour laquelle en général on se penche sur JavaFX :-P).

La classe Stage représente le conteneur de haut-niveau (top-level container) qui correspond à une fenêtre classique par défaut mais peut être transparente ou sans la bordure et les autres "décorations" associées.

Un objet Stage contient un attribut scene de classe Scene. La classe Scene correspond à une surface de dessin pour y placer le contenu graphique. Un objet Scene a un attribut content qui est une séquence d'élément dans le Graph Scene (La traduction en graphe de la scène ne me plait guère est à défaut d'une qui me satisfasse, je préfère utiliser le terme anglais).

Le Graph Scene est un concept important de JavaFX : le contenu graphique est considéré comme un graphe d'éléments. Attention, il s'agit bien d'un graphe et non d'un arbre, il n'y a donc pas d'élément racine. C'est pour cela que l'on a une séquence d'éléments, pouvant eux-mêmes être constitués de séquence d'éléments.

Ces éléments graphiques peuvent être des classes Node, Group ou CustomNode.
Un Node est une feuille du graphe, c'est-à-dire qu'il ne peut pas avoir de noeud graphique fils. Par contre, tout comme les 2 autres classes, un objet Node peut avoir 0 ou 1 parent.
Les formes (Shape) et les éléments d'interface venant de Swing (slider, label, etc.) sont par exemple des Node.

Un Group est un regroupement de plusieurs Node, Group ou CustomNode. Un Group peut ainsi permettre de créer des formes complexes en regroupant plusieurs formes. De plus un objet Group permet d'appliquer un même effet à tous les élément du groupe en question. Ainsi un objet Group permet de manipuler un ensemble d'éléments graphiques comme un élément unique.

Enfin, la classe CustomNode est une classe abstraite que l'on sous-classe et dont on redéfinit (utilisation du mot clé override) la fonction create() qui définit le contenu de cet élément.

vendredi 1 mai 2009

Introduction à JavaFX (2)

Voici une vidéo d'introduction à JavaFX qui fait suite à celle que j'ai posté dans mon billet précédent sur ce sujet.

Toujours en une quinzaine de minutes, cette vidéo présente des fondamentaux de JavaFX, en ce concentrant cette fois-ci sur les éléments de base pour produire des graphiques avec JavaFX alors que la première vidéo de cette série se focalisait sur les fondamentaux du langage.

Sans remplacer les tutoriaux, ces vidéos donnent une vision synthétique et rapide des différents aspects et peuvent ainsi servir de mise en jambe ou d'aide-mémoire.



Si vous souhaitez avoir une meilleure qualité de vidéo, je vous invite à la récupérer via Miro, une petite recherche sur "JavaFX" devrait vous permettre de les trouver facilement.

dimanche 26 avril 2009

Introduction à JavaFX (1)

Voici une présentation des bases de JavaFX par Robert Eckstein de Sun.
La présentation est bien faite et en 15 minutes donne tous les éléments de base nécessaire à un développeur Java pour se faire une idée sur ce nouveau langage.



Je m'étais intéressé à JavaFX en 2007. Je n'avais pas été convaincu à l'époque par la le langage et la plateforme qui - il est vrai - venait de sortir et manquait probablement de maturité.

Récemment (on va dire que cela fait un petit mois), j'ai ré-essayé et je suis par contre cette fois séduit. De gros progrès ont été réalisés, avec Netbeans vous avez maintenant un vrai IDE pour travailler avec JavaFX (il existe également un plugin Eclipse mais je ne l'ai pas essayé). Cette fois-ci je pense que cette plateforme "RIA" devient crédible par rapport à la concurrence. Bien sûr qu'elle s'impose c'est une autre histoire mais elle a des atouts indéniables. Reste à voir également comment le rachat de Sun par Oracle fera évoluer la stratégie par rapport à cette plateforme.

Le site officiel de JavaFX, point de passage obligé, est http://www.javafx.com/.

mercredi 27 février 2008

Une nouvelle ère pour Adobe

Adobe vient de sortir la version 1.0 de AIR : avec ce nouvel environnement il est notamment possible de lancer des applications web riches ("Rich Internet Applications" ce qui donne l'acronyme RIA) directement sur le bureau de l'ordinateur et en mode "déconnecté" , i.e. qu'il n' y a plus besoin d'être connecté en permanence à Internet.

AIR repose sur un ensemble de technologies et d'outils : bien sûr Flash, Flex et les technologies liées à AJAX (Javascript, XML, JSON, CSS, etc.) mais également sur la base de données open source SQLite pour la stockage et la synchronisation les données avant et après les déconnexions.

La bataille du RIA s'annonce disputée : il y a les technologies concurrentes de Google (Google Gears), de Mozilla (PRISM) et bien sûr l'omniprésent Microsoft (Silverlight).
Dans une moindre mesure on peut dire que dans la concurrence il y a Sun avec JavaFX et Java mais certains estiment déjà que ce n'est plus un challenger crédible sur le créneau du RIA (voir l'article "Swing is drowning" de Dion Almaer).

dimanche 2 septembre 2007

My client is Rich !

Le blog de Fabien Deshayes traite des RIA et autres clients riches. Il est intéressant et son contenu est à l'image de la thématique dont il traite, riche !
L'adresse http://www.fdeshayes.net/ .

lundi 16 juillet 2007

JavaOne 2007 et JavaFX

Salut !

Si, tout comme moi, vous n'avez pas eu la chance de pouvoir aller à la JavaOne 2007, vous pouvez toujours vous rabattre sur les WebCasts mis à disposition par Sun : vous pouvez accéder à plusieurs sessions directement en ligne ou les télécharger pour consultation ultérieure (juste la version "audio" ou la version vidéo complète).

L'adresse est http://java.sun.com/javaone/sf/sessions/general/index.jsp .

Les sujets sont divers, concernent bien sûr l'univers Java. Il est notamment question de JavaFX (la présentation de la Java One est accessible directement ici) autour duquel il y a pas mal de Buzz en ce moment . Cela semble en partie dû au fait que JavaFX semble être la réponse de Sun à Silverlight de Microsoft et à Flex d'Adobe (récemment "libéré"). De plus, la bataille du RIA (Rich Internet Application) semble également se déplacer sur les terminaux mobiles sur lesquels JavaFX devrait pouvoir tourner (cf. JavaFX Mobile).

Chris Oliver est à l'origine de JavaFX, né sous le nom F3. Une communauté de Sun pour l'implémentation open-source des technologies JavaFX, OpenJFX, a été créée : https://openjfx.dev.java.net/. Sur la version française du site de Sun on trouve cette petite présentation.

JavaFX est une technologie récente et on trouve peu de tutoriels en dehors de ceux sur le site de Chris Oliver, sur le site OpenJFX et sur le Wiki PlanetJFX. Au moment où j'écris ce billet ce tutoriel (également en anglais) est une rare exception. Il y a cependant fort à parier qu'il y aura bientôt pléthore en la matière.

J'ai juste jeté un oeil sur JavaFX. En fait JavaFX est une famille de technologies liées dont l'un des objectifs me semble être de proposer un langage déclaratif (JavaFX Script) pour la programmation graphique et d'interface, plus facile à mettre en oeuvre que de la programmation directe en Java via Swing et Java 2D. Cela devrait augmenter la productivité des professionnels de la programmation et rendre les choses plus accessibles au "non-programmeur". Comme d'habitude avec les langages de haut niveau, l'objectif est de permettre de se concentrer sur le fond sans se prendre trop la tête avec les aspects techniques. Cela reste quand même un langage de programmation, un de plus pour la JVM (vous avez une liste encore plus complète sur ce site des langages pour la JVM). Et bien sûr il propose également une ouverture vers le monde des mobiles via JavaFX Mobile.

Une affaire à suivre dans tous les cas.
Have a nice day !