FAQ JavaFXConsultez toutes les FAQ

Nombre d'auteurs : 4, nombre de questions : 507, dernière mise à jour : 2 novembre 2016  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur le forum JavaFX de http://java.developpez.com ainsi que l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.

Sur ce, nous vous souhaitons une bonne lecture.


SommairePlateformes embarquées et mobilesiOS (6)
précédent sommaire suivant
 

Note : le support de JavaFX sur iOS est encore en phase préliminaire et expérimentale. Le code présenté ici peut ne pas fonctionner correctement ou demander à être modifié pour s'adapter aux dernières évolutions de RoboVM.

En fait, vous n'allez pas développer directement sur un périphérique tournant sur iOS : vous allez développer et compiler vos applications sur votre machine de bureau ou un portable. C'est aussi sur cette machine que vous effectuerez les premiers tests pour vérifier que votre application fonctionne.

Ensuite vous déploierez vos applications sur l’émulateur iOS disponible dans Xcode pour les tester et vérifier que nous n'avez pas besoin de les altérer pour mieux s'adapter aux contraintes du périphérique telles que son espace mémoire plus réduit, son CPU peu puissant ou sa surface d'affichage restreinte. Il faudra également faire attention aux différentes résolutions d’écran disponibles en fonction des périphériques ciblés.

Si vous utilisez des senseurs disponibles sur le périphérique tournant sur iOS, c'est également sur l’émulateur iOS que vous devez tester si votre programme peut y accéder correctement. Par contre, vous devrez inclure les bibliothèques nécessaires à la compilation sur votre machine de développement. De plus, RoboVM vous permet d’accéder à l'API Cocoa d'Apple depuis le code Java.

Mis à jour le 22 septembre 2014 bouye

Nous allons lister ici les prérequis pour développer pour iOS.

Côté machine de développement :

  • un Mac. En effet, le développement pour iOS repose actuellement sur des outils qui ne sont disponibles que dans Xcode, or Xcode n'est officiellement disponible que sur Mac OS. Le développement en JavaFX pur peut cependant être effectué sur n'importe quelle machine ou système d'exploitation supporté par JavaFX ;
  • la dernière version de Xcode ;
  • un IDE permettant de développer en Java ;
  • le JDK approprié pour votre machine de développement ;
  • Apache Maven ;
  • RoboVM, un compilateur Java → code natif pour processeurs ARM et x86 ; fournit également une interface vers Cocoa et Objective-C.


À l'heure actuelle, l'utilisation de la syntaxe Java8 et des lambda est encore en phase préliminaire d’intégration, il est donc conseillé d'utiliser la syntaxe Java7.

De plus, étant donné que notre but est de créer un programme JavaFX pur, nous n'utiliserons dans un premier temps que très peu l'interface Cocoa offerte par RoboVM.

Mis à jour le 22 septembre 2014 bouye

Pour créer une application JavaFX pour iOS, vous devez insérer dans votre projet une classe similaire à la classe suivante :

  • pour les anciennes versions de RoboVM :

Code Java : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package mypackage; 
  
import javafx.application.Application; 
import org.robovm.apple.coregraphics.*; 
import org.robovm.apple.foundation.*; 
import org.robovm.apple.uikit.*; 
  
public class JFXLauncher extends UIApplicationDelegateAdapter { 
  
    @Override 
    public boolean didFinishLaunching(UIApplication application, NSDictionary launchOptions) { 
        // Lancement de notre application JavaFX dans un thread séparé. 
        final Thread launchThread = new Thread() { 
            @Override 
            public void run() { 
                Application.launch(MyApplication.class); 
            } 
        }; 
        launchThread.setDaemon(true); 
        launchThread.start(); 
        return true; 
    } 
  
    public static void main(String[] args) throws Exception { 
        System.setProperty("glass.platform", "ios"); 
        System.setProperty("prism.text", "native"); 
        // 
        try (final NSAutoreleasePool pool = new NSAutoreleasePool()) { 
            UIApplication.main(args, null, JFXLauncher.class); 
        } 
    } 
}


  • pour les versions de RoboVM postérieures à la version 1.0.0-alpha-04 :

Code Java : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package mypackage; 
  
import javafx.application.Application; 
import org.robovm.apple.coregraphics.*; 
import org.robovm.apple.foundation.*; 
import org.robovm.apple.uikit.*; 
  
public class JFXLauncher extends UIApplicationDelegateAdapter { 
  
    @Override 
    public boolean didFinishLaunching(UIApplication application, UIApplicationLaunchOptions launchOptions) { 
        // Lancement de notre application JavaFX dans un thread séparé. 
        final Thread launchThread = new Thread() { 
            @Override 
            public void run() { 
                Application.launch(MyApplication.class); 
            } 
        }; 
        launchThread.setDaemon(true); 
        launchThread.start(); 
        return true; 
    } 
  
    public static void main(String[] args) throws Exception { 
        System.setProperty("glass.platform", "ios"); 
        System.setProperty("prism.text", "native"); 
        // 
        try (final NSAutoreleasePool pool = new NSAutoreleasePool()) { 
            UIApplication.main(args, null, JFXLauncher.class); 
        } 
    } 
}

Cette classe sert de point d’entrée en tant qu'application native iOS. C'est elle qui démarrera votre application JavaFX mypackage.MyApplication en l'invoquant dans sa méthode didFinishLaunching(). À moins que vous ne soyez amené à utiliser un des périphériques ou une des fonctionnalités propres à votre plateforme cible (par exemple : l'appareil photo, le GPS, etc.), cette classe est la seule à utiliser l'interface Cocoa accessible par RoboVM ; tout le reste de votre application peut être en JavaFX pur.

Pour pouvoir compiler votre projet, vous avez également besoin de rajouter les dépendances suivantes dans votre projet. Ces fichiers JAR se trouvent dans le répertoire lib de la distribution binaire de RoboVM :
  • robovm-rt.jar
  • robovm-cocoatouch.jar
  • robovm-objc.jar


Mis à jour le 27 octobre 2014 bouye

Commencez par créer un nouveau projet Java supportant Maven. Vous pouvez commencer à coder votre application JavaFX comme à l’accoutumée et y inclure la classe permettant de lancer l'application décrite ci-dessus.

Éditez ensuite votre fichier pom.xml et insérez les lignes suivantes dans la définition des plugins :

Code XML : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
<plugin> 
    <groupId>org.robovm</groupId> 
    <artifactId>robovm-maven-plugin</artifactId> 
    <version>1.0.0-alpha-04</version> 
     <configuration> 
        <config> 
            <mainClass>mypackage.JFXLauncher</mainClass> 
        </config> 
        <includeJFX>true</includeJFX> 
    </configuration> 
</plugin>

Ainsi que les lignes suivantes dans la gestion des dépendances :

Code XML : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
<dependency> 
    <groupId>org.robovm</groupId> 
    <artifactId>robovm-rt</artifactId> 
    <version>1.0.0-alpha-04</version> 
</dependency> 
<dependency> 
    <groupId>org.robovm</groupId> 
    <artifactId>robovm-cocoatouch</artifactId> 
    <version>1.0.0-alpha-04</version> 
</dependency>


Mis à jour le 23 septembre 2014 bouye

Vérifiez que vous avez déjà accepté la licence d'utilisation de Xcode en démarrant son IU ou en essayant d'invoquer un de ses outils via la ligne de commande.

Vérifiez également que votre application JavaFX démarre et fonctionne correctement.

Vérifiez que le répertoire bin de Maven est accessible sur le PATH.

Pour démarrer votre application dans l’émulateur iOS, exécutez la ligne de commande suivante :

Code : Sélectionner tout
mvn robovm:iphone-sim

Cette commande téléchargera les dépendances du programme et, lors du premier lancement, compilera RoboVM pour votre système (la compilation initiale peut durer un certain temps). Dans un second temps, RoboVM recompilera le bytecode Java de votre application en code machine pour iOS avant de lancer votre application JavaFX dans l’émulateur iOS de Xcode.

Mis à jour le 23 septembre 2014 bouye

Dans Eclipse, allez dans le menu Help → Eclipse Marketplace..., puis tapez RoboVM dans le champ Find: et cliquez sur le bouton Go.

Dans la liste affichant les résultats de la recherche, cliquez sur le bouton Install de l'application RoboVM for Eclipse.

Dans l’écran suivant, vérifiez que toutes les dépendances sont cochées avant de cliquer sur le bouton Confirm >.

Acceptez la licence d'utilisation et cliquez sur le bouton Finish pour procéder à l’installation.

Note : bien qu'il soit possible d'installer ce plugin sur n'importe quelle version d'Eclipse, à l'heure actuelle, la compilation d'un projet créé avec ce plugin ne peut s'effectuer que sur Mac OS X.

Mis à jour le 27 octobre 2014 bouye

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsables bénévoles de la rubrique Java : Mickael Baron - Robin56 -