Depuis l'annonce du nouveau système d'exploitation d'Apple : le Mac OS X, vous avez certainement lu un tas d'articles sur ce sujet, la majorité de ceux-ci se regroupent en deux catégories :
Je crois que plusieurs utilisateurs de Macintosh, qui ont peu de connaissances en programmation, ont de la difficulté à voir le portrait d'ensemble de ce qu'est le Mac OS X. Alors je vous offre une autre version d'article expliquant pourquoi les gens sont emballés par le Mac OS X. Mon article se différenciera des autres parce que je vais expliquer ce qui a amené Apple à choisir le Mac OS X comme le nouveau système d'exploitation moderne pour le Macintosh.
Si vous êtes un programmeur Macintosh chevronné, cet article ne vous offrira aucun regard nouveau sur le Mac OS X. Pour les autres, il vous permettra de coller ensemble tous les petits bouts d'informations que vous avez obtenues de différentes sources. Si vous vous êtes battu avec d'autres articles traitant du Mac OS X, lisez celui-ci, puis allez lire à nouveau l'article qui vous a donné mal à la tête -- vous aurez alors suffisamment de matériel pour passer au travers. Quant à moi, un ingénieur de logiciels et programmeur Macintosh depuis plus de douze ans, cet article me fourni une excellente excuse pour parler de mon sujet favori -- la programmation du Macintosh!
Un système d'exploitation, ou OS, est un logiciel ou un ensemble de logiciels. Sur le Macintosh le système d'exploitation est représenté par le fichier Système, mais il comprend également plusieurs autres fichiers situés dans le Dossier Système.
Une application communique avec le système d'exploitation de l'ordinateur sur lequel elle tourne. Lorsqu'un programmeur écrit un programme, il doit savoir comment établir cette communication. Un système d'exploitation (qu'il s'agisse du Mac OS, Windows, ou tout autre) est constitué d'une énorme quantité de codes écrits dans une forme quelque peu mystérieuse. À cause de cela, l'écriture d'un programme capable de s'interfacer avec le système d'exploitation serait normalement incroyablement ennuyeuse. Les compagnies telles qu'Apple ou Microsoft en sont conscientes, alors elles ont conçu un moyen permettant aux programmeurs d'avoir accès aux services de leur système d'exploitation.
API est un terme que vous avez rencontré dans tous les articles parlant du Mac OS X -- habituellement en compagnie du terme Carbon. On discutera du terme Carbon un peu plus loin -- pour l'instant nous allons nous concentrer sur le terme API. API signifie en anglais application programming interface (interface de programmation d'applications), et c'est le moyen fourni aux programmeurs pour les aider à interfacer leurs applications avec le code constituant le système d'exploitation. Différents systèmes d'exploitations sont constitués de codes différents, alors chaque système d'exploitation a son propre API. Ainsi un API c'est également du code. Dans le monde du programmeur, tout est code! Une application, c'est du code. Le système d'exploitation, c'est du code. Et l'API -- l'outil qui aide le programmeur à développer des applications qui s'interfacent avec le système d'exploitation -- c'est du code!
Chaque système d'exploitation possède son propre API, alors pour savoir rapidement à quelle API se réfère un programmeur, chaque API porte un nom. L'API que les programmeurs Macintosh utilisent s'appelle le Macintosh Toolbox (ou le Mac Toolbox, ou simplement Toolbox).
Le Toolbox, comme toute autre API, n'est autre chose qu'un ensemble (quoique très volumineux) de routines. Une routine du Toolbox Macintosh est du code écrit par Apple. Un programmeur peut facilement intégrer ce code écrit par Apple dans son application. Par exemple, si j'écris un programme Mac, je peux utiliser la routine du Toolbox appelée GetNewWindow pour que mon programme ouvre et affiche une nouvelle fenêtre. N'essayez pas de comprendre ce qui suit -- ne jetez qu'un coup d'oeil et observez que le Toolbox permet de faire quelque chose de complexe (créer une fenêtre et l'afficher à l'écran) en écrivant très peu de code.
theWindow - GetNewWindow(128, 0L, (WindowPtr)-1L);
Depuis 1984, année où est né le premier Mac, jusqu'à tout récemment, l'API des programmeurs du Mac était ce Toolbox. Pour le nouveau venu en programmation Macintosh, Rhapsody est venu changer cela.
Lorsqu'il fut devenu évident que la modernisation du Mac OS avait échoué après de longues années de tentatives infructueuses, Apple acheta NeXT -- la compagnie que Steve Jobs fonda après qu'il eut quitté Apple. Par ce geste, Apple mit la main sur OpenStep -- l'API que les programmeurs de NeXT utilisent pour écrire des applications qui tournent sous le système d'exploitation NeXT. Tout comme le programmeur Mac utilise l'API Toolbox pour développer des applications Macintosh, un programmeur NeXT utilise l'API OpenStep pour développer des applications NeXT.
Après l'acquisition de NeXT, Apple s'est immédiatement mis à la tâche de modifier OpenStep -- les ingénieurs d'Apple ont écrit du nouveau code pour améliorer le code existant d'OpenStep. Pour distinguer cet «OpenStep amélioré» de l'original, Apple donna au nouvel API le nom Yellow Box.
Révisons brièvement où nous en sommes rendus dans cette affaire de relation entre système d'exploitation / applications / API :
API, interface de programmation d'applications. Le code que les programmeurs utilisent lors de l'écriture de leurs programmes. Le code est divisé en routines, celles-ci exécutant des tâches précises. Parce que les systèmes d'exploitation sont constitués de codes différents, une application ne peut tourner que sur un seul système d'exploitation (vous verrez plus loin qu'il y a des exceptions). Alors chaque système d'exploitation possède sa propre interface de programmation d'applications.
Routine. Le code constituant une interface de programmation d'applications (API) est divisé en routines -- des petits programmes en quelque sorte. Chaque routine exécute généralement une tâche spécifique et peut être intégrée par les programmeurs dans leurs applications.
Macintosh Toolbox. Le nom de l'API que les programmeurs du Mac utilisent pour écrire des applications Macintosh.
OpenStep. Le nom de l'API que les programmeurs du NeXT utilisent pour écrire des applications NeXT.
Yellow Box. Le nom de l'API qu'Apple a donné à sa version améliorée de l'API original d'OpenStep et que les programmeurs utilisent pour écrire des applications Rhapsody.
Carbon. Un autre API d'Apple -- qui sera discuté un peu plus loin!
La définition du Yellow Box introduit une autre technologie Apple : Rhapsody.
Un programmeur utilise les routines de l'API Yellow Box pour développer des applications qui tournent sous Rhapsody -- le système d'exploitation d'Apple basé sur les technologies NeXT et qui n'est pas encore terminé.
Rhapsody se veut être un système d'exploitation moderne et puissant avec l'interface Macintosh. Peut-être encore plus important, Rhapsody pourra être installé sur des ordinateurs avec processeurs PowerPC ou Intel. Ce qui signifie que Rhapsody pourra tourner sur des Power Macintosh et des PC. Ainsi le Yellow Box est un ensemble de codes que les programmeurs utilisent pour développer des applications qui tourneront sous le système d'exploitation à compléter, Rhapsody. Ce système d'exploitation a la possibilité de s'accaparer de presque cent pour-cent du marché des ordinateurs domestiques. À première vue c'est fantastique! Mais en examinant les choses d'un peu plus près, on se rend compte que la réalité n'est pas aussi belle.
L'utilisateur qui travaille sur un Mac avec Rhapsody comme système d'exploitation, utilise des applications Yellow Box toutes nouvelles, rapides et avec protection de mémoire (réduit les possibilités de plantage) -- des programmes écrits spécifiquement pour Rhapsody. Que se passe-t-il avec les anciens programmes ? -- ceux écrits pour tourner sous le système d'exploitation Mac OS 8 ? Cet utilisateur peut exécuter ces programmes également, mais parce qu'ils ont été développés avec l'API Toolbox du Macintosh, plutôt qu'avec l'API Yellow Box, ils ne pourront bénéficier de la puissance du système d'exploitation Rhapsody. À la place, Rhapsody permet à l'utilisateur d'ouvrir une fenêtre affichant le bureau du Macintosh ou Finder. À partir de cette fenêtre, l'utilisateur travaille comme s'il était dans un environnement avec le système d'exploitation Macintosh. Une sorte de Mac OS 8 intégré au système d'exploitation Rhapsody. Cet «OS dans un OS» porte un nom -- Apple l'appelle le Blue Box.
Le Blue Box est une ruse astucieuse permettant aux utilisateurs de préserver leur investissement dans les logiciels du système d'exploitation Macintosh. Cependant, il n'est pas logique pour un utilisateur de changer pour Rhapsody et d'obtenir en retour une imitation du Mac OS 8. Les utilisateurs voudront plutôt de nouvelles applications conçues spécifiquement pour Rhapsody et ils s'attendront à ce que les applications commerciales existantes du Mac OS soient mises à jour pour bénéficier des avantages du nouveau système d'exploitation.
Ce sont des souhaits légitimes de la part des utilisateurs, mais un cauchemar pour les développeurs Macintosh. Tout simplement parce que l'API Yellow Box est totalement indépendant de l'API Toolbox du Macintosh. Un programmeur Mac qui a investi des années dans l'apprentissage et la compréhension du code de l'API Toolbox du Mac ne connaît rien du code de l'API Yellow Box. Le fait que le programmeur Macintosh doit réviser une application Mac existante ou en créer une nouvelle a peu d'importance -- si le but est d'obtenir une application qui bénéficie des avantages de Rhapsody, ce programmeur doit apprendre l'API Yellow Box. L'apprentissage d'un API prend beaucoup de temps. De plus, le programmeur Mac doit s'investir dans l'écriture de programmes pour un système d'exploitation qui n'est pas encore complété et qui n'aura probablement pas une grande part de marché. Bien que Rhapsody ait le potentiel de tourner sur un grand nombre d'ordinateurs, il n'y a aucune garantie que le marché l'acceptera. C'est beaucoup demander à un programmeur. Devinez ce qui s'est passé lorsqu'Apple en a fait la demande aux programmeurs ? Très peu ont répondu.
Apple était emballé par Rhapsody. Les développeurs l'étaient également -- mais pas en ce qui concerne l'effort requis pour apprendre le nouvel API. Apple devait offrir une nouvelle solution -- une solution menant à un système d'exploitation moderne et puissant comme Rhapsody, mais qui permettrait aux programmeurs de réutiliser la majorité de leur code provenant de l'API Toolbox du Mac. Et c'est ce qu'ils ont fait en annonçant le nouveau système d'exploitation : Mac OS X.
Le Mac OS X sera un système d'exploitation moderne avec l'interface utilisateur à laquelle nous ont habitué les différentes versions du Mac OS ainsi que de nouvelles caractéristiques :
Ce sont tous d'excellents avantages pour l'utilisateur, mais qu'est-ce qui rend le Mac OS X attrayant aux programmeurs Mac ? C'est Carbon -- l'API du Mac OS X. Rappelez-vous que chaque système d'exploitation a sa propre interface de programmation d'applications, alors ce n'est pas une surprise qu'un nouveau système d'exploitation Mac possède un nouvel API. Ce qui est une surprise pour la plupart des développeurs, c'est que Carbon est basé sur un API existant -- l'API Toolbox du Mac utilisé depuis de nombreuses années. Apple a examiné les milliers de routines constituant le Toolbox du Mac, en a retiré celles qui ne sont plus utilisées et en a ajouté de nouvelles.
Le résultat, Carbon, est un API très similaire à l'API Toolbox du Mac, et c'est ce que les programmeurs Macintosh aiment. Pour mettre à jour une application Macintosh afin qu'elle devienne une application native Mac OS X (pour bénéficier des avantages du nouveau système d'exploitation), cela demande très peu d'effort -- la majorité du code d'origine peut être réutilisé. La création d'une nouvelle application (par opposition à la mise à jour d'une application existante) conçue pour être une application native Mac OS X demande, bien entendu, autant d'effort que le développement d'une application pour le Mac OS 8. Cependant il n'est pas nécessaire d'apprendre l'API du Yellow Box.
Nous arrivons à la fin de la première section de cet article -- à l'endroit où la plupart des autres articles sur le Mac OS X débutent!
Le Mac OS X est très attrayant pour les développeurs. Avoir la possibilité d'écrire des applications sans être obligé d'apprendre un nouvel API est un des aspects les plus attrayant du Mac OS X -- mais il y en a d'autres.
Les premiers articles traitant du Mac OS X annonçaient qu'Apple avait abandonné Rhapsody, ce n'est pas le cas. Mac OS X est, dans un certain sens, Rhapsody. Outre l'API Carbon permettant aux programmeurs de développer des applications pour le Mac OS X, ce dernier inclura l'API Toolbox original du Mac ainsi que l'API Yellow Box. Toutes les applications tournant sous Mac OS 8 tourneront sous Mac OS X, de même que toutes les applications développées pour Rhapsody utilisant l'API Yellow Box. Encore mieux, le type d'application (Mac OS 8, Mac OS X, Rhapsody) sera transparent à l'utilisateur. Bien que le Mac OS X offre une compatibilité avec le Mac OS 8, il n'y aura pas de véritable Blue Box. En effet, il n'y aura pas de fenêtre séparée contenant le bureau du Mac OS 8 et permettant d'exécuter des applications Mac OS 8. Toutes les applications reposeront sur le bureau du Mac OS X et seront exécutées simplement en double-cliquant dessus.

La figure précédente cache une astuce qui nous évite d'expliquer le fonctionnement complexe du coeur du système d'exploitation. C'est correct -- tout ce qui nous intéresse, c'est de savoir que tout peut tourner sous le Mac OS X!
Les applications Mac OS 8 tournant sous Mac OS X se comporteront exactement comme si elles tournaient sous Mac OS 8 -- elles ne pourront tout simplement pas bénéficier des avantages offerts par le Mac OS X.
Les applications Mac OS X pourront, bien sûr, bénéficier des avantages offerts par les technologies du Mac OS X.
Les applications Rhapsody bénéficieront également des avantages du Mac OS X. Ainsi, les applications Rhapsody et les applications Mac OS X seront indifférentiables les unes des autres. Cela soulève la question suivante : pourquoi un programmeur devrait utiliser l'API Yellow Box alors qu'il peut apparemment atteindre les mêmes résultats avec l'API Carbon ? Il y a au moins deux bonnes réponses à cette question : la portabilité sur plusieurs plates-formes et la facilité de développement pour certains programmeurs.
Une application développée en utilisant l'API Yellow Box pourra, sans modification, être exécutée sur un Macintosh sous Mac OS X. Elle pourra également être exécutée sur un PC utilisant le Yellow Box pour Windows -- le logiciel Apple qui s'installe sur la plupart des PC utilisant Windows 95 ou Windows 98. Lorsqu'un utilisateur de PC possède le Yellow Box pour Windows sur son ordinateur, il peut exécuter toutes ses applications Windows ainsi que toutes les applications Mac OS X développées avec l'API Yellow Box. L'apprentissage de l'API Yellow Box peut valoir la peine pour un programmeur Macintosh qui désire développer des applications pour les utilisateurs de Mac et Windows.
La deuxième raison expliquant pourquoi un programmeur choisirait de développer des applications Mac OS X en utilisant l'API Yellow Box implique l'expérience en programmation du développeur. Pour un programmeur qui sait déjà comment programmer le Mac en utilisant le Toolbox, l'effort est considérable pour apprendre le Yellow Box. Pour un programmeur qui n'est pas familier avec la programmation du Mac (par exemple, un programmeur Windows), l'apprentissage de l'API Yellow Box demande du temps; mais pas autant d'effort que l'apprentissage de l'API Carbon. Alors si un programmeur n'a jamais programmé le Mac et qu'il doit choisir un API, le choix le plus judicieux serait le Yellow Box plutôt que Carbon. Lorsqu'on commence à zéro, le Yellow Box est aussi facile à apprendre que Carbon, et le fruit du travail -- une application Rhapsody -- tournera autant sur le Mac avec Mac OS X que sur un PC avec Windows équipé du Yellow Box pour Windows.
Le Mac OS X fut présenté à la conférence mondiale des développeurs Apple, alors le gros des discussions portant sur le Mac OS X (incluant cet article) sont centrées sur ce que ce nouveau système d'exploitation signifie pour les programmeurs. Le Mac OS X est tout aussi important pour l'utilisateur. Les utilisateurs Mac qui changeront pour le Mac OS X conserveront toutes leurs applications existantes. Si un programme tourne sous Mac OS 8, il devrait tourner sous Mac OS X -- il ne bénéficiera tout simplement pas des caractéristiques spéciales telles que la protection de mémoire, la mémoire virtuelle avancée et le multithreading. Les utilisateurs du Mac OS X auront à leur disponibilité des applications rapides et résistantes au plantage, grâce à la facilité de mise à jour d'un programme en version Mac OS 8 en une version Mac OS X. En effet, Adobe a déjà réalisée une version Mac OS X de Photoshop! Finalement, la promesse de la portabilité multi-plateformes du Yellow Box signifie que plusieurs applications Mac OS X pourront tourner sur des PC.
La manière Rhapsody : réécriture complète du code d'un programme pour créer une nouvelle version qui tourne sur le Macintosh ayant le système d'exploitation Rhapsody.
La manière Mac OS X : une modification minimale du code d'un programme pour créer une nouvelle version tournant autant sur les ordinateurs avec Mac OS X que sur ceux avec Mac OS 8 (sans bénéficier des avantages du Mac OS X). L'utilisation optionnelle de l'API Yellow Box résulte en une application Mac OS X qui est portable sur plusieurs plates-formes.