-
Java et cross-platform
Bonjour, J'ai comme projet de créer une application sur smartphone.
Je developpe en java et j'aimerai savoir qu'elles sont les solutions pour que m'ont application soit cross-platform ?
Il y a un moyen de développer en java pour ios ? c'est compliquer ?
Merci.
-
Java est de base cross-plateform dans le sens ou si tu te cantonnes a JavaSE avec les appels de l'API standard alors toutes les plateformes SE sont supposées avoir un socle commun de compatibilité et peuvent donc généralement faire tourner ton application mais certaines différences de comportement peuvent exister cependant. Par exemple la gestion des fichiers peut avoir des différences subtiles ou encore la gestion de la prise en charge du son ou de la 2D avec accélération matérielle ou pas. La 3D est un module (extension) a part qui n'est pas forcement disponible partout.
Cependant toutes les plateformes ne sont pas forcement capable de supporter du SE : certaines plateformes supportent uniquement JavaME (Java Mobile Edition - pour les anciens téléphones portables non smartphone) ou Java Card (pour les smart card) et d'autres une version apparentée a du Java mais qui n'est pas complètement standard a 100% et avec sa propre API (Android) et encore d'autres ont un accès restreint (ex : la PlayStation 3, 4 et la XBOX One ont une pile Java pour leur compatibilité BluRay). Également il y a quelques années Oracle avait annoncé la création de profils d’exécutions pour permettre a des éditeurs tiers de créer des versions de JVMs JavaSE allégées pour leur matériel. Donc c'est a toi de voir quelles sont tes plateformes cibles et de faire ce qu'il faut pour réaliser des tests dessus.
De plus, il te faudra peut-être suivant les besoins de ton programme, utiliser des libs ou des accès natifs ou sur des ports particuliers de la machine qui feront donc que ton programme peut ne plus être portable après coup.
Tu peux créer une application Java pour iOS de plusieurs manières. En gros tu as principalement 2 choix même s'il existe probablement d'autres outils tiers moins connus :
- CodenameOne propose des outils de programmation Java (et Kotlin) multi-plateforme. Leurs outils sont plus anciens et donc plus matures mais leur API et app model se rapproche plus de ce qu'on peut trouver sur JavaME (les fondateurs de Codename One ont co-cree LWUIT, un framework graphique pour JavaME il y a fort longtemps). La compilation et signature pour iOS demandant un mac, Codename One propose des crédits de compilation sur le cloud pour cette plateforme.
- Gluon propose des outils de programmation Java multi-plateforme. Malgré l’intérêt que je leur porte je trouve leurs outils toujours pas assez matures et peu aisés d'emploi. Leurs outils se reposent sur une pile plus récente construite autour de JavaFX et avec un app model se rapprochant plus de ce qu'on peut trouver sur Android avec les activity (ici View). Chaque projet repose sur un tronc multi-plateforme avec si nécessaire des variantes permettant d’accéder aux APIs spécifiques a chaque plateforme supportée par le projet. La compilation et signature pour iOS demandant un mac, il t'en faudra un pour finaliser ton application (pour devel et test tu peux tout faire sur Windows).