Carbone (api)

Le carbone est le le procédural de s d'Apple Inc. classique 'api pour le du système d'exploitation de Macintosh , qui permet bon un degré de compatibilité vers l'avant et ascendante entre le code source écrit à la course sur le plus ancien et maintenant daté OS (version de Mac de 8.1 et plus tard), et le Mac plus nouveau de OS x . Il est l'un de quatre api à la façon des indigènes disponibles pour OS X de Mac ; les autres sont le cacao , le POSIX avec le système de fenêtre du X, et le Java . Le carbone n'est pas entièrement compatible avec des programmes 64-bit du sous le dernier OS X.

Vue d'ensemble

Les api de carbone sont édités et accédés sous forme de dossiers d'en-tête de du C et de bibliothèques dynamiquement liables . Dans le Mac de l'OS x le , beaucoup de fonctionnalité est contenu dans le ApplicationServices. Dans OS classique de Mac de , la plupart des fonctions sont dans une bibliothèque simple appelée le CarbonLib . Ces différentes réalisations des api sont interchangeables de la perspective du exécutable. Ceci permet un programme qui se conforme aux spécifications de carbone pour fonctionner à la façon des indigènes sur les deux logiciels d'exploitation. Cependant, si une application emploie un simple pas de fonction en carbone, la compatibilité avec OS X de Mac exige l'environnement classique .

Les api de carbone ont été conçus pour inclure l'autant de des api plus anciens de la boîte à outils comme possible, pour permettre la mise en communication facile de la plupart de code de legs de à OS X. Une telle mise en communication a été connue comme carbonisation de . Le carbone a également ajouté la nouvelle fonctionnalité et les nouvelles abstractions. Précédemment, beaucoup de structures de données de l'OS ont été exposées et manoeuvrées directement par le programme. En carbone, la plupart des telles structures sont devenues entièrement le opaque, et beaucoup de nouveaux api ont été ajoutés pour leur accéder. Ceci décapant encouragé et code moins sujet aux erreurs, et fait lui plus facile pour Apple de modifier le du système d'exploitation. Le carbone a enlevé quelques fonctions qui ont été spécifiquement attachées à l'OS plus ancien de Mac, et a enlevé quelques technologies désuètes tout à fait. La compatibilité ascendante est demeurée un foyer tant que OS 9 de Mac de a été développé, car les mises à jour postérieures telles que 9.2 étaient en grande partie d'améliorer le soutien d'un plus nouveau logiciel. Cependant, peu de logiciel de carbone demeure aujourd'hui compatible avec OS 9 de Mac, car l'interface a continué à évoluer. Le carbone n'a pas été prévu pour garantir la compatibilité ascendante. Si un programmeur désire la compatibilité avec OS 9.1 de Mac, ils doivent l'examiner et corriger avec OS 9.1 de Mac spécifiquement.2 de Mac, CarbonLib s'est graduellement transformé d'une adaptation de QuickTime pour l'interface utilisateurs de Windows api en la base pour une grande partie du développement postérieur d'OS de Mac de classique.

Le carbone est parfois vu comme technologie transitoire ou de legs. C'est incorrect, et il est fallacieux de le décrire comme technologie intrinsèquement. Le carbone est un ensemble d'api d'OS X de Mac d'application-niveau pour le langage de programmation de C. Ils sont l'alternative la plus efficace quand la fonctionnalité du système d'exploitation fondamentale est également mise en application dans le C. Ils sont également les plus souples, accessibles du C , du C++ , du Pascal , de l'ADA , ou de n'importe quelle autre langue avec les en-têtes appropriés d'interface. Une approche de plus haut niveau peut être adoptée avec le carbone en employant un cadre d'application établi là-dessus, par exemple MacApp , centrale électrique de Metrowerks de ou MacZoop . Beaucoup de parties du cacao api mettent en application de même le carbone pour le Objectif-c. En outre, beaucoup d'api de carbone permettent d'accéder langage C à la fonctionnalité mise en application dans Objectif-c. Généralement il est inefficace que un programmeur soit excessivement concerné par l'exécution du système d'exploitation fondamentale.

Au WWDC 2007 , Apple a indiqué qu'il ne sera pas possible de compiler des apps de carbone car code 64-bit du pour le léopard , contrairement aux rapports précédents. On s'attend à ce que quelques parties plus basses de carbone, telles que le gestionnaire, soient disponibles dans 64 bits.

Architecture

Le carbone descend de la boîte à outils , et en soi, se compose de " ; Managers" ;. Chaque directeur est un api fonctionnel-connexe, définissant des ensembles de structures et de fonctions de données pour les manoeuvrer. Les directeurs sont souvent interdépendants ou posés.

De plus nouvelles parties de carbone tendent à être beaucoup plus orientées objectivement dans leur conception, la plupart d'entre eux ont basé sur la base de noyau de . Quelques directeurs, tels que le directeur de HIView (un superjeu du directeur de commande), sont mis en application dans le C++ , mais le carbone reste un C api.

Quelques exemples des directeurs de carbone :
&mdash de gestionnaire de

; contrôle l'accès au système de fichiers, à fermer s'ouvrante, à lire et à écrire des dossiers.
&mdash de directeur de ressource ; contrôle l'accès aux ressources, qui sont les morceaux prédéfinis des données qu'un programme peut exiger. Gestionnaire d'appels pour lire et écrire des ressources des fichiers-disques. Les exemples des ressources incluent des icônes, des bruits, des images, des calibres pour des gadgets, etc.
&mdash de directeur de police ; contrôle les polices désapprouvées depuis le Mac de OS x v10.4 parce que ce fait partie de QuickDraw en faveur de type les services (ATS) d'Apple de .
QuickDraw — 2D primitives graphiques graphiques. Désapprouvé depuis le Mac de OS x v10.4 en faveur du quartz 2D.
Directeur d'événement de carbone < ! -- Ne pas être confondu avec le directeur d'événement --> &mdash ; convertis utilisateur et activité de système dans les événements aux lesquels le code peut reconnaître et répondre.
&mdash de HIObject ; un api orienté objectivement complètement nouvel qui apporte au carbone un modèle d'OO pour construire GUIs. C'est disponible dans le Mac de OS x v10.2 ou plus tard, et donne à des programmeurs de carbone certains des outils que les réalisateurs de cacao ont longtemps été familiarisés avec. Commençant par le Mac de l'OS x le v10.2 , HIObject est la classe basse pour tous les éléments de GUI en carbone. HIView est soutenu par le constructeur , une partie d'interface de d'outils du réalisateur d'Apple. Traditionnellement des architectures de GUI de cette sorte ont été laissées aux cadres de tiers application pour fournir. Commençant par le Mac l'OS x les v10.4, HIObjects sont NSObjects et héritent de la capacité d'être fabriqué en série dans des trains de données de données pour le transport ou économiser au disque.
&mdash de HITheme ; utilisations QuickDraw et quartz de rendre les éléments graphiques de l'interface utilisateurs (GUI) à l'écran. HITheme a été présenté dans le Mac de OS x v10.3 , et le directeur d'aspect est une couche de compatibilité sur HITheme depuis cette version.
&mdash de directeur de HIView ; contrôle la création, le schéma, le frapper-essai, et la manipulation des commandes. Depuis le Mac l'OS x les v10.2, toutes les commandes sont HIViews. Dans le Mac l'OS x le v10.4, le directeur de commande ont été retitrés directeur de HIView.
&mdash de logiciel de gestion de fenêtres ; contrôle la création, le positionnement, la mise à jour, et la manipulation des fenêtres. Depuis le Mac l'OS x les v10.2, fenêtres ont une racine HIView.
&mdash de directeur de menu ; contrôle la création, le choix, et la manipulation des menus. Depuis le Mac l'OS x les v10.2, menus sont HIObjects. Depuis le Mac l'OS x le v10.3, contenu de menu peuvent être dessinés using HIViews, et tous les menus standard emploient HIViews pour dessiner.

Manipulation d'événement

Le directeur de l'événement de la boîte à outils a à l'origine employé un modèle du vote pour la conception d'application. La boucle principale d'événement de , qui est dans l'application, demande au directeur d'événement un événement. S'il y a un événement dans la file d'attente, le directeur d'événement la passe de nouveau à l'application, où elle est manipulée ; autrement, l'un ou l'autre le " d'appel ; blocks" ; pour un intervalle spécifique, ou lui retourne immédiatement.

Le mécanisme de vote travaillé bien dans l'OS original de Mac, quand quelqu'application ait fonctionné a été garanti d'être le fonctionnement d'application du seulement . Dans un le de préemption-programmé de du système d'exploitation aiment OS X de Mac, cependant, c'est inefficace ; la boucle serrée d'événement de signifie que l'application est " ; occupé-attendant le " de ; , exécutant sa boucle quand il ne devrait exécuter rien du tout.

Le carbone présente un système de rechange, appelé le directeur d'événement de carbone (le directeur original d'événement existe toujours, bien qu'il soit désapprouvé). Le directeur d'événement de carbone fournit la boucle d'événement pour le réalisateur (basé sur le CFRunLoop de la base de noyau dans l'exécution courante) ; le lotisseur a installé des traiteurs d'événement et écrit la boucle d'événement dans sa fonction principale, et attend le directeur d'événement de carbone pour lui apporter les événements.

Cependant, un tour facile pour que le code de legs tire profit de l'approche plus nouvelle sans changements importants à son code source est simplement de placer le paramètre de sommeil passé au WaitNextEvent très à un grand valeur-sur OS X, ceci met le fil pour dormir toutes les fois qu'il n'y a rien à faire, et renvoie seulement un événement quand il y a d'un à traiter. De cette façon, le modèle de vote est rapidement inversé pour devenir équivalent au modèle de rappel de service, avec l'application exécutant son propre événement expédiant de la façon originale.

Temporisateurs

Dans l'OS classique de Mac, il n'y avait aucun soutien du système d'exploitation des temporisateurs de niveau d'application (le directeur plus bas de temps était disponible, mais était essentiellement un service interrompre-basé). Des temporisateurs ont été habituellement laissés aux créateurs d'application à l'instrument, et ceci a été habituellement fait en comptant le temps écoulé pendant l'événement du ralenti de - c., un événement qui a été retourné par le WaitNextEvent quand aucun autre événement n'était disponible. Pour que de tels temporisateurs aient la résolution raisonnable, les réalisateurs n'ont pas pu se permettre WNE pour retarder trop longtemps, et " tellement bas ; sleep" ; des paramètres ont été habituellement placés. Sur OS X, ceci a comme conséquence le comportement fortement inefficace, puisque le fil ne dormira pas pour très longtemps, au lieu de cela se réveillant à plusieurs reprises pour renvoyer ces événements à vide. Apple a ajouté l'appui de temporisateur au carbone pour aborder ce problème - en mettant en application des temporisateurs en dehors de la boucle principale de l'application, une efficacité beaucoup plus grande peut résulter. Selon la conception d'application, la conversion du code pour employer l'approche moderne peut être franche.

Random links:Vertu Epistemic | Bâti Constance | PLC de futur | Jimmy Mulville | Royton | Carbón_(API)