Pour le développement d’applications Android, l’IDE (Integrated Development Environment pour Environnement de Développement Intégré) mis en avant par la communauté et par Google est Eclipse, avec son plugin ADP. Cependant Eclipse n’est pas exempt de défauts, et lui trouver une alternative n’est pas chose aisée. Parmi les candidats en lice, IntelliJ IDEA Community Edition – version gratuite et open source, mais limitée, de l’IDE Java IntelliJ IDEA – se démarque de ses concurrents en reprenant la même interface et un grand nombre des fonctionnalités ayant fait le succès d’IntelliJ IDEA. Les différences par rapport à la version commerciale de l’éditeur se situent principalement au niveau du support des différentes technologies utilisées en entreprise (Spring, Struts, Hibernate…). Le support du SDK Android est par contre complètement opérationnel dans la version CE, pour notre plus grand plaisir. Nous proposons ici un aperçu de cet atelier de développement, disponible pour Linux, OSX et Windows, de ses fonctionnalités liées au langage Java en général, avec un focus pour le développement d’applications Android en particulier.
Installation d’IntelliJ et du SDK d’Android
Avant de pouvoir commencer le développement d’un projet Android avec IntelliJ IDEA, il faut installer le JDK (Java) ainsi que le SDK Android, et configurer les versions souhaitées de la plateforme Android. La dernière branche en date est la 4.0.x, mais pour une compatibilité plus large avec les terminaux mobiles en circulation, il est possible d’utiliser la branche 2.3.x encore très répandue.
L’installation d’IntelliJ en elle-même ne pose pas de problème particulier. Le programme se récupère sur le site de l’éditeur pour la plateforme souhaitée. IntelliJ est écrit en Java, une machine virtuelle est donc requise pour son exécution. Aucune autre installation n’étant imposée, IntelliJ est prêt par défaut au développement pour la plateforme Android sans ajout de plugin.
Création et configuration du projet
La création d’un projet Android peut se faire de différentes façons. Il peut être créé à partir de sources existantes, localement, sur un serveur distant ou sur un gestionnaire de versions (SVN, Git, Mercurical, …), ou bien évidemment à partir de rien. Pour ce dernier cas, il faut choisir une version du SDK Android. Par ailleurs, une activité par défaut peut être créée avec un écran de type « Hello World » (Figure 1).
A la création du projet, le choix du moyen de débogage du projet est également donné, à savoir à l’aide de l’émulateur fourni avec le SDK ou à l’aide d’un téléphone en mode « debug ».
Les fonctionnalités générales
Ci-après sont présentées quelques unes des fonctionnalités d’IntelliJ IDEA CE liées au développement Java en général. Le but n’est pas ici d’être exhaustif, mais d’apporter une vision d’ensemble et de pointer quelques originalités.
Au niveau interface, IntelliJ est intuitif et propose un accès au maximum de fonctionnalités sous forme d’onglets de chaque côté de la fenêtre. Une fois sélectionné, un onglet s’ouvre sous la forme d’un volet comme les volets « projets » et « debug » de la Figure 2. Le reste est accessible par les menus de l’application, par les menus contextuels ainsi que par les raccourcis clavier.
Les fonctions principales d’un IDE concernent probablement l’aide à l’écriture de code source. On retrouve ici les aides « visuelles » classiques, notamment les plus communes comme la coloration syntaxique, l’affichage de la documentation, la mise en exergue des erreurs ou messages d’alerte, mais aussi la mise en évidence des incohérences, tels que les morceaux de code inutiles, ou encore de petits pictogrammes pour signaler des méthodes particulières (surchargées d’une autre classe, implémentant une interface…).
Conjointement, on retrouve des outils d’aide à l’écriture de code avec bien évidemment l’auto-complétion qui est accessible depuis de nombreux types de fichiers, mais aussi l’implémentation automatique de portions de code à l’aide des « live templates » qui permettent de générer des structures de code, comme celui d’une boucle foreach par exemple. Certains sont accessibles par un menu contextuel comme la génération des déclarations des méthodes d’une interface, la surcharge des méthodes d’une classe parente, la génération des getter / setter d’une propriété privée ou protégée, … comme présenté en Figure 3.
Lors du « refactoring », le développeur peut s’aider des possibilités regroupées au sein du menu consacré. Par ailleurs, les « intents » mettent en exergue certaines portions de code qui peuvent être simplifiées ou complétées et proposent de le faire d’un simple clic. C’est ce que montre la Figure 4, avec la proposition de la simplification d’un test par la suppression de « == true » inutile.
La navigation dans le code ou la recherche de portions de code sont épaulées par des fonctions de recherche ou de navigation efficaces. La recherche se retrouve par ailleurs à de nombreux endroits dans l’interface. On peut ainsi filtrer dans la liste des méthodes et propriétés de la classe courante (Figure 5), ou encore dans la fenêtre de préférences de l’interface et du projet, pour retrouver une section bien cachée… La Figure 6 illustre la recherche parmi les options accessibles depuis la barre de menus de l’application, pratique pour retrouver rapidement cette fonctionnalité dont on a oublié le raccourci. Parallèlement à cela, il est aisé de naviguer de l’utilisation d’une méthode à son implémentation, ou de retrouver les utilisations d’une méthode.
Le principe des IDE étant de rassembler tous les outils utiles aux développeurs au sein d’une même interface, au delà de la simple écriture de code elle-même, IntelliJ intègre ou s’interface avec de nombreux outils. C’est le cas de l’interconnexion avec un gestionnaire de versions, avec une base de données, avec un outil de gestion de tâches ou encore l’intégration d’outils de déploiements.
L’utilisation d’IntelliJ au quotidien offre son lot de petites fonctionnalités bien intégrées et disponibles directement. Citons le cas de l’historique local activé par défaut et indépendant de tout gestionnaire de versions, ou l’outil de comparaison et de résolution de conflits utilisable à des fins diverses comme la comparaison d’une portion de code avec le contenu du presse papier.
Par rapport à la version complète (commerciale) d’IntelliJ IDEA, il manque quelques fonctionnalités, dont certaines auraient pu se révéler intéressantes, comme les diagrammes de classes ou la recherche structurelle (structural search) qui a pour but de rechercher un pattern personnalisé pour en proposer dynamiquement, par exemple, la suppression ou le remplacement.
N’oublions pas, pour terminer, qu’à l’instar d’Eclipse, les fonctionnalités d’IntelliJ sont extensibles au moyen de plugins.
L’intégration avec le SDK Android
En plus des fonctionnalités utiles pour tout développement Java en général, IntelliJ IDEA CE propose une intégration du SDK Android permettant d’accélérer les développements d’applications mobiles. Lors de la création d’un projet en partant de zéro, il est proposé de créer une activité par défaut avec une page de type « Hello World ». L’interface met à disposition des assistants (Figure 7), tels que la création d’une nouvelle application ou activité, disponibles depuis l’interface, et ayant pour but de générer des squelettes de code automatiquement.
Le menu de création de fichiers propose de créer des fichiers adaptés au répertoire parent, comme la génération de fichiers de ressources lorsque l’on se place sur le répertoire « res ».
L’accès à la documentation est rapide et présente des liens hypertextuels, menant directement vers l’aide en ligne officielle (Figure 8).
L’auto-complétion, en plus des fichiers de code source Java, est opérationnelle depuis les fichiers de ressources ainsi que dans les fichiers « manifest ».
L’aspect « debug » de l’application n’est pas en reste. Comme présenté précédemment, le mode « debug » peut utiliser l’émulateur ou un appareil physique. Le débogage est effectué depuis l’IDE à l’aide des traditionnels points d’arrêt, variables surveillées, évaluation d’instructions « à la volée » etc. La présentation des messages de log propose d’affiner l’affichage par la sélection du niveau de log souhaité et met à disposition une fonction de recherche (Figure 9).
Un point négatif est à noter cependant : l’absence d’éditeur graphique pour la création de l’interface utilisateur. IntelliJ présente tout de même un aperçu des différents « layouts », ce qui permet d’éviter le recours à l’émulateur lorsqu’il s’agit de vérifier rapidement l’alignement d’un libellé.
Enfin, IntelliJ intègre la gestion des tests unitaires créés avec le framework de tests d’Android (« Android Testing Framework »). On peut ainsi écrire des tests unitaires et les lancer depuis l’interface.
Conclusion
Bien que ne révolutionnant pas le développement sous Android, IntelliJ IDEA CE propose une interface complète avec toutes les fonctionnalités qu’on attend d’un bon IDE. De plus, leur intégration réussie peut séduire les développeurs les plus exigeants, d’autant plus que cette version est open source et totalement gratuite. On peut lui reprocher cependant de ne pas intégrer d’éditeur graphique pour la réalisation des interfaces, de ne pas reprendre certaines des fonctionnalités intéressantes de la version commerciale ou encore de ne pas exister en version française.
Sans pour autant dépasser Eclipse au niveau des fonctionnalités, IntelliJ met à disposition une interface cohérente et efficace. Les fonctionnalités sont là où on les attend et lorsqu’on le maîtrise bien le gain en temps de développement est indéniable. De plus, IntelliJ se veut simple d’emploi, et ce dès l’installation. Si vous étiez à la recherche d’une alternative à Eclipse, vous l’avez trouvée !
Il est possible de retrouver l’intégralité de cet article dans le numéro 154 du mois de Juillet 2012 du magazine « Programmez ».