Après la courte présentation de Cocoa de la dernière fois, cet article vous aidera à décider s'il s'agit d'une bonne solution de développement pour votre projet.
Avantages
Rapidité de développement
Certains avancent que le développement sous Mac OS X avec Cocoa est 5 fois plus rapide que le même développement sous Windows. Je suis mal placé pour confirmer, mais comparé à d'autres outils que je connais, Cocoa est effectivement très efficace, de part la nature dynamique du langage Objective-C (tout n'a pas besoin d'être figé à la compilation) et de la qualité générale des classes. Il me semble qu'Apple possède également une avance conceptuelle, avec les récentes technologies Core Data et Cocoa Bindings.
Cocoa n'est pas toujours suffisante pour coder une application, mais les autres technologies comme Core Audio ou Core Graphics présentent d'excellents compromis puissance/facilité de mise en œuvre. N'oublions pas non plus que Mac OS X est un système Unix, et nous profitons donc des qualités de ces systèmes.
API mâtures
Cocoa est loin d'être une nouveauté, n'étant qu'une évolution d'OpenStep, le système de développement qui existait déjà sous NeXTSTEP avant qu'il ne devienne Mac OS X. Il est connu que Tim Berners-Lee a développé le premier navigateur web et le premier serveur web grâce à OpenStep. Ces outils de développement évoluent depuis plus de vingt ans; malgré leur âge, ils sont toujours sans équivalent sur les autres plateformes.
Comportement standard
Cocoa est ainsi faite que les choses qui sont habituelles sous Mac OS X sont faciles à implémenter. Que ça vous plaise ou non, votre application suivra en grande partie les canons de Mac OS X et les recommandations d'Apple.
En fait, votre difficulté sera parfois de déroger à ces standards !
Inconvénients
Portabilité
Cocoa n'existe que sous Mac OS X. Il existe bien une implémentation libre d'OpenStep (http://www.gnustep.org/), mais il lui manque les dernière innovations (la compatibilité avec Cocoa n'a rien de totale), il faut que l'utilisateur l'installe et les auteurs bénévoles la font progresser lentement.
De même, le langage Objective-C — le plus habituel pour développer avec Cocoa — n'existe que sur Mac. Certes, Objective-C est intégré au compilateur libre et multiplateforme gnu c, mais ce compilateur est inutile sans les classes de bases (telles que NSObject, NSArray, NSDictionary, etc.).
Pour un développement multiplateforme, mieux vaut donc aller voir ailleurs, ou développer uniquement l'interface graphique avec Cocoa, et le reste en C++, par exemple (on peut mélanger Objective-C et C++ dans certaines limites).
Difficulté
Cocoa n'est pas pour les débutants. N'espérez pas y comprendre grand chose si vous ne connaissez ni le langage C, ni la programmation objet. Elle introduit par ailleurs de nombreux concepts, souvent étrangers aux développeurs formés à d'autres frameworks. Sa puissance est réelle, mais il faudra investir du temps et de l'énergie pour en profiter.
Outils
L'outil principal pour programmer Cocoa, c'est XCode, l'intégré de développement d'Apple. Et comment dire… il s'améliore à chaque version, mais c'est toujours pas ça. Le principal soucis provient de l'éditeur de texte, de sa lenteur, de son indentation automatique agaçante, tout comme sa complétion automatique. Mais on pourrait aussi citer les interfaçages avec gdb (débogueur) et Subversion (gestion de version) moyennement au point, ou encore les outils pour créer des diagrammes de classes, qui eux, sont carrément risibles.
Programmes d'exemple
Je me suis toujours demandé ce que foutait Apple avec ses programmes d'exemple. À moins de tomber sur une perle (mais de mémoire, je ne vois pas), les programmes d'exemple souffrent d'un ou plusieurs des maux suivants :
- pas commentés, et brouillons
- purement démonstratifs et inutilisables dans un autre contexte
- concernent vaguement le sujet
- inutilement compliqués, voire des pans entiers du source ne servent à rien
- mémoire gérée à la truelle
Heureusement que d'autres développeurs proposent les leurs.
P'tête ben un avantage, mais p'tête ben un inconvénient
Une communauté réduite
Comme souvent, c'est à la fois un avantage — les gens s'entraident, les nouveaux sont bienvenus — et un inconvénient — on galère parfois pour comprendre comment ça marche, il est difficile d'obtenir des réponses très techniques, et la documentation est parfois limitée.
Toutefois, la communauté s'agrandit, d'ailleurs, vous me lisez !
M'est avis qu'un certain téléphone tactile n'est pas étranger à ce nouvel engouement.