Accueil > Carbon > Introduction à Carbon

Introduction à Carbon

Sommaire

L’élément Carbone est une des composantes essentielles de la vie sur terre. Pour des programmeurs C, l’environnement Carbon d’Apple est la composante essentielle des applications amenées à tourner sur Mac OS X au même titre que sur Mac OS (8.1 ou ultérieure). Avec Carbon, vous avez les bénéfices de Mac OS X, et vous les obtenez en employant les traditionnelles interfaces C les plus simples. Cette combinaison accroit plus que jamais la facilité de créer des applications de classe internationale pour un système d’exploitation de renommée internationale.

Carbon et Mac OS X

A l’origine conçu pour apporter une migration en douceur aux développeurs chargés de migrer leur code Mac OS 9, Carbon est l’ensemble des interfaces de programmation C pour Mac OS X, le système d’exploitation de deuxième génération d’Apple.

NOTEZ : Une interface de programmation est un jeu de fonctions et de structures de données définies par un module logiciel, un service de système d’exploitation par exemple, dont la vocation est d’être utilisé par un logiciel client, comme des pilotes de périphériques et des applications. Par exemple, vous devriez accéder à une interface de programmation pour permettre à votre application d’imprimer et à une autre pour manipuler les menus de votre application.

Carbon était à l’origine conçu pour soutenir l’évolution de Mac OS. Apple a mis à jour les interfaces de programmation écrites pour les versions précédentes de Mac OS et les a réimplémenter pour profiter des nouvelles particularités et améliorations de Mac OS X. Mac OS X apporte au Macintosh beaucoup des fonctionnalités propres aux systèmes d’exploitation modernes, y compris :

  • Mémoire Protégée. Chaque application vit dans son propre espace mémoire, ce qui empêche que des applications instables fassent s’effondrer le système ou d’autres applications.
  • Multitache préemptif. On garantit des ressources processeur à chaque application, ce qui permet d’offrir plus de réactivité à l’utilisateur.
  • Assignation de ressource dynamique. Votre application peut s’allouer de la mémoire et d’autres ressources partagées en se basant sur des besoins réels plutôt que sur des valeurs prédéterminées, telles que des assignations de mémoire fixées.
  • Aqua look and feel. La nouvelle interface utilisateur d’Apple n’est disponible qu’aux applications qui tournent nativement sur Mac OS X. Aqua fournit un festival d’effets visuels - impulsion des boutons actifs, animation des icônes, effets de jaillissement des fenêtres - et un étalage de graphismes sublimes jamais vus sur un ordinateur individuel.

NOTEZ : Carbon est particulièrement utile pour les développeurs qui doivent mettre à jour leurs vieux codes Mac OS pour le porter sur Mac OS X. Cet article ne couvre pas le processus de portage, mais si vous êtes intéressés, allez voir Inside Carbon: Carbon Porting Guide.

En plus de la mise à jour de fonctionnalités anciennes, Mac OS X adopte quelques pratiques standard de l’industrie et présente de toutes nouvelles technologies. Pour soutenir ces fonctionnalités auprès des programmeurs en langage C, Apple a ajouté des nouvelles interfaces de programmation au vénérable Mac OS. L’ensemble de ces nouvelles interfaces de programmation est appelé Carbon.

Comme indiqué dans la Figure 1-1 Carbon est un des nombreux environnements applicatifs disponibles sur Mac OS X.


Figure 1.1. Carbon par rapport à d’autre environnements Mac OS X

Ces autres environnements incluent :

  • Cocoa. L’interface orientée objet pour écrire des applications Mac OS X en Objective-C ou en Java.
  • Classic. Un environnement de compatibilité pour applications écrites pour les systèmes antérieurs à Mac OS X. Ces applications ne profitent pas de tous les avantages de Mac OS X
  • Java. Une machine virtuelle “JDK-compliant” pour exécution des applications Java pures.

Ces environnements dépendent des mêmes services applicatifs fondamentaux pour leurs opérations et ces services sous-jacents reposent sur Darwin (le coeur “open-source” du système d’exploitation d’Apple) et sur le noyau Mach.

Chaque environnement (y compris l’environnement optionnel BSD à ligne de commande) a des avantages et des inconvénients, mais pour les programmeurs C et C ++, Carbon est le meilleur choix.

En quoi consiste Carbon ?

Carbon contient des milliers de fonctions, des structures de données et des constantes, mais ne vous inquiétez pas, cet article n’en exposera qu’une petite partie. Les structures de données et les fonctions associées sont organisées en groupes fonctionnels, habituellement appelés Gestionnaires ou Services. Par exemple, le Gestionnaire de Fenêtres contient les fonctions et les structures de données qui vous permettent de créer, de supprimer et de manipuler des fenêtres applicatives.

Dans cet article, vous emploierez les fonctions de quelques Gestionnaires et Services, dont la plupart sont généralement employées dans toutes les applications Carbon. Ces interfaces couvrent les fonctionnalités suivantes :

  • Création et manipulation d’interface utilisateur. En fait, gestion des fenêtres, des menus et d’autres éléments communs aux interfaces graphiques utilisateur (GUI).
  • Traitement des événements. Comment détecter que quelque chose est arrivé et que faire quand cela arrive.
  • Manipulation basique des chaînes. Comment assembler le texte que vous voulez afficher dans une fenêtre.
  • Rendu graphique de base. Comment afficher le texte et les fenêtres sur un écran.
  • Impression. Comment imprimer le texte dans une fenêtre.
  • Sauvegarde et ouverture de fichiers.
  • Aide. Comment mettre en oeuvre un système d’aide en ligne simple et comment ajouter des “étiquettes d’aide” informatives aux boutons et autres objets de l’interface.
  • Stockage et accès aux ressources. Mac OS X offre la particularité de permettre le stockage de tous les fichiers dont a besoin une application dans un package aisément accessible.

Vous serez probablement étonnés de voir le peu de fonctions, de chaque Gestionnaire ou Service, dont vous aurez besoin pour mettre en oeuvre des fonctionnalités de base. C’est la grande force du Carbon de Mac OS X. Le système d’exploitation et les outils de développement que vous emploierez - Project Builder et Interface Builder - font la plupart du travail à votre place. Par exemple, vous pourriez penser que vous devriez écrire beaucoup de codes compliqués pour permettre à un utilisateur de déplacer une fenêtre autour de l’écran. En réalité, vous obtenez cette fonction popur rien : le système d’exploitation fait automatiquement les appels appropriés pour vous et s’assure que la fenêtre déplacée se comporte correctement. Bien sûr, si vous devez contrôler chaque aspect d’une action ou si vous voulez ajouter des particularités personnalisées, Carbon vous le permet aussi. Cependant, si le comportement standard vous semble acceptable - et il y a peu de raison pour qu’il ne le soit pas - pour la plupart des éléments d’interface utilisateur, vous aurez alors encore moins de code pour écrire.

Construction d’applications Carbon

Parce que Carbon n’est qu’une collection d’interfaces de programmation , vous pouvez employer à peu près n’importe quel environnement de développement Macintosh en langage C qui suppoprte le PowerPC pour construire des applications Carbon. Cependant, il y a quelques limitations. Par exemple, les développeurs Carbon peuvent créer des applications dans deux formats exécutables différents :

  • Mach-O. C’est le format des exécutables natifs de Mac OS X. Les exécutables “Mach-O-based” ne peuvent tourner que sur Mac OS X.
  • PEF. Le Prefered Executable Format (PEF) était le format des exécutables natifs pour les systèmes Mac OS PowerPC antérieurs à Mac OS X. Avec quelques adaptations, les exécutables PEF peuvent tourner sur Mac OS X aussi bien que sur les systèmes anciens. Notez que des applications PEF sont parfois appelées des applications CFM-based parce que le Code Fragment Manager est le mécanisme utilisé pour la préparation et l’exécution de tels fichiers.

Des environnements plus anciens, comme MPW d’Apple, peuvent produire seulement des exécutables PEF; tandis que d’autres, comme Metrowerks CodeWarrior, permettent de construire des versions PEF ou Mach-O. L’outil que vous employerez dépend des plates-formes que vous visez.

Les tutoriels de cet article emploieront Project Builder et le Interface Builder, qui sont les outils de développement d’Apple utilisés pour la construction d’applications Mac OS X dites “Mach-O-based”. Ces deux outils ont été écrits en gardant Carbon en mémoire et ils sont livrés gratuitement avec tout système Mac OS X, en faisant des choix excellents pour de nouveaux développeurs.

Project Builder et Interface Builder travaillent en parfaite harmonie l’un avec l’autre pour rendre le développement des applications plus facile qu’il n’a jamais été :

  • Project Builder. L’environnement de développement principal; il vous permet de créer et d’assembler les composants de votre application. Étant un environnement de développement facile à utiliser, Project Builder vous offre des tonnes de fonctionnalités applicatives standard pour rien, comme le support de la gestion des événements basiques.
  • Interface Builder. Un outil WYSIWYG qui vous permet de composer très simplement et très intuitivement des interfaces utilisateur. Ces modèles d’interface sont stockés comme dans un fichier .nib, que votre application peut alors accèder pour créer ses fenêtres, menus et autres éléments.

Visite de l’usine Carbon

Parce que Carbon contient beaucoup, beaucoup d’interfaces de programmation, il peut tout à fait intimider un nouveau développeur. Bien que cet article fournisse un bon début, par la suite vous devrez commencer à chercher par vous même. Les interfaces que vous aurez besoin dépendent du type d’applications que vous voulez écrire, et comme c’est souvent le cas, certaines sont plus généralement employées que d’autres. Cette section classe les interfaces Carbon selon leur utilisation (du plus fondamental au plus ésotérique) et donne quelques informations utiles sur chacune d’entre elles. Pour en apprendre plus sur une interface particulière, vous pouvez employer la fonction d’Aide Carbon intégrée dans Project Builder (décrite plus loin dans cet article). Vous pouvez aussi consulter la documentation technique sur le site Web Apple Developer Connection.

Le Kit de Démarrage

Cette section couvre les interfaces qui seront très probablement appelées par une application Macintosh. Ces Gestionnaires et Services fournissent les fonctionnalités interface utilisateur de base aussi bien que des fonctionnalités fondamentales, comme la capacité à sauvegarder et imprimer des fichiers. Vous pouvez construire des applications Carbon de base mais entièrement fonctionnelles en employant les interfaces décrites ici.

NOTEZ : si Carbon était une interface de construction d’automobiles, les interfaces de Kit de Démarrage définiraient le moteur, les roues, les freins et d’autres composants essentiels, tout comme l’interface utilisateur (le tableau de bord, le volant), les pédales d’accélération et de freinage, …).

Les interfaces de la Boîte à Outils (ToolBox)

Les interfaces suivantes sont regroupées ensemble parce qu’elles travaillent généralement ensemble pour créer et gérer les interfaces utilisateur. Dans la plupart des cas, Interface Builder et l’interface des Services d’Interface Builder peuvent gérer la création et le contrôle de l’interface basique utilisateur. Cependant, pour accomplir des tâches plus compliquées, vous devrez appeler des fonctions complémentaires contenues dans l’une des interfaces de la “Human Interface ToolBox” :

  • Le Appearance Manager. Coordonne le look de l’interface humaine de Mac OS standard et permet l’adaptation d’éléments d’interface personnalisés. Le Appearance Manager offre un support sous-jacent de thèmes, qui permettent d’homogénéiser les objets d’interface humaine de votre application, y compris les icônes d’alertes, les objets de contrôle, les couleurs de fond, les dialogues, les menus et les fenêtres.
  • Le Control Manager. Vous permet de créer et de manipuler des objets de contrôle, qui sont les éléments d’interface utilisateur contenus dans une fenêtre. Les boutons, les ascenseurs et les sliders sont des exemples d’objets de contrôle.
  • Le Dialog Manager. Vous permet de créer et de manipuler les boites de dialogues, qui sont des fenêtres qui vous invitent à saisir une information ou à afficher une information. Bien que le Window Manager puisse gérer la plupart de ces fonctionnalités, le Dialog Manager est une interface plus simple pour la gestion de ce type spécifique de fenêtres.
  • Le Menu Manager. Vous permet de créer et de manipuler des menus.
  • Le Window Manager. Vous permet de créer et de manipuler des fenêtres, qui sont les moyens primaires d’interaction de l’utilisateur avec votre logiciel.
  • Les Services d’Interface Builder. Permet à votre code d’avoir accès aux éléments d’interface utilisateur créés avec Interface Builder qui sont stockés dans un fichier nib. Évidemment, si vous n’employez pas Interface Builder, vous n’aurez pas besoin de cette interface.

Aqua

Aqua n’est pas une interface, mais vous devez suivre les directives Aqua en concevant et disposant votre interface utilisateur. Alors que les interfaces de programmation Carbon sont assez flexibles pour vous laisser faire à peu près n’importe quoi avec votre interface utilisateur, cela ne signifie pas que vous devez le faire. De même que l’adhésion aux règles communes et aux coutumes permet de concevoir des volants et des tableaux de bord qui feront que votre conduite sera plaisante et aisée, le fait de suivre les directives Aqua fera que votre application apportera la meilleure expérience possible à vos utilisateurs.

Derrière le rideau

Les interfaces suivantes travaillent en coulisses, en effet, pour fournir les fonctionnalités basiques que vous êtes en droit d’attendre de la plupart des applications :

  • Le Carbon Event Manager. Contrôle le modèle événementiel des applications Macintosh. Notez que Carbon contient aussi un système de gestion d’événements plus anciens (simplement appelé Event Manager), qui est inclus seulement pour aider à la migration des applications anciennes vers Mac OS X.
  • Le Carbon Printing Manager. Vous permet d’imprimer à partir d’applications Macintosh.
  • Les Services de Navigation. Crée une interface utilisateur standard pour l’ouverture et la sauvegarde de documents.
  • Le Gestionnaire de fichiers. Vous permet de lire et d’écrire des données sur des médias de stockage (des disques durs, les Zip, …).
  • Les Bundle Services. Vous permet d’avoir accès aux données stockées dans un répertoire hiérarchique Bundle, ce qui est la méthode standard de packaging des applications Mac OS X.
  • Le Gestionnaire de Ressources. Vous permet d’avoir accès aux informations stockées, à l’ancien mode, dans une hiérarchie de type Bundle sous forme de ressource (c’est-à-dire dans un fichier de type “data fork” avec l’extension .rsrc). Le Manager de Ressources est complémentaire des Bundle Services car il permet d’accéder aux images, textes et autres ressources stockées dans un package.
  • Les Services de Chaîne de caractère. Permet la manipulation des chaînes de caractères Unicode.
  • Le Multilingual Text Engine (MLTE). Fournit l’affichage basique de textes et des fonctions de formatage. Parce qu’il est basé sur Unicode, MLTE peut facilement manipuler d’autres langues et d’autres systèmes d’écriture.
  • QuickDraw. L’interface de Carbon pour le dessin de graphisme 2D à l’écran.
  • Le Memory Manager. Vous permet d’allouer et de libérer la mémoire provisoire de votre application.

Le Pack d’Expansion

Cette section décrit les interfaces qui sont désirables, mais non nécessaires à la plupart des applications. Des applications commerciales fonctionnellement riches adoptent souvent un certain nombre de ces interfaces.

NOTEZ : en poursuivant la métaphore automobile, ces interfaces ajouteraient des particularités utiles qui peuvent être essentielles dans certains cas, comme la direction assistée, les essuie-glaces et la climatisation.

  • Le Scrap Manager. Permet à l’utilisateur de copier et de coller à partir du Presse-papiers.
  • Le Gestionnaire de Glissage (Drag Manager). Employé pour l’exécution de glisser-déposer entre applications. Par exemple, l’utilisateur peut choisir le texte dans une application et ensuite, plutôt que de faire un copier-coller, le glisser simplement vers la fenêtre d’une autre application.
  • Le Gestionnaire de Polices (Font Manager). Vous permet de manipuler les polices que vos applications utilisent pour afficher ou imprimer le texte. Par exemple, si vous voulez que votre application contienne un menu Polices, vous aurez probablement besoin du Font Manager.
  • Services d’Icône. Fournit une façon simplifiée de présenter des icônes dans votre application. Au lieu du stockage de chaque type d’icône dont vous avez besoin dans votre application, vous pouvez obtenir des icônes usuellement employées par les Services d’Icône. De ce fait, cela réduit au minimum le travail que vous devez faire et augmente l’efficacité du système.
  • Le Manager de Dossier. Vous permet de trouver, de créer et de manipuler autrement les dossiers.
  • Le Manager d’Alias. Vous permet de créer et d’interpréter des alias de fichiers et de dossiers. Un Alias est une petite “copie” d’une application, d’un dossier, ou d’un fichier qui pointe vers l’original.
  • L’Open Scripting Architecture. Décrit les interfaces qui permettent de contrôler ou d’automatiser les actions d’une ou plusieurs applications. Vous utilisez en partie le Manager d’Evénement d’Apple pour interpréter et réagir aux événements reçus d’autres applications et AppleScript, le langage de script, pour décrire quelle action entreprendre. Par exemple, si votre application était employée dans un flux de travail automatisé, où des applications multiples manipulent le même fichier chacun leur tour, vous devrez faire en sorte que votre application sache gérer le Manager d’Evénement d’Apple de manière à réagir aux commandes issues d’un script externe.

NOTEZ : le Manager d’Evénement d’Apple diffère du Manager d’Evénement Carbon. Bien qu’il y ait des points communs dans leurs fonctions, les événements Carbon sont généralement reçus de l’interface utilisateur ou du système d’exploitation, tandis que les événements Apple viennent de scripts ou d’autres applications.

  • Core Foundation. Une collection d’interfaces qui peuvent simplifier les besoins communs des applications. Les Bundle Services et les String Services (décris plus haut dans “le Kit de Démarrage”) sont des services appartenant aux Core Services. D’autres interfaces Core Services manipulent des modules d’extension, des préférences, et cetera. La liste complète des interfaces Core Services est la suivante :
    • Base Services
    • Bundle Services (package applicatif)
    • Collection Services
    • Plug-in Services (Modules d’extension)
    • Preferences Services
    • Propery List Services
    • String Services (chaînes de caractères)
    • URL Services
    • Utilities Services (Utilitaires)
    • XML Services
  • Texte QuickDraw. Vous permet de dessiner du texte simple avec plus de contrôle que MLTE peut vous en donner. Pour des manipulations de texte plus complexes, examinez les Apple Type Services for Unicode Imaging (ATSUI).
  • Le Gestalt Manager. Permet à votre application de déterminer une information spécifique au système ou à ses interfaces. Par exemple, vous pouvez appeler le Gestalt Manager pour déterminer quelle version d’une technologie particulière est installée. Ainsi vous évitez d’appeler des fonctions qui peuvent ne pas être disponibles sur un ordinateur donné.
  • Les Services de Multitraitement (Multiprocessing Services). Vous permet de créer des tâches d’exécution (thread) prévues de manière préemptive dans votre application. Si votre application doit exécuter plusieurs actions simultanément (comme le téléchargement de fichiers ou l’exécution de calculs de fond), vous devez considérer le recours aux Services de Multitraitement. Les tâches créées avec cette interface profiteront automatiquement des processeurs multiples, s’il y en a plusieurs.
  • Le Gestionnaire de Taches (Thread Manager). Vous permet de créer des tâches d’exécution (thread) prévues de manière coopérative dans votre application. Cette interface n’est en général pas aussi utile que les Services de Multitraitement. Cependant, si vous avez besoin de bien contrôler l’exécution de vos tâches, vous devrez considérer l’aide du Thread Manager.
  • Le Gestionnaire d’affichage (Display Manager). Permet de gérer des emplacements et des résolutions multiples de moniteur dans votre application. Si votre application a besoin du genre de contrôle que le Tableau de Bord Moniteurs des Préférences Système apporte aux utilisateurs, considérer alors l’adoption du Display Manager.

Interfaces Spéciales

Ce sont des interfaces plus ésotériques que généralement vous n’emploieriez pas, à moins que vous ne soyez intéressé par la création d’applications de type très spécifique. Certaines fournissent des fonctionnalités spécialisées, tandis que d’autres étendent des fonctionnalités de base (comme la manipulation de texte). Vous emploirez ces interfaces pour créer des applications très sophistiquées qui tirent pleinement avantage du logiciel système.

NOTEZ : Pour des automobiles, ces fonctionnalités seraient pour des types spécifiques de voitures : turbocharging et suspensions serrées pour voitures de sport, plateaux et systèmes de remorquage pour camions, sièges en cuir et suspensions hydroliques pour voitures de luxe, et cetera.

QuickTime

QuickTime est l’interface de programmation multimédia d’Apple. Vous employez QuickTime pour créer et jouer des films de type fichier ou en flux continu, des environnements de réalité virtuelle, des sons et des fichiers de musique. Les sites de documentation des développeurs Carbon classe QuickTime dans les catégories suivantes :

  • Gestionnaire de Compression d’Image
  • Traitement des médias (Media handlers)
  • Boîte à outils pour Film
  • Composants QuickTime
  • Couche de Médias QuickTime
  • Architecture de Musique QuickTime
  • Flux continus QuickTime (Streaming)
  • Réalité Virtuelle (QuickTime VR)
  • Gestionnaire de Son

Comme vous pouvez le voir, l’interface de programmation QuickTime est vaste et quelque peu intimidante. Cependant, un bon endroit pour en commencer l’étude réside dans le livre Discovering QuickTime, publié par Morgan-Kaufmann.

Gestion des couleurs, des images et de l’impression

Ces interfaces sont à destination des applications qui créent et manipulent des images, comme un programme de retoucher de photo :

  • Le Récolteur de couleurs (Color Picker Manager) vous permet de monter une interface utilisateur simple pour le choix des couleurs. Cela peut être utile pour des programmes de peinture ou pour toute autre application qui permet à l’utilisateur de personnaliser des couleurs.
  • ColorSync est une technologie Apple qui assure un calibrage cohérent des couleurs au travers de logiciels et de matériels différents. Par exemple, en employant ColorSync, les utilisateurs peuvent être sûrs que la nuance particulière du vert qu’ils visualisent sur leur moniteur sera aussi fidèle que possible à celle qu’ils veront sur leur brochure à la sortie de l’imprimerie.
  • Des utilitaires pour images (Picture Utilities) sont employés pour obtenir des informations sur une image graphique, comme les couleurs employées, sa résolution et n’importe quels commentaires qui peuvent être inclus.

Graphisme 3D

Pour le graphisme 3D de haute qualité, l’interface de choix est OpenGL. En réalité, c’est une interface standard de l’industrie et elle n’est pas incluse à Carbon, mais elle est entièrement compatible avec Carbon (assurez-vous simplement que vous faites bien un lien avec la structure OpenGL quand vous construisez votre application). Vous pouvez employer les fonctions de rendu 3D d’OpenGL pour tout, de l’imagerie médicale à la réalité virtuelle en passant par les jeux incroyablement photoréalistes.

HTML

Pour afficher du texte et des images en HTML, vous pouvez employer la Bibliothèque de rendu HTML (HTML Rendering Library). Cette interface vous permet essentiellement d’obtenir dans une fenêtre le rendu de textes et d’images comme si ils étaient affichés par un navigateur. Elle fournit le support d’éléments graphiques tels que comme les bordures et les barres de défilement, tout comme la navigation au moyen d’URL.

Le langage parlé

Ces interfaces permettent à votre application de prononcer du texte ou de reconnaître des paroles :

  • Le Gestionnaire de Reconnaissance Vocale (Speech Recognition Manager) permet à votre application de reconnaître des commandes parlées. Par exemple, vous pouvez naviguer entre des fenêtres, des fichiers ouverts, ou lancer des scripts seulement par la voix. Il peut être particulièrement utile d’activer par la voix des commandes qui exigeraient autrement de naviguer dans des menus profondément emboîtés ou dans des boites de dialogue multiples.
  • Le Gestionnaire de Synthèse Vocale (Speech Synthesis Manager) permet à votre application de dire des lignes de texte en employant un certain nombre de voix différentes. Notez que les interfaces de reconnaissance et de synthèse vocale emploient le même dictionnaire anglais, ce qui leur permet de travailler en coordination l’un avec l’autre. Par exemple, vous pourriez employer le Gestionnaire de Synthèse Vocale pour déterminer comment prononcer un mot pour faire en sorte que le Gestionnaire de Reconnaissance Vocale le reconnaîsse plus facilement.

Textes et services internationaux

La plupart de ces interfaces sont seulement à destination des développeurs écrivant des applications de textes intensifs ou ceux qui manipulent des codages multiples de textes. Pour la saisie et l’affichage basique de textes, le Moteur de Texte Multilingue (Multilingual Text Engine) fournit une interface beaucoup plus simple pour la plupart de ces fonctionnalités.

  • ATSUI est l’interface pour le dessin de texte Unicode. Il permet le contrôle précis de tous les aspects du texte, du kerning aux ligatures.
  • Linterface de lettres ATS définit les types de données employés par ATSUI et d’autres interfaces de texte.
  • Les utilitaires date, heure et unités de mesure contiennent des fonctions pour obtenir et manipuler la date, le temps, l’emplacement et d’autres valeurs qui peuvent devoir être localisées pour des pays ou régions différentes.
  • Le Gestionnaire de Dictionnaires fournit une interface simple pour avoir accès aux fichiers dictionnaire. Par exemple, si votre application contient un vérificateur d’orthographe, elle peutt employer cette interface pour rechercher des mots dans un fichier de type dictionnaire. De la même façon les méthodes de saisie de texte qui exigent de rechercher des mots dans un fichier peuvent aussi employer cette interface.
  • Les Ressources Internationales contiennent des structures et des constantes qui sont employées pour la localisation du texte. Dans la plupart des cas, vous ne devriez pas accéder vous-même cette interface vous-même, parce que d’autres interfaces texte y accéderont pour vous.
  • Le Gestionnaire de Services Textuels (Text Services Manager) fournit un appui aux méthodes de saisie de texte. Par exemple, certains textes non-occidentaux ne peuvent pas être tapés directement dans un document, ils doivent d’abord être saisis dans une deuxième fenêtre, en se servant de combinaisons multiples de touches.
  • FontSync permet de synchroniser les polices disponibles sur différents ordinateurs ou différentes imprimantes pour empêcher que la police ne fonctionne pas. Par exemple, deux polices sur deux ordinateurs différents peuvent avoir le même nom, mais ne pas être identiques. FontSync peut essayer alors de faire en sorte que la correspondance soit basées sur le contenu plutôt que le nom de la police, réduisant ainsi au minimum une possible désynchronisation du texte quand celui-ci est déplacé vers un autre ordinateur.
  • Le Gestionnaire d’Analyse Linguistique (Language Analysis Manager) permet à votre application de gérer des moteurs d’analyses linguistiques (stockés sous forme de modules d’extension). Ces moteurs sont typiquement employés avec des méthodes de saisie de texte pour isoler des mots ou des caractères significatifs. Par exemple, pour la saisie de textes japonais, vous pouvez employer un moteur d’analyse linguistique pour interpréter les combinaisons de touches entrées par l’utilisateur, de manière à afficher les caractères Kanji qui leur correspondent.
  • Le Gestionnaire de Scripts vous permet de manipuler des systèmes de script ou d’encodage correspondant à des versions plus anciennes de Mac OS, fournissant ainsi le support escompté pour la saisie et l’affichage de textes. Sous Mac OS X vous traiterez le texte sous le format Unicode, donc vous n’aurez probablement pas besoin de cette interface.
  • Le Gestionnaire de Conversion d’Encodage de Texte vous permet de passer d’un encodage de texte à un autre. Cette conversion peut être utile pour le texte provenant de ou à destination de l’Internet, où beaucoup d’encodages différents de texte existent. Par exemple, pour lire un texte en flux continu issu d’un réseau d’ordinateurs Windows, vous pouvez être amené à convertir son encodage de type Windows pour le rendre lisible par des ordinateurs Macintosh. De la même façon si vous avez des méthodes de saisie ou des systèmes de fichiers qui supportent seulement l’encodage des anciens Mac OS, vous pourrez être amené à employer le Convertisseur d’Encodage de Texte pour les convertir à Unicode.
  • Les Utilitaires Textuels vous permettent d’effectuer des manipulations de base sur des chaînes de caractères non-Unicode. Si Mac OS X est votre plate-forme primaire, vous emploierez probablement Unicode, ce qui signifie que vous devrez plutôt examiner les Utilitaires Unicode ou les Services Fondamentaux de Gestion des Chaînes de caractères (Core Foundation String Services) au lieu de cela.
  • Les Utilitaires Unicode vous permettent d’effectuer des manipulations de base sur des chaînes de caractères Unicode. Notez que les Services Fondamentaux de Gestion des Chaînes de caractères fournissent des fonctionnalités identiques et offrent plus de portabilité au travers des différents environnements d’exécution de Mac OS X.

Internet et gestion réseau

Si vos applications utilisent ou permettent l’accès à un réseau, vous devrez appeler les fonctions des gestionnaires ou services suivants
:

  • Internet Config, est employé pour avoir accès aux préférences centralisées de réseau Internet à partir d’un poste utilisateur. Par exemple, Internet Config stocke le choix de navigateur par défaut de l’utilisateur, si une autre application doit lancer un navigateur (quand une URL est cliquée), elle peut facilement déterminer lequel activer.
  • Open Transport est l’interface Carbon bas niveau de réseau. Typiquement vous avez besoin de cette interface seulement si vous mettez en oeuvre des protocoles de réseau (comme le TCP/IP) dans votre application ou votre pilote.
  • Le Gestionnaire de Localisation de Services Réseau (Network Services Location Manager), qui fournit une façon simple de trouver des services réseau sur un réseau local.
  • Le Gestionnaire d’Accès aux URL (URL Access Manager), qui fournit une interface simple pour le téléchargement ascendant et descendant de fichiers à partir d’une URL donnée.

Sécurité

Si vous voulez que votre application fournisse des mesures de sécurité disponibles sur Macintosh, vous devez considérer ces interfaces :

  • Les Services de Sécurité sont l’interface que vous employez pour ajouter telles ou telles fonctionnalités de sécurité comme la gestion des certificats et le chiffrage/décryptage à votre application.
  • Le Gestionnaire de Trousseau (Keychain Manager) gère les dépôts chiffrés des mots de passe de tout utilisateur. En employant le Keychain Manager, l’utilisateur n’a seulement qu’à se rappeller du mot de passe qui ouvre le trousseau.
    Une fois que l’on ouvre le trousseau, l’utilisateur peut avoir accès de manière transparente à tous les services ou applications dont les mots de passe y sont stockés. Si votre application invite l’utilisateur à saisir des mots de passe pour avoir accès à des services ou fonctions particulières, vous pouvez employer le Gestionnaire de Trousseau pour avoir accès ou stocker ces mots de passe dans le trousseau.

Triturage de bas niveau

Si votre application doit avoir accès ou contrôler des fonctionnalités de bas niveau spécifiques, vous devez considérer ces interfaces. Notez que, cependant, Mac OS X est conçu pour se protéger des travaux de bas niveau des applications. A cette fin, vous devez employer une de ces interfaces seulement si vous êtes sûrs d’avoir besoin d’une de ses fonctionnalités particulières :

  • Le Kit Entrée/Sortie (Kit I/O) est l’interface matériel de Mac OS X. Bien que non considérée comme faisant partie de l’interface de programmation Carbon, si vous écrivez du code de type pilote devant communiquer directement avec du matériel (comme une carte vidéo), vous devez employer le Kit I/O. La plupart des applications n’ont pas besoin de ce niveau de contrôle et ne doivent pas être à tout point de vue dépendant du matériel.
  • Le Gestionnaire d’Energie (Power Manager) vous permet de contrôler les particularités de la gestion de l’énergie. Par exemple, un programme d’économiseur d’écran pourrait employer cette interface pour mettre le PowerBook en sommeil après un temps donné. D’autres applications peuvent vouloir contrôler le statut de la batterie du PowerBook.
  • Les utilitaires de Gestion Mémoire sont employés pour des opérations spéciales de bas niveau sur la mémoire, comme l’accès direct à la mémoire (DMA) et celles qui ont lieu au niveau des interruptions. Beaucoup de fonctions de cette interface ne sont même pas supportées par Carbon et il est peu probable que vous deviez employer celles qui le sont.

Interfaces Utilitaires

Cette section couvre les interfaces utilitaires qui peuvent être utiles selon l’application. Ces gestionnaires et services ne se rapprochent
d’aucune technologie ou fonctionnalité particulière :

NOTEZ : si Carbon était conçu pour des voitures, ces interfaces ajouteraient des fonctionnalités probablement utiles, comme les essuie-glaces de phare, les reposoirs à tasse, l’ABS et les unités GPS.

  • Gestionnaire d’Erreur (Error Handler). Vous permet de capter et d’afficher certaines erreurs système. Il est surtout employé par le logiciel système et vous ne devrez probablement jamais l’employer.
  • Gestionnaire de Temps. Vous de régler des minuteurs pour exécuter des actions périodiques ou activer des actions à un instant particulier. Bien que les minuteurs du Getsionnaire d’Evénement Carbon puissent aussi fournir de genre de fonctionnalité, le Gestionnaire de Temps est utile au cas où vous auriez besoin que quelque chose arrive en dehors de vos boucles d’événement habituelles.
  • Finder. Cette interface contient un certain nombre de structures qui sont utiles pour passer des informations au Finder.
  • Services de Mise au Point de Programme (Debugger Services). Contient les fonctions qui peuvent vous aider dans la mise au point de votre application. Dans la plupart des cas, cependant, vous devez commencer par les tests de mise au point disponibles dans Project Builder avant d’utiliser cette interface.
  • Utilitaires Mathématiques et Logiques. Exactement ce que vous pensez qu’ils sont.
  • Utilitaires de Chaînes de Caractères Pascal. Plus ou moins ce que vous pensez qu’ils sont. Dans la plupart des cas vous emploierez des chaînes de caractères Unicode Mac OS X, mais si vous devez manipuler des chaînes de caractères Pascal, vous savez quoi examiner.

Interfaces de compatibilité

Cette section couvre les interfaces Carbon dont l’intérêt est surtout historique. Ces interfaces ont été incluses pour aider les développeurs à porter sur Mac OS X les vieilles portions du code de Mac OS. Pour les nouveaux développeurs, ces interfaces peuvent être utiles seulement pour garder une compatibilité avec les différentes évolutions du logiciel système du Macintosh. Dans la plupart des cas, les fonctionnalités de ces gestionnaires sont couvertes par une interface plus récente.

NOTEZ : si Carbon était conçu pour des voitures, ces interfaces ajouteraient des fonctionnalités anciennes comme les enjoliveurs, les cendriers, les carburateurs et les pneus à paroi blanche.

  • Gestionnaire d’Evénement (Event Manager). A l’origine écrit pour gérer l’ancien modèle événementiel multitache coopératif. Le Gestionnaire d’Evénement Carbon est plus efficace et plus facile à mettre en oeuvre.
  • Gestionnaire de Processus (Process Manager). Aussi écrit pour l’ancien environnement multitache coopératif.
  • Gestionnaire de Fragment de Code (Code Fragment Manager). Ecrit pour permettre au système et aux applications de préparer et exécuter les fichiers binaires au PEF (Preferred Executable Format), le format natif des fichiers exécutables des ordinateurs Macintosh PowerPC. Tandis que Mac OS X supportent les fichiers binaires PEF, le format natif des fichiers exécutables est appelé Mach-O.
  • Gestionnaire de Composant (Component Manager). Les programmes Mac OS les plus anciens chargeaient souvent des modules d’extension au format spécial en employant le Gestionnaire de Composant. Avec Mac OS X, vous devez employer l’interface des Services de Module d’Extension (Plug-In Services) des Fondations du Noyau (Core Foundation).
  • Gestionnaire d’Ensembles (Collection Manager). Cette interface vous permet de créer des types de données abstraits pour y
    stocker ensemble des informations liées. Avec Mac OS X, vous devez employer les interfaces des Services d’Ensembles des Fondations du Noyau.
  • Gestionnaire de Périphériques (Device Manager). Les programmes Mac OS les plus anciens avaient accès au matériel
    par le biais du Gestionnaire de Périphériques. Avec Mac OS X, vous devez employer le Kit d’Entrée/Sortie à la place.
  • Gestionnaire de Liste (List Manager). Autrefois employé pour créer des listes de données affichées en colonnes (semblables
    à la présentation en liste des fenêtres du Finder), vous devez maintenant employer les fonctions du navigateur de données et les nouveaux types de données qui ont été ajoutés au Gestionnaire de Contrôle (Control Manager).
  • TextEdit. Une interface pour manipuler du texte basique. Son remplaçant, le Moteur de Texte Multilingue (Multilingual Text
    Engine), offre des fonctionnalités complémentaires significatives, comme le support d’Unicode.
  • Gestionnaire de Palette (Palette Manager). Cette interface vous permet de spécifier le contenu des palettes de couleurs
    employées pour le rendu d’une image. Par exemple, si une image contient surtout des couleurs sombres, des gris et des bleus, vous pourriez indexer la palette pour qu’elle n’emploie que ces couleurs, éliminant celles inutiles (les jaunes et le rouge vif). L’utilisation d’un choix fixé de couleurs vous permet de réduire la taille de l’image, parce que peu d’informations sont
    nécessaires à son rendu. Le Gestionnaire de Palette était utile aux temps où, en raison des contraintes de mémoire, beaucoup d’ordinateurs étaint limités par un certain nombre de couleurs.
  • Gestionnaire de Notification (Notification Manager). Cette interface permettait aux applications d’arrière-plan de notifier quelque chose à l’utilisateur (par exemple, après la fin d’un long calcul). Parce que le Gestionnaire d’Evénement Carbon gère des événements qui couvrent la même fonctionnalité, utilisez plutôt ce dernier.
  • Gestionnaire de Mode Mixte (Mixed Mode Manager). Al’origine conçu pour permettre au code de PowerPC d’appeler du code 68Ko émulé (et vice versa), le Gestionnaire de Mode Mixte est maintenant employé pour permettre au code PEF basé sur CFM (CFM-Based) d’appeler du code Mach-O natif Mac OS X et vice versa. Du fait que vous construisez déjà des applications basée sur Mach-O avec Project Builder, vous n’avez plus besoin de cette interface.
  • Getsionnaire d’Accès à la Mémoire Basse (Low Memory Accessors). Ces fonctions vous permettaient d’avoir accès à des informations système utiles (comme l’emplacement de la souris) stockées dans des variables globales de “la mémoire basse.” Cette pratique d’accès à la mémoire basse était déjà dangereuse à l’époque et certainement non suggérée aujourd’hui. Dans presque tous les cas, des fonctions plus sûres existent dans d’autres interfaces pour obtenir la même information.
  • Gestionnaire SCSI (SCSI Manager). A l’origine écrit pour communiquer avec des périphériques SCSI. Avec Mac OS X vous devez employer le Kit d’Entrée/Sortie à la place.

Récapitulatif

Nous avons présenté Carbon, l’interface programmation en C qui vous permet de profiter des fonctionnalités de Mac OS X, comme le multitache préemptif et la mémoire protégée. Carbon est une synthèse des technologies anciennes et récentes de Mac OS. Bien qu’il y ait beaucoup d’interfaces dans Carbon, dans la plupart des cas seul une petite partie sera essentielles pour la plupart des applications. D’autres interfaces peuvent être utiles pour des besoins spécifiques ou pour garantir le portage d’applications anciennes maintenues à des fins de compatibilité. Parmis les nombreux environnements de développement disponibles pour construire des applications Carbon, notre choix se portera sur Project Builder et Interface Builder, conçus spécifiquement pour la réalisation d’applications Mac OS X.

Ensuite, nous concevrons une application, un guide de voyage vers la lune, que nous emploierons pour illustrer les principaux concepts et méthodes de programmation de Carbon.

Texte original en anglais sur O’Reilly : Learning Carbon - Chapter 1

Tiré du livre “Learning Carbon” par Apple Computer, Inc.

Thierry Carbon ,

  1. Pas encore de commentaire
  1. Pas encore de trackbacks
S'abonner aux commentaires de cet article