Der Unterschied zwischen Carbon und Cocoa
MTN erklärt Fachbegriffe, Teil 3
Diesmal geht es wieder um zwei sehr häufig verwendete und wichtige Fachbegriffe, nämlich Cocoa und Carbon. Einfach gesagt, ist Carbon die Brücke zwischen OS 9 und OS X, Cocoa hingegen setzt OS X voraus. Sollten Ihnen weitere Begriffe einfallen, die häufig verwendet werden, Ihnen aber nicht ganz klar sind, können Sie uns diese gerne mitteilen.
Carbon:
Nachdem es klar wurde, dass für Apple NeXTStep/OpenStep zum neuen Mac OS werden sollte, musste es Apple irgendwie schaffen, dass alte Applikationen mit einem minimalen Aufwand auf das neue, moderne Betriebssystem portiert werden können. Zwar war es abzusehen, dass der Umstieg nicht so flüssig von statten gehen würde wie von der 68k-Architektur auf den PowerPC, trotzdem hat sich Apple sehr bemüht, dies für den Anwender transparent zu machen.
Die alte Programmierbibliothek aus Mac OS 8/9 war nicht mehr mit einem modernen Betriebssystem mit Speicherschutz und preemptiven Multitasking zu vereinbaren. Deswegen musste eine Art "bereinigte" Mac-Toolbox her.
Schon bevor Mac OS X überhaupt als erste Developer Preview auf den Markt kam, wurde in Mac OS 8.1 die CarbonLib integriert. Entwickler sollten schon frühzeitig auf diese modifizierte Toolbox umsteigen, damit beim Verkaufsstart von OS X Programme zur Verfügung stehen.
Um ein Programm von der alten Mac OS Toolbox auf Carbon zu portieren, musste ein Entwickler ca. 5 \% seines Codes ändern. Besonders Spiele und unsauber programmierte Anwendungen machten beim Umstieg viel Ärger.
Carbon und die Mac Toolbox sind nicht wie Cocoa objektorientiert, sondern kann in normalem C angesprochen werden.
Cocoa:
Ehemals die "Yellow Box" genannt, ist Cocoa die generische Programmierbibliothek für Mac OS X. Damit Apple aber nicht doppelte Arbeit verrichten muss, basiert Carbon wie auch Cocoa intern auf der Core Foundation, welche die Grundlage für beide Bibliotheken darstellt.
Cocoa-Applikationen werden in der Programmiersprache Objective-C entwickelt, die auf C aufbaut (C++ baut ebenfalls auf C auf). Durch die hohe Integration des Interface Builders ist es mit Cocoa möglich, schnell komplexe Anwendungen zu entwickeln.
Für den Anwender unterscheiden sich Cocoa-Applikationen in sehr wenigen Punkten von Carbon-Programmen. Ein Beispiel sind Fenster, die sich verschieben lassen, obwohl die Applikation gerade beschäftigt ist und nicht reagiert. In Carbon wäre das Verschieben der Fenster nicht mehr möglich.
Fazit:
Sehr häufig ist zu hören Cocoa-Programme seien "besser" oder "schneller" als Carbon-Applikationen. Dies ist, besonders seit Mac OS X Jaguar, nicht mehr der Fall. Beide Bibliotheken greifen intern zu großen Teilen auf dieselben Routinen zu, sodass der Unterschied für den Anwender nur noch selten sichtbar wird.