Cocoa


Cocoa (с англ. — «какао») — объектно-ориентированный API для операционной системы macOS от компании Apple. Это один из пяти основных API, доступных в macOS, — Cocoa, Carbon, Toolbox (для работы старых приложений Mac OS 9), POSIX и Java. Такие языки, как Perl, Python и Ruby, не считаются основными, так как на них пока что пишется не так много серьёзных приложений для macOS.

Приложения, использующие Cocoa, обычно разрабатываются с помощью среды разработки Apple Xcode (в прошлом называвшегося Project Builder) и Interface Builder с использованием языков программирования: C, Objective-C и Swift. Однако, среда Cocoa также доступна и при разработке на других языках, таких как Ruby, Python и Perl с помощью связующих библиотек (MacRuby, PyObjC и CamelBones соответственно). Также можно писать Cocoa-программы на Objective-C в обычном текстовом редакторе и вручную компилировать их с помощью GCC или make-сценариев для GNUstep.

С точки зрения конечного пользователя, Cocoa-приложения — это приложения, написанные с использованием программной среды Cocoa. Такие приложения обычно имеют характерный внешний вид, поскольку эта среда во многом упрощает поддержку принципов «человечного интерфейса» Apple (Apple Human Interface Guidelines).

Cocoa является продолжением программных сред NeXTSTEP и OPENSTEP, которые разрабатывались компанией NeXT в конце 1980-х годов. Apple приобрела NeXT в декабре 1996 года, и начала работу над операционной системой Rhapsody, которая должна была стать прямой наследницей OPENSTEP. Предполагалось, что она будет включать в себя так называемую «Синюю коробку» (Blue Box), для обеспечения эмуляции приложений Mac OS. База библиотек и поддержка формата исполняемых файлов OPENSTEP получила название «Жёлтой коробки» (Yellow Box). Rhapsody эволюционировала в macOS, и «Жёлтая коробка» превратилась в Cocoa. В результате этого, названия классов Cocoa начинаются с букв NS (от NeXTStep[1]): NSString, NSArray и т. п.

Большая часть кода, написанного для OPENSTEP, вошла в Cocoa и macOS, однако есть и некоторые различия. Например, в NeXTSTEP и OPENSTEP для отображения текста и графики на экране использовалась технология Display PostScript, в то время как в Cocoa используется система Quartz от Apple (в которой применяется та же модель построения изображения, что и в формате PDF). Кроме того, в Cocoa есть поддержка Интернета, например, класс NSURL и классы WebKit для работы с HTML, в то время как в OPENSTEP существовала лишь ограниченная поддержка работы с сетевыми подключениями с помощью класса NSFileHandle и Berkeley sockets.