Cocoa donne du punch à Mac OS X

Mobilité

Un des grands enjeux pour Apple avec la sortie de son système du nouveau millénaire, c’est de mettre au travail les développeurs qui migrent vers sa plate-forme. L’environnement de développement préférable est alors Cocoa. Issu de NeXTStep – l’environnement de programmation de la deuxième firme informatique de Jobs, NeXT – il s’appuie sur des objets et un langage dérivé du C : l’objective-C. Mise au parfum.

Cocoa : sans doute le plus gros atout d’Apple dans sa reconquête du marché. Avec lui, les développeurs vont vraiment pouvoir se la couler douce et un développeur qui n’a pas à taper de multiples fois le même code est un développeur heureux. On entend d’ici ces spécialistes de la programmation mettre le holà. Bon d’accord, il faut un peu d’huile de coude, mais quand même, avouez qu’Apple a bien mâché le travail (voir édition du 26 décembre 2000) !

Pour les non-initiés, tentons de donner une petite explication : Mac OS X, c’est une multitude de possibilités de créer des applications (voir édition du 17 octobre 2000). Les vieilles applications Mac tournent sur ce système selon deux manières différentes, si elles ont été optimisées ou non, dans un environnement dit de compatibilité, appelé Classic, ou de conversion intitulé Carbon. Ce dernier permet d’accéder à une bonne part des nouvelles fonctionnalités du système. Il est possible de porter des applications tournant sous Unix. Les développements Java peuvent être eux aussi lancés. Enfin, il y a l’environnement de programmation avancée orientée objet intitulé Cocoa. Pour les novices du développement et les nouveaux venus au Mac, c’est le rêve… Pour la petite histoire, il s’agit d’une sévère amélioration de NeXTStep (voir édition du 20 janvier 2000) qui implémente Aqua, l’interface utilisateur de Mac OS X, laquelle utilise et comprend un nombre accru de fichiers mais aussi nombre des standards du Web, comme PDF, XML ou autres. La programmation orientée objet lui apporte le petit plus que les artisans du code peuvent désirer.

Adopter les ressources disponibles

Programmer « orienté objet » dans Cocoa, cela signifie accéder à un niveau d’abstraction assez poussé. L’enjeu ici pour le programmeur, c’est de pouvoir adopter les ressources disponibles le plus facilement possible. Comme dit l’équipe d’Apple interrogée par O’Reilly, utiliser Cocoa, c’est « faire des choses simples simplement et rendre possible des choses compliquées ». Et les laborantins de la firme de Cupertino n’ont pas gardé leurs mains dans les poches pour cela : avec les outils fournis, les développeurs peuvent abandonner leurs tâches répétitives car Cocoa s’en occupe. Par exemple, la gestion des événements initiés par un clic dans un menu. Et tout est similaire : les objets réutilisables, la possibilité d’accéder à toutes les langues supportées, le rendu PDF, les « objets » archivés qui permettent de générer l’interface utilisateur… La distribution d’objets est un des points forts : ces morceaux sont distribués et réutilisés d’un logiciel à l’autre, permettant de transférer des informations sans plus de soucis, comme s’il s’agissait de la même application !

Pour créer du code, la base élémentaire, ce sont les frameworks, des modèles de travail en quelque sorte, dont on trouve deux sortes ; Foundation et AppKit. Chacun des deux fournit des services de bases de l’OS. Toutefois seul AppKit permet de développer des interfaces utilisateurs. Foundation Framework apparaît comme une collection de services destinée avant tout aux serveurs et aux outils ne nécessitant pas d’interface graphique. Apple fournit également un environnement de développement, Project Builder, tandis qu’un autre outil, Interface Builder, permet de décharger la tâche du développeur dans la création des interfaces utilisateur. Avie Tevanian s’en est bien amusé à la dernière conférence des développeurs (voir édition du 23 mai 2001) : en moins de cinq minutes, en utilisant ces outils, il a pu développer une petite application simple. Les codeurs étaient aux anges : ils vont enfin pouvoir manger leurs pizzas chaudes !