Codename One a adopté une approche très équilibrée de la portabilité. Je voudrais ajouter un commentaire pragmatique. Du côté de l'interface utilisateur, CN1 peint l'ensemble de son interface utilisateur sur un canevas fourni par la plate-forme. Il essaie d'imiter l'aspect natif de la plate-forme, si vous le choisissez, mais a autant de succès que Swing avec son "apparence de plate-forme native", car la plate-forme native change constamment, et "native n '& dans la plupart des cas, ne se sent pas tout à fait raison. Mais, si vous choisissez l'apparence indépendante de la plate-forme (ce qui est la tendance actuelle), vous n'êtes pas limité par le jeu de composants par défaut de Codenameone: c'est comme Swing avec son apparence multiplate-forme et sentir ("Metal" etc.). Ce qui est bon. Du côté de la langue: sur iOS, Java est compilé en C qui est ensuite lié à l'Objective-C écrit à la main, et il ne comprend pas la VM, seulement la couche de portabilité. Le plus important ici est le fait que java est compilé en C et non en Objective-C, ce qui rend le code Objective-C plus rapide que idiomatique, car il effectue des invocations de méthodes virtuelles ou, plus souvent, directes au lieu de lenteurs. Ce qui est bon.
Il peut également sembler un peu plus rapide sur Android, car, tout en utilisant Dalvik/Art, il n'utilise pas l'interface utilisateur native Android qui est encombrante par rapport à CN1. Cela peut accélérer la création d'une interface utilisateur dynamique lors de l'exécution, ce qui est bien. L'un des points forts de l'approche CN1 est son émulateur (implémenté sur une toile de bureau JavaFX) que vous utilisez pour développer un logiciel. Emulator utilise le même code d'interface utilisateur et les mêmes API de portabilité que sur les plates-formes mobiles et vous permet d'utiliser l'IDE de votre choix pour le débogage. Il redémarre rapidement, et le cycle d'édition-compilation-exécution est très durable par rapport à Android. Ce qui est bon.
Deuxième point très fort (principal!) est la nature ouverte de leur bibliothèque d'interface utilisateur, tout le code natif et le traducteur bytecode-à-C. Si vous faites des efforts, vous pouvez éviter de construire des ports Android/iOS sur leur ferme et vous détacher de leur révision de produit particulière (mais pas de quelques services à valeur ajoutée qu'ils offrent, qui ne sont pas open source!). Selon votre situation, cela peut (ou ne peut pas!) Être assez bon pour vous!
Point faible de Codenameone est sa maturité moins-que-idéal, ce qui signifie que vous pouvez facilement vous tirer dans le pied en utilisant les composants de base UI, si vous les utilisez comme ils ne sont pas utilisés. Cela signifie aussi que sa couche de portabilité java n'est pas assez grande (et comporte des trous) pour couvrir les besoins de tout le monde, et vous devrez peut-être utiliser natif dans certains endroits, et porter d'autres bibliothèques java pures, aussi.
De plus, l'état actuel des performances graphiques est sous-optimal; Si vous avez plein de texte à l'écran, vous perdrez facilement l'animation fluide de 16 ms/la limite de temps de repeint, cela peut être contourné par un double tampon, mais il a aussi ses limites. Heureusement, il y a encore de la place pour l'optimisation de la mise en œuvre sur les deux plates-formes principales, j'espère qu'ils vont l'améliorer.
Dans l'ensemble, Codenameone a une bonne niche en tant que framework multiplateforme pour plusieurs classes d'applications; vous pouvez également trouver une valeur dans leurs services.
Merci pour votre attention, Shai! Je pense que vous devriez le mettre dans votre FAQ, nous savons qu'il n'y a pas de magie réelle et aimerait savoir comment fonctionne la magie percée. Je vais probablement essayer en phase d'évaluation! –
Il n'y a pas de phase d'évaluation pour Codename One, notre intention est de toujours avoir une option gratuite raisonnable pour les développeurs sans aucune condition. Puisque le produit est open source, il est important pour nous d'apporter une partie de cette liberté dans les services SaaS. –
Désolé, je me suis mal exprimé: P Je ne suis actuellement à la recherche d'alternatives, alors nous aurons une phase d'évaluation, pour voir comment les technologies répondent à nos besoins. –