Cocoa

Cocoa

Cocoa [ˈkoʊkoʊ] (engl. für „Kakao“) ist eine objektorientierte Programmierschnittstelle zur Programmierung unter dem Betriebssystem Mac OS X von Apple.

Cocoa-Programme sind meist solche mit einer graphischen Benutzeroberfläche (GUI), wobei ebenso auch die Entwicklung von z. B. Kommandozeilen-Tools oder Daemons möglich ist. Typischerweise erfolgt die Entwicklung mit Hilfe der „Developer Tools“, die Apple nach namentlicher Registrierung bis zur Version 3.2 kostenfrei zur Verfügung gestellt hat und die im Wesentlichen aus der IDE Xcode (Vorgänger: Project Builder) und dem Interface Builder bestehen. Version 4.0 von Xcode musste für 3,99 EUR im Mac App Store geladen werden. Als kostenpflichtig registrierter Entwickler kann Xcode von der Apple Developer Homepage heruntergeladen werden, wobei keine weiteren Kosten entstehen. Seit dem Erscheinen von Mac OS 10.7 ist Xcode kostenlos über den Mac App Store zu beziehen.

Als primäre Programmiersprache dient dabei das an Smalltalk angelehnte Objective-C (eine objektorientierte Obermenge von C); C/C++ ist grundsätzlich innerhalb eines Projektes verwendbar[1]. Alternativ ist die Programmierung (mit Einschränkungen) aus Java heraus möglich. Insbesondere wird die Java-Cocoa Bridge von Apple nicht mehr unterstützt. Weiterhin existieren Schnittstellen, um Cocoa aus anderen Sprachen zu nutzen, so etwa PerlObjCBridge (für Perl) oder die Open-Source-Projekte PyObjC (für Python) sowie RubyCocoa (für Ruby) und Cocoa# (für C# bzw. Mono). In der Betriebssystem-Version 10.4 enthält Cocoa sogar eine kleine Datenbank (SQLite). Die Mac-eigene Skriptsprache Apple Script kann genutzt werden, um einfache Aktionen und Routinen zu implementieren.

Inhaltsverzeichnis

Geschichte

Cocoa war zunächst der Name für eine in Sk8 geschriebene Multimedia-Entwicklungsumgebung von Apple für Kinder, welche später vom Unternehmen Stagecast unter dem Namen Stagecast Creator weitergeführt wurde.

Das heutige Cocoa ist eine Weiterentwicklung von NeXTSTEP und OPENSTEP, das vom Unternehmen NeXT in den späten 1980er Jahren entwickelt wurde.

Nach Erscheinen einer Betaversion von Safari für Windows im Juni 2007 kamen Gerüchte auf[2], dass Apple (wieder) an einer Portierung von Cocoa auf die Windows-Plattform arbeitet.

Frameworks

Cocoa besteht aus seinerseits drei Frameworks:

  • Foundation stellt alle relevanten Basisklassen (Strings, Arrays, Speicher-Management, Iterators etc.) zur Verfügung.
  • Application Kit enthält Klassen zur Entwicklung graphischer Benutzeroberflächen, beispielsweise Fenster, Buttons oder Menüs.
  • Core Data (seit Mac OS X 10.4 – „Tiger“) zur Erstellung von Objektgraphen.

Die Klassen des Cocoa-Frameworks beginnen hauptsächlich mit den Buchstaben NS, wie beispielsweise bei NSObject, NSArray oder NSString. Die Abkürzung steht dabei für das OpenStep-Framework NeXTStep, das von Apple 1996 zugekauft und als Basis für Mac OS X verwendet wurde.

Mit Mac OS X werden allerdings noch weitere Frameworks geliefert, die aber keine direkten Bestandteile von Cocoa sind:

Diese Frameworks entsprechen in etwa dynamisch geladenen Objektbibliotheken (DLL/DSO), beinhalten jedoch im Gegensatz zu DLLs auch die Zugriffsmechanismen in Form von "Header-Dateien". Sie stehen unter Mac OS X als kompilierte Objektdateien zur Verfügung. Die meisten der Frameworks, aus denen Cocoa besteht, wurden von Apple bislang noch nicht im Quelltext freigegeben.

Foundation

Die Klassen der Foundation sorgen für eine Grundlage der Programmierung mit Objective-C. Enthalten sind vor allem:

  • Das Speicherverwaltungssystem Referenzzählung;
  • Das Ausnahmesystem (NSException)
  • Die Basisklassen für grundlegende Typen wie für Zeichenketten, Werte und Daten;
  • Collectionklassen für Mengen, Listen und Maps;
  • Filebehandlung einschließlich webbezogener Funktionalität;
  • XML-Unterstützung
  • Undo-Funktion

AppKit

AppKit implementiert die wichtigste Infrastruktur für Anwendungen, also Programme mit graphischer Benutzeroberfläche:

  • Applikationsinfrastruktur einschließlich Voreinstellungssystem
  • Ereignisbetrieb
  • Elemente der graphischen Oberfläche wie Fenster, Ansichten und Menüs
  • Elemente der Controllerschicht
  • Sprachanbindungen
  • Textsystem (Zeichenfolgen mit Attributen)

Core Data

Core Data stellt eine Modellierungs- und Persistenzschicht mit automatischer Unterstützung für Undo-Funktionalität dar. Es dient dem schnellen Entwurf von Modellen im System des Model-View-Controller-Musters. Core Data enthält Unterstützung für:

  • Beschreibung der Modellstruktur
  • Ablage von Daten
  • XML und SQLite

Konzepte

Cocoa verfolgt einige Konzepte, die auf die dynamische Struktur von Objective-C zurechtgeschnitten sind. Dies dürfte auch der Grund sein, warum Java nicht mehr unterstützt wird. Aufgrund der statischen Struktur (Static-Typing, Early-Binding) von Java lassen sich die Strukturen von Cocoa dort nur eingeschränkt oder aber mit großem Aufwand umsetzen.

Model-View-Controller

Einerseits ist das MVC-Muster in Cocoa strikt umgesetzt, so dass sich die meisten Klassen eindeutig zuordnen lassen. Andererseits wird der hieraus folgende Aufwand durch Unterstützung gelindert. So erlauben etwa Bindings die automatische Synchronisation von Modelwerten in allen relevanten Views, ohne dass der Anwendungsprogrammierer hierzu Code schreiben muss.

Class-Cluster

Einige Klassen von Cocoa stellen nur den sichtbaren Teil des Eisberges dar. Tatsächlich werden sie nie instanziert, sondern vielmehr zur Laufzeit Instanzen passender, jedoch verborgener Subklassen erzeugt. So verlangt etwa der Anwendungsprogrammierer nach einer Instanz von NSArray, erhält aber je nach Anzahl der Elemente eine Instanz einer Klasse, die er nicht kennt.

Laziness

Grundsätzlich werden das System belastende Tätigkeiten erst dann vorgenommen, wenn diese erforderlich sind. So modellieren Instanzen der Klasse „NSImage“ Bilder. Die Bilddaten werden allerdings erst dann geladen, wenn sie für eine Operation tatsächlich bekannt sein müssen; das Model wird erst dann und nur insoweit geladen, wie es für die aktuelle Operation nötig ist usw.

Ereignisbetrieb und Responder-Chain

Cocoa-Applikationen sind strikt ereignisgesteuert. Jede Tätigkeit einer Anwendung erfolgt aufgrund eines äußeren Ereignisses. Ereignisse durchlaufen eine sogenannte "Responder-Chain", die aus unterschiedlichen Klassen besteht und ein eingetroffenes Ereignis entnehmen und verarbeiten können – oder auch nicht.

Implementierungen außerhalb von Mac OS X

Neben der in Mac OS X enthaltenen Cocoa-API von Apple gibt es auch eine freie, plattformübergreifende Implementierungen namens GNUstep. Diese Nachbildung dient dazu, Anwendungsprogramme für Mac OS X ohne großen Aufwand für andere Betriebssysteme zu portieren. Das Ausführen von für Mac OS X kompilierten Anwendungen ist, anders als bei Windows-Anwendungen unter Wine, meist nicht möglich. GNUstep enthält nicht alle Funktionen von Cocoa,[3] was die einfache Portierung erschweren kann. Besonders wenn die Anwendungen neben Cocoa auf andere APIs von Mac OS X, wie zum Beispiel Carbon angewiesen sind, kann die Portierung trotz GNUstep sehr aufwendig werden.[3] Da Mac OS X selbst ein unixoides System ist, ist die Umsetzung von GNUstep in Linux- und Unix-Systemen einfacher und schlanker als in Windows, wo zuerst mit MinGW die nötige minimale Unix-artige Funktionalität bereitgestellt werden muss.[4]

Literatur

Weblinks

Wikibooks Wikibooks: Objective-C und das Cocoa-Framework – Lern- und Lehrmaterialien

Einzelnachweise

  1. http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocCPlusPlus.html#//apple_ref/doc/uid/TP30001163-CH10-SW1 Mixing Objective-C and C++ Language Features
  2. MacTechNews: „Existiert Cocoa für Windows?“
  3. a b Porting from GNUstep to Cocoa (englisch), gnustep.org, 27. Mai 2010
  4. Platform compatibility (englisch), gnustep.org, 27. Mai 2010

Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Cocoa — Cocoa  родная объектно ориентированная среда разработки приложений для операционной системы Mac OS X производства компании Apple. Это один из пяти основных API, доступных в Mac OS X,  Cocoa, Carbon, Toolbox (для работы старых приложений …   Википедия

  • Cocoa — may refer to: Related to chocolate Theobroma cacao, the cocoa tree Cocoa bean, seed of Theobroma cacao Cocoa liquor or chocolate liquor, pure liquid chocolate extracted from the cocoa bean, including both cocoa butter and cocoa solids Cocoa… …   Wikipedia

  • CoCoA — (Computations in Commutative Algebra) is a free computer algebra system to compute with numbers and polynomials. The CoCoA Library is available under GNU General Public License. Has been ported to many operating systems including Macintosh on PPC …   Wikipedia

  • Cocoa — Co coa (k[=o] k[ o]), n., Cocoa palm Co coa palm (k[=o] k[ o] p[aum]m )[Sp. & Pg. coco cocoanut, in Sp. also, cocoa palm. The Portuguese name is said to have been given from the monkeylike face at the base of the nut, fr. Pg. coco a bugbear, an… …   The Collaborative International Dictionary of English

  • Cocoa — Co coa, n. [Corrupted fr. cacao.] A preparation made from the seeds of the chocolate tree, and used in making, a beverage; also the beverage made from cocoa or cocoa shells. [1913 Webster] {Cocoa shells}, the husks which separate from the cacao… …   The Collaborative International Dictionary of English

  • CoCoA — (Computations in Commutative Algebra) es un sistema de álgebra computacional gratuito, para trabajar con números y polinomios con múltiples variables. Funciona sobre varios sistemas operativos: Macintosh en PPC, Linux para x86, x86 64 y PPC, Sun… …   Wikipedia Español

  • Cocoa — es nahuatlismo de cacáhuatl ( cacao ). Puede referirse a: Chocolate, producto hecho del cacao. Cocoa, framework usado en Mac OS X. CoCoA, sistema de álgebra computacional. Esta página de desambiguación cataloga artículos rel …   Wikipedia Español

  • Cocoa — Cocoa, FL U.S. city in Florida Population (2000): 16412 Housing Units (2000): 8064 Land area (2000): 7.458820 sq. miles (19.318255 sq. km) Water area (2000): 2.064925 sq. miles (5.348130 sq. km) Total area (2000): 9.523745 sq. miles (24.666385 sq …   StarDict's U.S. Gazetteer Places

  • Cocoa, FL — U.S. city in Florida Population (2000): 16412 Housing Units (2000): 8064 Land area (2000): 7.458820 sq. miles (19.318255 sq. km) Water area (2000): 2.064925 sq. miles (5.348130 sq. km) Total area (2000): 9.523745 sq. miles (24.666385 sq. km) FIPS …   StarDict's U.S. Gazetteer Places

  • cocoa — powder from cacao seeds, 1707, corruption (by influence of COCO (Cf. coco)) of CACAO (Cf. cacao). The printing of Johnson s dictionary ran together the entries for coco and cocoa, fostering a confusion that never has been undone …   Etymology dictionary

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”