OS機能や
コレクションクラスなどをまとめたサービス層であるFoundationと、主に
GUIパーツの集合であるAppKitの二層構造を成し、狭義ではこの二つをCocoaフレームワークと呼ぶ。厳密な区分ではないが、AddressBook APIや
WebKitなど、周辺サービスを提供するObjective-Cで記述されたフレームワークを広義にCocoaと呼ぶこともある。
Cocoaそれ自体は純粋な機能セットであり、Objective-C実行環境との通信を確立すれば他の
言語からも利用が可能になる。これにより現在では
Java/
Perl/
Ruby/
Python/
Common Lispなど、各種の
コンパイラ・
スクリプト言語との言語ブリッジが確立している(これらの言語内でクラスを定義してObjective-C側から呼び出すことも可能である)。しかし
Cや
C++からは直接 Cocoa を使うことはできないため、Mac OS Xでは旧来のC/C++プログラマのためにCocoaとほとんど等価な機能をもった
Carbon APIも用意されている。
NeXTSTEP由来のCocoaは旧Mac OSの
Toolbox API由来の
Carbonと必ずしも対立するものではない。Carbon APIをラッピングした物、
Core Foundationとして共有基盤へ実装を移した物など、単純にインタフェースとしてCocoa側に出現する物も少なくない(ただし、Objective-Cは一般にCよりも柔軟性に優れており、インタフェースの差違は大きい)