Tags:
create new tag
, view all tags

JavaFX

Introduction

JavaFX est une famille de produits de Sun Microsystems, produits qui ont pour but de créer des applications internet riches. Actuellement, JavaFX est constitué de JavaFX Script et de JavaFX Mobile, d'autres produits sont également prévus. JavaFX Script est un langage de script déclaratif basé sur la plateforme Java et permettant de faciliter le développement d'interface graphique, tandis que JavaFX Mobile est une plateforme mobile permettant l'exécution de code Java sur des téléphones portables, des PDA, et autres appareils mobiles.

Pour le moment sous licence, JavaFX Script devrait devenir OpenSource (GNU Public License v2). Sa syntaxe est relativement différente de celle de Java, mais elle permet une interaction forte avec les classes Java, et beaucoup de classes de JavaFX implémentent les fonctionnalités Swing et Java2D, facilitant leur utilisation. De plus, du code JavaFX peut embarquer du code Java ou HTML.

Un nouvel outil, JavaFX Designer, devrait voir le jour. Il permettrait de disposer d'un outil de conception visuel pour JavaFX, et donc orienté pour les graphistes.


Compatibilités

Le code JavaFX Script s'exécute dans une JVM et nécessite l'installation du JRE 6. Le JRE est multi-plateforme : disponible sous Windows, Linux, MacOS X, Solaris, et compatible avec la plupart des navigateurs (IE, Firefox, Opera, Netscape, Safari). Selon une étude commandée par Adobe, Java serait installé sur plus de 84% des postes connectés à Internet.

Pour déployer une application JavaFX dans un navigateur, il existe deux solutions (cf le paragraphe « Principe de fonctionnement » de cette documentation), dont l'une d'entre elle nécessite de disposer du tout dernier JRE (encore en version beta) : le JRE 1.6.0.10 disponible sous Windows, Linux, et Solaris et du navigateur Firefox 3 (sous Linux et Windows XP/Vista), ou IE 7 (Windows XP/Vista).


Outils de développement

Pour développer des applications en JavaFX, il faut avant tout posséder le J2SE JDK (Java SE Development Kit) version 5 ou supérieure qui contient les outils pour compiler, déboguer, et lancer des applications Java. Il faut ensuite le compilateur JavaFX : le OpenJFX Compiler (gratuit sous licence GPL), qui permet de compiler les applications JavaFX en bytecode, c'est-à-dire en classes Java. Ensuite, un simple éditeur de texte suffit pour écrire du code, mais il existe plusieurs outils visant à améliorer les développements en JavaFX :

  • les plugins : pour les IDE Eclipse et NetBeans (disponibles multi-plateformes), permettent de profiter de la puissance d'une plateforme de développement notamment avec l'auto-complétion du code, coloration syntaxique, gestion et organisation des fichiers, etc. (Il n'est pas possible de créer de projet JavaFX, il faut créer un projet java standard puis y ajouter des fichiers FX).

  • JavaFXPad : un éditeur très complet (réalisé en Java et donc multi-plateformes), qui permet d'écrire du code JavaFX avec auto-complétion et coloration syntaxique du code, mais surtout qui dispose d'une fonctionnalité qui permet de visionner en temps réel le rendu graphique de l'application.


Principe de fonctionnement

JavaFX Script permet de définir une application en utilisant une syntaxe propre qui exploite des classes Java. Les fichiers .FX doivent ensuite être compilés en bytecode Java pour pouvoir être interprétés par une JVM. Les applications JavaFX ne sont donc pas principalement des applications Web au sens où elles ne s'exécutent pas dans un navigateur, et il n'y a, à l'heure actuelle, qu'un seul moyen de le faire : considérer l'application JavaFX en tant que applet. Finalement, mise à part une syntaxe plus simple et des composants graphique plus riche, développer en JavaFX Script pour le web revient à développer un applet en Java. Il existe alors trois méthodes de déploiement : ces deux premières méthodes fonctionnent avec un JRE 6 et les plugins Java officiels (1.6.0.6) :

  • approche « Java-like » : modifier le code JavaFX déjà écrit en implémentant un comportement d'applet (définir des méthodes start et stop dans une classe étendant la classe java Applet) et supprimer les objets Frame (c'est l'applet lui-même qui devient la frame de l'application). Une page HTML permet alors d'effectuer l'appel à l'applet.

  • approche « JavaFX-like » : modifier le code JavaFX Script en utilisant l'objet Applet de JavaFX.ui.Applet. Dans ce cas, il suffit de remanier le code de manière à « inclure » la totalité du code dans un objet Applet tout en supprimant toute référence à l'objet Frame. Il faut ensuite compiler le code JavaFX Script puis créer une archive JAR contenant tous les fichiers .class et la signer numériquement. Cette méthode nécessite de faire appel à deux archives JAR : JavaFXrt.jar et Scenario.jar, fourni avec le OpenJFX Compiler. Enfin, il faut créer un fichier HTML qui s'occupe de faire l'appel à toutes les archives JAR concernées et qui précise qu'il s'agit d'un objet de type JavaFX.ui.Applet.

Il existe une troisième méthode, encore en cours de développement, qui permettrait de ne plus à avoir à modifier son code JavaFX Script, ce qui lui permettrait d'être exécutable aussi bien dans un système d'exploitation que dans un navigateur web. Cette méthode nécessite l'installation du JRE 6 Update 10 (en version beta) qui permet l'installation du plugin Java 1.6.0.10, uniquement compatible Firefox 3 et IE7. Le principe est de créer une classe étendant FXApplet (elle-même étendant JApplet), qui contiendrait un élément (par exemple Canvas) dont le contenu serait le code JavaFX Script (qui peut alors lui-même contenir des objets de type Frame). Il suffirait alors de compiler les classes et de créer une archives JAR. Le déploiement se ferait par un fichier JNLP1 qui référencerait les archives JAR nécessaires (celle que l'on crée ainsi que JavaFXrt.jar et Scenario.jar). Les paramètres de ce fichier JNLP permettraient à la JVM d'exécuter le contenu en tant que applet dans un navigateur et non de télécharger l'application en tant qu'exécutable pour système d'exploitation.

A terme, Sun voudrait une totale interaction entre une application qui s'exécute dans un navigateur web, et une application qui s'exécute sur un système, en permettant par exemple à une application qui s'affiche dans un navigateur de devenir une application de bureau par simple glisser-déposer de celle-ci, et inversement.

1JNLP : fichier utilisé par le Java Web Start, est un fichier qui repose sur une syntaxe XML et qui permet le déploiement d'application Java via Internet sur un poste client de manière simplifiée avec mises à jour transparentes pour l'utilisateur.


Ses avantages

  • Utilisation d'une syntaxe simplifiée (par rapport à Java)
  • Puissance de Java
  • S'appuie sur des toolkits existants (stabilité)
  • Multi-plateformes (téléphones, ...)
  • Multi-navigateurs
  • Mode de déploiement sans installation via JWS
  • Devrait devenir OpenSource
  • Exécution du code dans un SandBox
  • Possibilité de convertir des fichiers SVG en classes JavaFX Script
  • Disponibilité de Java sur plus de 84% du parc informatique
  • Expérience de Sun pour les technologies applets
  • Implémentation des protocoles RMI et JAX-WS


Ses inconvénients

  • JRE imposant (16 Mo)
  • Projet récent et toujours en cours de développement
  • Dois faire face à la concurrence : AJAX, Silverlight, Flash/Flex
  • Technologie d'applet déjà derrière ses concurrents
  • Orientation plus multi-plateforme que RIA


Exemples


Liens utiles


Sources

  • http://fr.wikipedia.org/wiki/JavaFX_Script
  • http://java.sun.com/developer/technicalArticles/scripting/JavaFX/ria_1/#1
  • http://www.onjava.com/pub/a/onjava/2007/07/27/introduction-to-JavaFX-script.html
  • http://www.ibm.com/developerworks/java/library/j-JavaFX/
  • http://www.slideshare.net/Studientin/java-fx-210561/
  • http://www.technos-sources.com/tutorial-configuration-deploiement-application-java-via-jnlp-11.aspx
  • http://wiki.objetdirect.com/wiki/index.php?title=JavaFX
  • http://learnJavaFX.typepad.com/weblog/JavaFX_script/
  • http://blogs.sun.com/chrisoliver/category/JavaFX


Topic revision: r1 - 2008-04-17 - CedricCapoulun
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback