Carbon

FONT SIZE:
fontsize_dec
fontsize_inc
Maj 14, 2016 Vagn Ahm c 0 0

Carbon er en af ​​Apples C-baseret program programming interfaces til Macintosh-operativsystemet. Carbon forudsat en god grad af bagudkompatibilitet for programmer, der modtog de nu forældede Mac OS 8 og 9. Udviklere kan bruge Carbon API'er til havn deres "klassiske" Mac-software til Mac OS X-platform med langt mindre indsats end en havn til helt andet Cocoa, som opstod i OpenStep.

Carbon var en vigtig del af Apples strategi for at bringe Mac OS X på markedet, der tilbyder en vej til hurtig portering af eksisterende softwareapplikationer. Da markedet i stigende grad er flyttet til de Cocoa-baserede rammer, især efter udgivelsen af ​​iOS, blev behovet for en portering bibliotek fortyndet. Apple har ikke oprette en 64-bit version af Carbon mens opdatere deres andre rammer i 2007-tidsramme, og til sidst frarådet hele systemet i OS X 10.8, som blev udgivet den 24. juli 2012.

Historie

Classic Mac OS programmering

Den originale Mac OS brugte Object Pascal som sit primære udviklingsplatform, og API'er var stærkt baseret på Pascals call semantik. En stor del af Macintosh Toolbox bestod af procedurekald, der passerer informationer frem og tilbage mellem API og programmet ved hjælp af forskellige datastrukturer baseret på Pascals variant record koncept.

Over tid, en række objektbiblioteker udviklet sig på Mac, især MacApp og Think Class Library i Pascal, og nyere versioner af MacApp og CodeWarrior s motor i C ++. I midten af ​​1990'erne blev de fleste Mac-software skrevet i C ++ hjælp CodeWarrior.

Rhapsody

Med købet af NeXT i slutningen af ​​1996, Apple udviklet et nyt operativsystem strategi i vid udstrækning baseret på den eksisterende OpenStep platform. Den nye Rhapsody var relativt enkel, det beholdt de fleste af OpenStep eksisterende objektbiblioteker under navnet "Gul Box", porteret OpenStep eksisterende GUI at gøre det ser mere Mac-lignende og mindre NeXT-lignende, porteret flere store API'er fra Mac OS til Rhapsody underliggende Unix-lignende system, og tilføjede en emulator kendt som "blå boks", der kørte eksisterende Mac OS-software.

Når denne plan blev afsløret på Worldwide Developers Conference i 1997 var der nogle push-back fra de eksisterende Mac OS udviklere, der var ked af, at deres kode baser effektivt ville blive låst fast i en emulator, der var næppe nogensinde blive opdateret. De tog til at kalde blå boks på "feltet". Større udviklere som Microsoft og Adobe stejlede direkte, og nægtede at overveje portering til OpenStep, som var så forskellig fra den eksisterende Mac OS, der var lidt eller ingen bærbarhed.

Apple tog disse bekymringer til hjerte. Når Steve Jobs annoncerede denne ændring i retning på WWDC 1998 udtalte han, at "hvad udviklere virkelig ønskede var en moderne version af Mac OS, og Apple vil levere det". Erklæringen blev mødt med tordnende bifald. Det oprindelige Rhapsody koncept blev til sidst løsladt i 1999 som Mac OS X Server 1.0, den eneste udgivelsen af ​​sin type.

Kakao og Carbon

For at kunne tilbyde et reelt og godt understøttet opgradering sti for eksisterende Mac OS kode baser, Apple introducerede Carbon-systemet. Carbon består af mange biblioteker og funktioner, der tilbyder en Mac-lignende API, men kører på toppen af ​​underliggende Unix-lignende OS, snarere end en kopi af Mac OS kører i emulering. Carbon bibliotekerne er flittigt ryddet op, moderniseret og bedre "beskyttet". Mens Mac OS var fyldt med API'er, der delte hukommelse til at sende data under Carbon alle denne adgang blev re-implementeres ved hjælp af accessor subrutiner på uigennemsigtige datatyper. Dette tillod Carbon at støtte ægte multitasking og beskyttelse hukommelse, funktioner Mac-udviklere havde været anmoder i et årti. Andre ændringer fra allerede eksisterende API fjernet funktioner, som var begrebsmæssigt uforeneligt med Mac OS X, eller blot forældet. For eksempel kunne applikationer ikke længere installere interrupt handlere eller enhedsdrivere.

For at støtte Carbon, hele Rhapsody model af OS ændret. Ud fra følgende betragtninger Rhapsody ville reelt være OpenStep med en emulator, under det nye system både OpenStep og Carbon ville om muligt deler fælles kode. For at gøre dette, mange af de nyttige stumper af kode fra de lavere-niveauer i OpenStep system kaldet Foundation, blev re-implementeret i en ren-C form. Denne kode blev kendt som Core Foundation, eller CF for korte. En version af den gule boks porteret at kalde CF blev den nye Kakao, og Mac-lignende opkald af Carbon også kaldet de samme funktioner. Under det nye system, Carbon og Cocoa var jævnaldrende. Denne konvertering normalt ville have bremset udførelsen af ​​kakao som objekt metoder kaldes ind i de underliggende C-biblioteker, men Apple brugt en teknik de kaldte gratis bridging at reducere denne påvirkning.

Som en del af denne konvertering, Apple også porteret den grafikmotor fra licens-behæftet Display PostScript til licensfri Quartz. Quartz forudsat indfødte opkald, der kunne bruges fra enten Carbon eller kakao, samt tilbyder Java 2D-lignende grænseflader så godt. Den underliggende operativsystem selv var yderligere isoleret og udgivet som Darwin.

Frigivelse og evolution

Carbon blev indført i ufuldstændig form, i 2000, som et delt bibliotek bagudkompatibel med 1997 Mac OS 8.1. Denne version tillod udviklere til havn deres kode til Carbon uden at miste evnen til disse programmer til at køre på eksisterende Mac OS maskiner. Portering til Carbon blev kendt som "forkulning". Officiel Mac OS X-understøttelse ankom i 2001 med udgivelsen af ​​Mac OS X v10.0, den første offentlige version af den nye OS. Carbon var meget udbredt i de tidlige versioner af Mac OS X ved næsten alle større softwarehuse, selv af Apple. Finder, for eksempel, forblev en Carbon ansøgning om mange år, endelig portering til Cocoa med udgivelsen af ​​Mac OS 10.6 i 2009.

Overgangen til 64-bit Macintosh-programmer begynder med Mac OS X v10.5, udgivet 26 Oktober 2007, bragte de første store begrænsninger for Carbon. Apple yder ikke kompatibilitet mellem Macintosh grafiske brugergrænseflade og programmeringssproget C i 64-bit miljø, i stedet kræver brug af Objective-C dialekt med Kakao API. Mange kommentarer tog dette til at være det første tegn på Carbons eventuel forsvinden, en position, der blev re-håndhævet, når Apple udtalte ingen nye væsentlige tilføjelser vil blive føjet til Carbon-systemet.

Overgang til Cocoa

På trods af de påståede fordele ved Cocoa, behovet for at omskrive store mængder af gamle kode bremset overgangen for Carbon-baserede applikationer, berømt med Adobe Photoshop, som i sidste ende blev opdateret til Cocoa i april 2010. Dette udvides til også at Apples egne flagskib softwarepakker, som iTunes og Final Cut Pro forblev skrevet i Carbon i mange år. Både iTunes og Final Cut Pro X er siden blevet løsladt i Cocoa versioner.

Finder, filhåndteringen i Mac OS X, kun blev porteret til Cocoa i 2009 med udgivelsen af ​​Mac OS X Snow Leopard.

Afskrivninger

I 2012, med udgivelsen af ​​OS X 10.8 Mountain Lion, var de fleste Carbon API'er betragtet forældet. API'erne er stadig tilgængelige for udviklere, og alle Carbon applikationer vil køre, men API'er vil ikke længere blive opdateret. Brugere har rapporteret problemer med at køre kulstof apps på OSX 10.9 og 10.10, såsom Wolfenstein Enemy Territory 2.60

Arkitektur

Carbon nedstammer fra værktøjskassen, og som sådan, er sammensat af "Managers". Hver Manager er en funktionelt relateret API, der definerer sæt datastrukturer og funktioner til at manipulere dem. Ledere er ofte indbyrdes afhængige eller lagdelt. Carbon består af en bred vifte af funktioner til styring af filer, hukommelse, data, brugergrænsefladen, og andre systemtjenester. Det gennemføres som enhver anden API: i Mac OS X, det er spredt over flere rammer, hovedsagelig ,, og og i ældre Mac OS, det er bosat i en enkelt delt bibliotek navngivet.

Som en samlebetegnelse, der omfatter alle C-sprog API procedurer adgang Mac-funktionalitet, er Carbon ikke designet som et diskret system. Tværtimod, det åbner næsten alle funktionerne i Mac OS X til udviklere, der ikke kender Objective-C-sprog kræves til stort set svarer Cocoa API.

Carbon er kompatibel med alle de mange eksekverbare formater til PowerPC Mac OS. Binær kompatibilitet mellem Mac OS X og tidligere versioner kræver brug af en Preferred Eksekverbar Format fil, som Apple aldrig støttet i deres Xcode IDE.

Nyere dele af Carbon tendens til at være langt mere objektorienteret i deres opfattelse, de fleste af dem baseret på Core Foundation. Nogle ledere, såsom HIView manager, er implementeret i C ++, men Carbon stadig et C-API.

Nogle eksempler på Carbon Managers:

  • File Manager styrer adgang til filsystemet, åbne lukning, læse og skrive filer.
  • Resource Manager administrerer adgang til ressourcer, som er foruddefinerede bidder af data et program kan kræve. Opkald File Manager til at læse og skrive ressourcer fra disk filer. Eksempler på ressourcer omfatter ikoner, lyde, billeder, skabeloner til widgets mv
  • Font Manager håndterer skrifttyper. Forældet siden Mac OS X v10.4, til fordel for Apple Type Services.
  • QuickDraw 2D grafik primitiver. Forældet siden Mac OS X v10.4, til fordel for Quartz 2D.
  • Carbon Event Manager konverterer bruger og systemet aktivitet i begivenheder, kode kan genkende og reagere på.
  • HIObject en helt ny objektorienteret API, der bringer til Carbon et OO model for opbygning af GUI. Denne funktion er tilgængelig i Mac OS X v10.2 eller nyere, og giver Carbon programmører nogle af de værktøjer, Cocoa udviklere har længe været bekendt med. Startende med Mac OS X v10.2, HIObject er base klasse for alle GUI-elementer i Carbon. HIView er støttet af Interface Builder, en del af Apples udviklingsværktøjer. Traditionelt GUI arkitekturer af denne art har været overladt til tredjepartsprogram rammer for at levere. Startende med Mac OS X v10.4, HIObjects er NSObjects og arve evnen til at blive føljeton i datastrømme til transport eller lagring til disk.
  • HITheme bruger QuickDraw og Quartz at gøre grafiske brugergrænseflade elementer på skærmen. HITheme blev introduceret i Mac OS X v10.3, og udseende Manager er en kompatibilitet lag oven på HITheme siden denne version.
  • HIView Manager styrer skabelse, tegning, hit-test, og manipulation af kontroller. Da Mac OS X v10.2, alle kontroller er HIViews. I Mac OS X v10.4, blev Control Manager omdøbt HIView Manager.
  • Window Manager håndterer skabelse, positionering, opdatering og manipulation af vinduer. Da Mac OS X v10.2, vinduer har en rod HIView.
  • Menu Manager styrer skabelse, udvælgelse, og manipulation af menuer. Da Mac OS X v10.2, menuer er HIObjects. Da Mac OS X v10.3, kan menuen indhold drages hjælp HIViews, og alle standard menuer bruger HIViews at tegne.

Håndtering begivenhed

Mac Toolboxens Event Manager oprindeligt brugt en polling model til anvendelse design. Ansøgningen vigtigste begivenhed loop anmoder Event Manager til et arrangement ved hjælp GetNextEvent. Hvis der er en begivenhed i køen, Event manager sender det tilbage til programmet, hvor det håndteres, ellers returnerer øjeblikkeligt. Denne adfærd kaldes "optaget-venter", kører begivenheden loop unødigt. Optaget-ventetid reducerer mængden af ​​CPU-tid til rådighed til andre programmer og nedsætter batteriets strøm på bærbare computere. De klassiske Event Manager stammer fra den oprindelige Mac OS i 1984, da uanset ansøgning kørte var garanteret at være den eneste program kørende, og hvor strømstyring var ikke en bekymring.

Med fremkomsten af ​​MultiFinder og evnen til at køre mere end ét program samtidig kom en ny Event Manager opkald, WaitNextEvent, som giver et program til at angive en søvn interval. En let trick for gamle kode til at vedtage en mere effektiv model uden større ændringer i sin kildekode er simpelthen at indstille sleep parameter videre til WaitNextEvent til en meget stor værdi på OS X, dette sætter tråden til at sove, når der er noget at gøre og returnerer kun en aktivitet, når der er én til at behandle. På denne måde er polling modellen hurtigt vendt til at blive svarer til tilbagekald model med anvendelse udføre sin egen begivenhed ekspedition i den oprindelige måde. Der er smuthuller, selv om. For én, arven værktøjskasse kalder ModalDialog, for eksempel, kalder den ældre GetNextEvent funktionen internt, hvilket resulterer i polling i en stram løkke uden at blokere.

Carbon introducerer en udskiftning system, kaldet Carbon Event Manager .. Carbon Event Manager giver begivenheden loop for udvikleren; udvikleren opstiller hændelseshandlere og kommer ind i begivenheden loop i hovedfunktion, og venter på Carbon Event Manager at afsende begivenheder til ansøgningen.

Timere

I den klassiske Mac OS, var der ingen operativsystem støtte til ansøgning niveau timere. Timere blev normalt overladt til applikationsudviklere at implementere, og dette blev normalt gøres ved at tælle forløbne tid i løbet af inaktiv begivenhed - altså en begivenhed, der blev returneret af WaitNextEvent når enhver anden begivenhed var ikke tilgængelig. For sådanne timere til at have en rimelig opløsning, kunne udviklerne ikke råd WaitNextEvent at forsinke for længe, ​​og så lav "søvn" parametre blev normalt indstillet. Dette resulterer i meget ineffektiv planlægning adfærd, da tråden ikke vil sove meget længe, ​​i stedet flere gange at vågne til at returnere disse ledige begivenheder. Apple tilføjet timer støtte til Carbon at løse dette problem kan systemet planlægge timere med stor effektivitet.

  0   0
Forrige artikel Aktive zone
Næste artikel Circular Error sandsynlig

Kommentarer - 0

Ingen kommentar

Tilføj en kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Tegn tilbage: 3000
captcha