Codename One est un premier environnement mobile multiplateforme pour les développeurs Java et Kotlin. Il peut compiler le bytecode Java en exécutables natifs du système d'exploitation (iOS, Android, UWP, etc.). Il s'agit d'une plate-forme mobile complète comprenant des machines virtuelles, un simulateur, des outils de conception (thème visuel/constructeur/css), des intégrations IDE, des ports vers plusieurs systèmes d'exploitation et bien plus encore. Il fournit un accès complet au code natif sous-jacent du système d'exploitation (par exemple Objective-C, C#, Dalvik/ART) via une abstraction portable qui permet une réutilisation du code à 100 %.
Contrairement aux émulateurs que vous pouvez voir sur Android, etc. Codename One utilise un simulateur. Cela signifie qu'il démarre rapidement même lors du débogage. Vous pouvez profiter des fonctionnalités de l'IDE telles que le rechargement de code en direct pour modifier le code lors de l'exécution, etc.
Cela signifie un cycle de débogage plus rapide et un processus de développement plus rapide !
Choisissez parmi une large sélection de « skins » d'appareils pour voir à quoi ressemblera votre application sur des appareils particuliers. L'habillage prend en compte des facteurs tels que la résolution et la densité de l'appareil pour fournir une présentation parfaite au pixel près de votre application, telle qu'elle apparaîtrait sur l'appareil réel. Le basculement entre les skins d’appareils est presque instantané.
Vous pouvez modifier et contribuer aux skins dans leur propre projet open source ici.
Interagissez avec les API de votre application lors de l'exécution à l'aide de la console Groovy interactive. Inspectez l’état de l’application ou expérimentez les modifications pendant que l’application est en cours d’exécution.
Cela vous permet d'étudier les problèmes et d'expérimenter sans même la petite surcharge de recompilation.
Le simulateur vous permet de profiter de la fonctionnalité « Recharger les classes modifiées » dans IntelliJ (nommée « Appliquer les modifications de code » dans NetBeans) afin que les modifications que vous apportez à votre code source Java soient appliquées immédiatement à votre application déjà en cours d'exécution dans le simulateur.
Notez que cela est souvent supérieur à la console interactive mais il existe des limitations telles que la possibilité d'ajouter des méthodes/modifier la structure du code. Ces limites ne s'appliquent pas à la console interactive !
Lorsque vous apportez des modifications à la feuille de style CSS de votre application, les modifications sont instantanément reflétées dans le simulateur. Cela inclut la modification de votre thème, de vos images, de vos polices, etc. Toutes les modifications sont instantanément actualisées lors de l'enregistrement, pas besoin de recharger/actualiser ou quoi que ce soit du genre !
Cela rend le processus de style d’une application remarquablement simple et rapide.
Utilisez le puissant inspecteur de composants pour parcourir la hiérarchie des composants de l'interface utilisateur dans votre application. Cet outil permet de découvrir facilement d'où vient ce rembourrage supplémentaire ou pourquoi quelque chose ne s'aligne tout simplement pas comme vous le souhaiteriez. Vous pouvez également modifier l'UIID (sélecteur) d'un composant au moment de l'exécution pour voir son impact sur l'interface utilisateur et voir quel composant de la hiérarchie correspond à un élément dans l'arborescence des composants (équivalent DOM).
Consultez toutes les connexions réseau établies par votre application à l’aide du Moniteur réseau. Cet outil précieux s'avère utile lorsque vous essayez de comprendre pourquoi une requête HTTP ne fonctionne pas pour vous. Vérifiez les en-têtes et les corps de la demande et de la réponse. Vous pouvez même limiter le réseau pour simuler une connexion réseau lente.
Utilisez l'outil Test Recorder pour enregistrer les tests unitaires de votre application. Une fois que vous aurez commencé l'enregistrement, vos interactions seront enregistrées dans un test unitaire qui pourra être relu ultérieurement pour vérifier que le comportement reste correct.
Vous pouvez ensuite connecter les tests enregistrés à votre processus CI, y compris les tests automatisés sur les appareils.
Codename One est un projet open source mature dont les racines remontent à Sun Microsystems (2006), où l'un de ses principaux composants sous-jacents a été développé et open source. Vous pouvez en apprendre davantage sur son histoire et son fonctionnement dans cette vidéo.
Les applications Codename One fonctionnent comme des applications natives, car ce sont de véritables applications natives.
Ils sont compilés statiquement en binaires natifs à l'aide des outils de construction officiels de la plateforme cible.
Sur les plates-formes qui ne prennent pas en charge Java de manière native, comme iOS, le bytecode JVM de l'application est d'abord transpilé sous une forme acceptée par les outils de construction natifs. Sur iOS, le bytecode JVM de l'application est transformé en code source C, dans un véritable projet xcode. Sur Android, Java étant pris en charge de manière native, aucune transformation de ce type n’est nécessaire. Le fichier jar d'application est intégré directement dans un projet de studio Android, qui peut être construit directement à l'aide des outils de création du SDK Android.
Vous pouvez cliquer sur l'image pour l'agrandir ou consulter une version PDF ici.
CONSEIL : Nous sommes actuellement en transition vers Maven et avons créé une nouvelle méthode plus simple pour créer des projets. Consultez https://start.codenameone.com pour commencer maintenant.
Il y a beaucoup à savoir sur Codename One, cette vidéo de 3 minutes donne une vue très concise de haut niveau. Notez qu'il existe des vidéos similaires pour Eclipse, IntelliJ/IDEA et Netbeans ici :
Codename One peut être facilement étendu à l’aide de bibliothèques tierces pouvant inclure du code natif du système d’exploitation. Il existe une liste complète de ces bibliothèques (cn1libs) ici. La liste des bibliothèques est générée automatiquement sur la base de ce projet github.
Vous pouvez en savoir plus sur Codename One et ses fonctionnalités sur le site principal et vous pouvez consulter une liste complète de documentation et de didacticiels ici.
Vous pouvez commencer avec le binaire et la vue à vol d'oiseau dans la section de téléchargement. Les liens supplémentaires importants sont :
REMARQUE : Nous sommes en train de migrer de Ant vers Maven, ce qui simplifie le processus de construction à partir des sources. Voir Ant Quick Start pour les instructions de construction Ant existantes.
La configuration est traitée en profondeur dans cet article et cette vidéo.
IMPORTANT : la construction de Codename One nécessite actuellement JDK 8 . Vous ne pouvez pas utiliser JDK 11 car certains sous-modules doivent utiliser -source 1.5
et -target 1.5
pour maintenir la compatibilité ascendante avec certaines parties de la chaîne d'outils.
git clone https://github.com/codenameone/CodenameOne
cd CodenameOne/maven
mvn install
Cela construira et installera Codename One dans votre référentiel Maven local. Ce processus peut prendre un certain temps car il télécharge automatiquement les dépendances d'une taille d'environ 1 Go.
Pour créer les projets d'archétype à partir des sources, vous devez consulter le référentiel cn1-maven-archetypes et le construire également :
git clone https://github.com/shannah/cn1-maven-archetypes
cd cn1-maven-archetypes
mvn install
Maintenant que Codename One est installé dans votre référentiel Maven local, vous pouvez utiliser cette version dans un projet au lieu de la version finale. Un nouveau projet de test peut être rapidement généré avec l'initialisation Codename One.
Après avoir téléchargé et extrait le projet, ouvrez son fichier pom.xml et recherchez les propriétés <cn1.version>
et <cn1.plugin.version>
. Modifiez-les ensuite pour pointer vers la version installée dans votre référentiel maven local par mvn install
. La version construite localement sera généralement une version SNAPSHOT (par exemple 7.0.21-SNAPSHOT).
Obtenir et créer des sources
$ git clone https://github.com/codenameone/CodenameOne
$ cd CodenameOne
$ ant
Exécution de tests unitaires
$ ant test-javase
Exécution d'échantillons
Le répertoire Samples contient un ensemble croissant d’exemples d’applications. Ces exemples ne sont pas censés être des démos, mais plutôt des exemples d'utilisation des API.
Vous pouvez lancer l'exemple d'application d'exécution à partir de la ligne de commande en utilisant :
$ ant samples
La machine virtuelle iOS de Codename One est assez unique et est également open source. Vous pouvez en savoir plus à ce sujet dans son dossier dédié dans ce référentiel.
ParparVM est une machine virtuelle particulièrement conservatrice qui traduit le bytecode Java en code C. Offrant ainsi des performances et un accès natifs tout en fournissant un filet de sécurité. Cette approche est unique à Codename One et est essentielle pour une compatibilité future !
Apple a tendance à changer les choses brusquement, par exemple la prise en charge 64 bits, le bitcode, etc. Puisque ParparVM génère un projet Xcode standard, aucune modification de code n'a été requise pour aucun de ces changements tectoniques. C'est comme si vous aviez codé le projet vous-même !
Vous pouvez même ouvrir le projet résultant dans Xcode et le déboguer ou le profiler directement sur l'appareil iOS. Cela fournit de nombreuses informations utiles telles que des piles d'appels lisibles et un suivi des performances précieux/exploitables...
Les compilateurs traditionnels échouent dans ces cas.
Codename One maintient un fork d'iKVM qui est une JVM pour CLR. Ce port modifié nous permet d'exécuter l'implémentation de Codename One sur la plateforme Windows universelle de manière native sur les appareils Windows 10.
Nous fournissons une assistance chez StackOverflow lorsque vous utilisez codenameone, vous pouvez y demander n'importe quoi et nous essayons d'être assez réactifs. Le lien StackOverflow constitue également une excellente FAQ communautaire car il mappe littéralement les questions des utilisateurs aux réponses.
Codename One dispose d'un groupe de discussion où vous pouvez poster des questions. Cependant, en raison de la nature de ce groupe, nous essayons de limiter les discussions sur la source. Le forum de discussion est destiné à une utilisation plus simple et des hacks de code source/compilation native plus complexes pourraient y créer du bruit.
Merci à ces personnes merveilleuses (clé emoji) :
beazl-peter | liannacasper | sergeyCodenameOne | ThomasH99 | Javier Anton | Diamant | Francesco Galgani |
Kutoman | ramsestom | Maaartinus | Durank | ddyer0 | carlosverdier | Robert Edelmann |
Adalbert393 | Steve Hannah | Digappsepp | Pavneet Singh | vprise | JrmyDev | Terry Wilkinson |
Jaanus Hansen | Yaakov Guesher | Michael Munch | Saeder | Miguel Muñoz | Ahmed Aboumalwa | Fabio |
Piotr | Baie Matthias | Sanny Sanoff | McSym28 | Éric Léong | David Jour | Nick Prix |
Ahnaf Ben Azad | Octavio E Anino | Bouton Yash | Nina | FercueNat | ImmediadoSrl | davideprimasc |
DB107 | Ikko Eltociear Ashimine |
Ce projet suit la spécification de tous les contributeurs. Les contributions de toute nature sont les bienvenues ! ❤️