Codename One : Du développement mobile multiplate-forme en Java

 

Framework de développement en Java
Plug-in Netbeans, Eclipse ou IntellJ IDEA + compilation en SaaS
Open-source (code du plug-in) et propriétaire (code du service SaaS)
Version communautaire gratuite (usages commerciaux autorisés)
Téléchargement
Site officiel : www.codenameone.com
Blog de la communauté francophone : www.codenameonefr.com

 

En matière de développement mobile, Java est davantage associé à Android ou BlackBerry qu'à du multiplate-forme. Et pourtant, il existe une solution, comparable à Xamarin en C#, permettant de générer du code natif pour iOS, Android, BlackBerry et Windows Phone à partir d'un code unique Java : Codename One.

Cette solution est portée par deux anciens ingénieurs d'Oracle : Chen Fishbein et Shai Almog, le premier étant ni plus ni moins le créateur de la bibliothèque d'interface graphique LWUIT (en J2ME), développée par la suite avec l'aide notamment du second.

 

Des applis natives codées en Java avec son IDE habituel


Codename One se présente comme un plug-in installable sur Netbeans, Eclipse ou IntellJ IDEA. Vous développez ainsi les applications dans votre environnement habituel. Il inclut une API, un designer et un simulateur. La compilation est effectuée dans le Cloud, ce qui vous dispense d'installer les différents SDK et de posséder le hardware afférant.

Le principe de Codename One est de créer du code natif pour Android, iOS, BlackBerry et Windows Phone, et ce à partir d'un même code Java. Pour iOS, le code sera converti en C [1] et compilé avec Xcode et pour Windows Phone en C#. En outre, il est possible d'appeler des fonctions natives à chaque plate-forme.

Le code compilé par Codename One a la réputation d'être extrêmement rapide et optimisé. Des tests effectués ont montré que les applis Codename One pour iOS pouvaient même être plus performantes que des applis directement écrites en Objective-C.

L'API inclut d'emblée de très nombreuses fonctionnalités, couvrant les besoins les plus courants (GUI, gestion du multimédia, réseau, service web, geolocalisation, monétisation, etc.) mais aussi plus avancés, que vous pouvez en outre étendre à l'aide de plug-ins complémentaires.

 

Codename One vs Cordova, Titanium et Xamarin


Il existe aujourd'hui différentes solutions pour développer des applications mobiles multiplates-formes, présentant toutes leurs avantages et leur inconvénients. La difficulté sera pour vous de choisir celle qui correspondra le mieux à vos attentes et priorités.

Différents critères peuvent être pris en considération :

  • le langage utilisé : Java pour Codename One, C# pour Xamarin, HTML pour Cordova/PhoneGap, JavaScript pour Appcelerator Titanium…
  • la simplicité d'emploi ;
  • le coût ;
  • la performance des applications créées ;
  • le type d'applications développées ;
  • la portabilité...

Sur le site de Codename One, vous trouverez un comparatif assez développé entre ce dernier et plusieurs alternatives, dont PhoneGap/Cordova, Appcelerator/Titanium et Xamarin. En voici quelques points.


CN1 vs HTML5/PhoneGap

La force et la faiblesse de PhoneGap/Cordova est de développer des applications mobiles à la manière d'une application web. Ce qui rend la technologie très accessible, mais pose rapidement des problèmes en termes de performances. Les applications créées sont des WebApps relativement limitées, d'autant plus qu'un grand nombre de fonctionnalités du HTML5 ne sont pas encore supportées par les versions mobiles des navigateurs web, toujours un peu à la traîne par rapport aux versions desktop.


CN1 vs Appcelerator Titanium, MonoTouch, RhoMobile...

Le principe de toutes ces solutions est sensiblement le même, produire des applications natives à partir d'un code unique. La principale différence repose en premier lieu sur le langage initial utilisé et les outils associés. CN1 dispose de toute la panoplie des outils Java, en particulier d'IDE très complets qui vous faciliteront le codage et le débogage, mais encore faut-il aimer Java et savoir l'utiliser.

Appcelerator Titanium, fondé sur l'emploi du JavaScript, permet de développer des applications natives pour iOS, Android et Tizen, mais pas pour Windows Phone, ni Blackberry. Les applications tournent à partir d'une machine virtuelle, un peu comme Adobe Air. Pour les tester et les optimiser, les développeurs ont besoin d'acquérir le hardware correspondant aux différentes plates-formes.


CN1 vs Xamarin

Xamarin est un environnement de développement mobile extrêmement sophistiqué, mais aussi assez coûteux. Sa version librement téléchargeable est très limitée en termes de fonctionnalités, ce qui n'est pas du tout le cas de Codename One. En outre, son approche est différente : ce n'est pas une solution dite WORA (= Write Once Run Anywhere), il requiert d'écrire du code spécifique pour chaque plate-forme ce qui oblige à maintenir chaque version séparément. Les GUI ne sont pas portables et nécessitent d'être localisées et adaptées pour être dans le ton de chaque OS. Enfin, vous devez utiliser son IDE ou Visual Studio.

À l'instar de Codename One, il ne nécessite pas d'avoir à sa disposition un Mac pour les développements iOS.

 

 

[1] Jusqu'à fin 2014, CN1 convertissait le code Java en Objective-C pour iOS, mais désormais il est converti en C pur.

Focus