Jump to content

Углерод (API)

(Перенаправлено с Carbon (вычисления) )
Углерод
Разработчик(и) Apple Инк.
Операционная система Классическая MacOS , macOS
Лицензия Собственный

Carbon был одним из двух основных (API) на основе C интерфейсов прикладного программирования , разработанных Apple для macOS (ранее Mac OS X и OS X) операционной системы . Carbon обеспечил хорошую степень обратной совместимости для программ , работавших в Mac OS 8 и 9 . Разработчики могли использовать API-интерфейсы Carbon для переноса («карбонизации») своих «классических» приложений и программного обеспечения Mac на платформу Mac OS X без особых усилий по сравнению с портированием приложения на совершенно другую систему Cocoa , которая возникла в OPENSTEP . С выпуском macOS 10.15 Catalina поддержка Carbon API была официально прекращена и удалена, в результате чего Cocoa остался единственным основным API для разработки приложений macOS.

Carbon был важной частью стратегии Apple по выводу Mac OS X на рынок, предлагая путь для быстрого портирования существующих программных приложений, а также средство доставки приложений, которые будут работать как на Mac OS X, так и на классической Mac OS. Поскольку рынок все больше перешел на фреймворки на основе Cocoa, особенно после выпуска iOS , потребность в библиотеке портирования снизилась. Apple не создала 64-битную версию Carbon при обновлении других своих платформ в период 2007 года и в конечном итоге объявила устаревшим весь API в OS X 10.8 Mountain Lion , выпущенной 24 июля 2012 года.

«Карбонизированное» приложение Adobe Systems ImageReady v.7.0, работающее непосредственно на Mac OS X версии 10.2.

Классическое программирование для Mac OS

[ редактировать ]

Исходная Mac OS использовала Pascal в качестве основной платформы разработки, а API-интерфейсы в значительной степени основывались на семантике вызовов Pascal . Большая часть Macintosh Toolbox состояла из вызовов процедур , передающих информацию туда и обратно между API и программой с использованием различных структур данных, Паскаля основанных на концепции вариантной записи .

ряд объектных библиотек Со временем на Mac появился Object Pascal , в частности библиотека MacApp и библиотека классов THINK C Think, а также более поздние версии MacApp и CodeWarrior PowerPlant от на C++ .

Рапсодия

[ редактировать ]

С покупкой NeXT в конце 1996 года Apple разработала новую стратегию операционной системы, основанную в основном на существующей платформе OPENSTEP for Mach . Новая стратегия Rhapsody OS была относительно простой; он сохранил большую часть существующих библиотек объектов OpenStep под названием «Yellow Box», перенес существующий графический интерфейс в OPENSTEP для Mach и сделал его более похожим на Mac, перенес несколько основных API из Mac OS в базовую Unix-подобную систему Rhapsody (особенно QuickTime и AppleSearch ), а также добавил эмулятор, известный как «Blue Box», который запускал существующее программное обеспечение Mac OS.

Когда этот план был обнародован на Всемирной конференции разработчиков (WWDC) в 1997 году, это вызвало некоторое сопротивление со стороны существующих разработчиков Mac OS, которые были расстроены тем, что их кодовые базы будут фактически заблокированы в эмуляторе, который вряд ли когда-либо будет обновляться. Голубой ящик стали называть «штрафником». [ нужна ссылка ] Крупные разработчики, такие как Microsoft и Adobe , категорически отказались рассматривать возможность портирования на OpenStep, которая настолько отличалась от существующей Mac OS, что совместимость была минимальной или отсутствовала вообще.

Apple приняла эти опасения близко к сердцу. Когда Стив Джобс объявил об изменении направления Apple на следующей конференции WWDC в 1998 году, он заявил, что «разработчикам действительно нужна была современная версия Mac OS, и Apple [собиралась] ее предоставить».

Первоначальная концепция Rhapsody, включавшая только Blue Box для запуска существующего программного обеспечения Mac OS, в конечном итоге была выпущена в 1999 году как Mac OS X Server 1.0 . Это был единственный релиз, основанный на оригинальной концепции Rhapsody.

Какао и углерод

[ редактировать ]

Чтобы предложить реальный и хорошо поддерживаемый путь обновления для существующих кодовых баз Mac OS, Apple представила систему Carbon. Carbon состоит из множества библиотек и функций, которые предлагают Mac-подобный API, но работают поверх базовой Unix-подобной ОС, а не копии Mac OS, работающей в режиме эмуляции. Библиотеки Carbon тщательно очищены, модернизированы и лучше «защищены». В то время как Mac OS была наполнена API-интерфейсами, которые совместно использовали память для передачи данных, в Carbon весь такой доступ был повторно реализован с использованием доступа подпрограмм к непрозрачным типам данных . Это позволило Carbon поддерживать настоящую многозадачность и защиту памяти — функции, о которых разработчики Mac просили в течение десяти лет. Другие изменения из ранее существовавшего API удалили функции, которые были концептуально несовместимы с Mac OS X или просто устарели. Например, приложения больше не могли устанавливать обработчики прерываний или драйверы устройств .

Для поддержки Carbon была изменена вся модель Rhapsody. В то время как Rhapsody фактически будет OpenStep с эмулятором, в новой системе OpenStep и Carbon API будут, где это возможно, использовать общий код. Для этого многие полезные фрагменты кода нижних уровней системы OpenStep, написанные на Objective-C и известные как Foundation, были повторно реализованы на чистом C. Этот код стал известен как Core Foundation , или CF для короткий. Версия Yellow Box, портированная для вызова CF, стала новым Cocoa API, а вызовы Carbon в стиле Mac также вызывали те же функции. В рамках новой системы Carbon и Cocoa были равными. Обычно это преобразование замедляло бы производительность Cocoa, поскольку методы объекта вызывали базовые библиотеки C, но Apple использовала метод, который они назвали бесплатным мостом, чтобы уменьшить это влияние. [ 1 ]

В рамках этого преобразования Apple также перенесла графический движок с обремененного лицензией Display PostScript на безлицензионный Quartz (который получил название «Display PDF»). [ 2 ] Quartz предоставил собственные вызовы, которые можно было использовать как из Carbon, так и из Cocoa, а также предложил Java 2D интерфейсы, подобные . Сама базовая операционная система была дополнительно изолирована и выпущена как Darwin .

Выпуск и эволюция

[ редактировать ]

Carbon был представлен в неполной форме в 2000 году как разделяемая библиотека, обратно совместимая с Mac OS 8.1 1997 года. Эта версия позволила разработчикам портировать свой код на Carbon, не теряя возможности запуска этих программ на существующих компьютерах с Mac OS. Портирование на Carbon стало известно как «Карбонизация». Официальная поддержка Mac OS X появилась в 2001 году с выпуском Mac OS X v10.0 , первой общедоступной версии новой ОС. Carbon очень широко использовался в ранних версиях Mac OS X практически всеми крупными производителями программного обеспечения, даже Apple. Например, Finder в течение многих лет оставался приложением Carbon, и его перенесли на Cocoa только с выпуском Mac OS X 10.6 в 2009 году. [ 3 ]

Переход на 64-битные приложения Macintosh, начавшийся с Mac OS X v10.5 , выпущенной 26 октября 2007 года, принес первые серьезные ограничения для Carbon. Apple не обеспечивает совместимость между графическим интерфейсом пользователя Macintosh и языком программирования C в 64-битной среде, вместо этого требуя использования диалекта Objective-C с API Cocoa. [ 4 ] Многие комментарии восприняли это как первый признак возможного исчезновения Carbon, и эта позиция была подтверждена, когда Apple заявила, что в систему Carbon не будет добавлено никаких новых крупных дополнений. [ 5 ] [ 6 ] и далее усилен в связи с его прекращением поддержки в 2012 году.

Переход на какао

[ редактировать ]

Несмотря на предполагаемые преимущества Cocoa, необходимость переписывать большие объемы устаревшего кода замедлила переход на приложения на основе Carbon, как известно, с Adobe Photoshop . [ 7 ] который в конечном итоге был обновлен до Cocoa в апреле 2010 года. Это также распространялось на собственные флагманские пакеты программного обеспечения Apple, такие как iTunes [ 8 ] и Final Cut Pro (а также функции движка QuickTime , который обеспечивает его работу) [ 9 ] ) оставался написанным на Carbon в течение многих лет. И iTunes, и Final Cut Pro X с тех пор были выпущены в версиях Cocoa.

Устаревание и прекращение использования

[ редактировать ]

В 2012 году с выпуском OS X 10.8 Mountain Lion большинство API Carbon были признаны устаревшими. API-интерфейсы по-прежнему были доступны разработчикам, и все приложения Carbon по-прежнему работали, но API-интерфейсы больше не обновлялись. 28 июня 2017 года Apple объявила, что 32-битное программное обеспечение для macOS, такое как все приложения Carbon, больше не будет поддерживаться «без компромиссов» в версиях macOS после macOS 10.13 High Sierra . [ 10 ] В macOS 10.15 Catalina официально удалена поддержка 32-битных приложений, включая все приложения Carbon. [ 11 ]

Архитектура

[ редактировать ]

Carbon происходит от Toolbox и, как таковой, состоит из «Менеджеров». Каждый менеджер представляет собой функционально связанный API, определяющий наборы структур данных и функции для управления ими. Менеджеры часто взаимозависимы или многоуровневы. Carbon состоит из широкого набора функций для управления файлами, памятью, данными, пользовательским интерфейсом и другими системными службами. Он реализован, как и любой другой API: в macOS он распределен по нескольким фреймворкам (каждая из которых представляет собой структуру, построенную на основе общей библиотеки ), в основном Carbon.framework, ApplicationServices.framework, и CoreServices.framework, а в классической Mac OS он находится в одной общей библиотеке с именем CarbonLib.

В качестве общего термина, охватывающего все процедуры API на языке C, обеспечивающие доступ к специфичным для Mac функциям, Carbon не спроектирован как отдельная система. Скорее, он открывает почти все функциональные возможности macOS для разработчиков, которые не знают языка Objective-C, необходимого для широко эквивалентного Cocoa API . [ 12 ]

Carbon совместим со всеми несколькими исполняемыми форматами, доступными для PowerPC Mac OS. Двоичная совместимость между Mac OS X и предыдущими версиями требует использования файла предпочтительного исполняемого формата , который Apple никогда не поддерживала в своей Xcode среде разработки .

Новые части Carbon имеют тенденцию быть гораздо более объектно-ориентированными по своей концепции, большинство из них основаны на Core Foundation . Некоторые менеджеры, такие как HIView Manager (расширенный вариант Control Manager), реализованы на C++ , но Carbon остается C. API

Некоторые примеры менеджеров по выбросам углерода:

  • Файловый менеджер — управляет доступом к файловой системе, открытием, закрытием, чтением и записью файлов.
  • Диспетчер ресурсов — управляет доступом к ресурсам, которые представляют собой предопределенные фрагменты данных, которые могут потребоваться программе. Вызывает файловый менеджер для чтения и записи ресурсов из дисковых файлов. Примеры ресурсов включают значки, звуки, изображения, шаблоны виджетов и т. д.
  • Font Manager — управляет шрифтами . Устарело (как часть QuickDraw ) с Mac OS X v10.4 в пользу Apple Type Services (ATS).
  • QuickDraw — примитивы 2D-графики. Устарело с Mac OS X v10.4 в пользу Quartz 2D.
  • Carbon Event Manager — преобразует действия пользователя и системы в события, которые код может распознавать и на которые можно реагировать.
  • HIObject — совершенно новый объектно-ориентированный API, который привносит в Carbon объектно-ориентированную модель для создания графических интерфейсов. HIToolbox в Mac OS Classic и Copland [ 13 ] полагался на заброшенную системную объектную модель IBM , поэтому Carbon пришлось обеспечить быструю и грязную замену, чтобы обеспечить возможность портирования устаревшего кода. Он доступен в Mac OS X v10.2 или новее и предоставляет программистам Carbon некоторые инструменты, с которыми разработчики Cocoa уже давно знакомы. Начиная с Mac OS X v10.2 , HIObject является базовым классом для всех элементов графического интерфейса в Carbon. HIView поддерживается Interface Builder , частью инструментов разработчика Apple. Традиционно создание архитектуры графического пользовательского интерфейса такого типа предоставлялось сторонним платформам приложений. Начиная с Mac OS X v10.4, объекты HIObject являются объектами NSObject и наследуют возможность сериализации в потоки данных для транспортировки или сохранения на диск.
  • HITheme — использует QuickDraw и Quartz для отображения элементов графического пользовательского интерфейса (GUI) на экране. HITheme был представлен в Mac OS X v10.3 , а Appearance Manager — это уровень совместимости поверх HITheme, начиная с этой версии.
  • HIView Manager — управляет созданием, рисованием, проверкой попадания и манипулированием элементами управления. Начиная с Mac OS X версии 10.2, все элементы управления являются HIView. В Mac OS X v10.4 Диспетчер управления был переименован в HIView Manager.
  • Диспетчер окон — управляет созданием, расположением, обновлением и манипуляциями с окнами. Начиная с Mac OS X v10.2, в Windows есть корневой HIView.
  • Менеджер меню — управляет созданием, выбором и манипуляциями меню. Начиная с Mac OS X v10.2, меню представляют собой объекты HIObject. Начиная с Mac OS X v10.3, содержимое меню можно отрисовывать с помощью HIViews, и все стандартные меню используют для рисования HIViews.

Обработка событий

[ редактировать ]

Менеджер событий Mac Toolbox изначально использовал модель опроса для разработки приложений. приложения Основной цикл событий запрашивает у диспетчера событий событие с помощью GetNextEvent. Если в очереди есть событие, диспетчер событий передает его обратно приложению, где оно обрабатывается, в противном случае он возвращается немедленно. Такое поведение называется « ожиданием занятости », при котором цикл обработки событий запускается без необходимости. Ожидание занятости уменьшает количество процессорного времени, доступного для других приложений, и снижает заряд батареи на ноутбуках. Классический диспетчер событий появился в оригинальной Mac OS в 1984 году, когда любое запущенное приложение гарантированно было единственным работающим приложением и когда управление питанием не вызывало беспокойства.

С появлением MultiFinder и возможностью одновременного запуска нескольких приложений появился новый вызов диспетчера событий WaitNextEvent , который позволяет приложению указывать интервал ожидания. Один простой способ использовать устаревший код для принятия более эффективной модели без серьезных изменений в его исходном коде — просто установить для параметра сна, передаваемого в WaitNextEvent , очень большое значение — в macOS это переводит поток в спящий режим всякий раз, когда нечего делать. и возвращает событие только в том случае, если есть событие, требующее обработки. Таким образом, модель опроса быстро инвертируется и становится эквивалентной модели обратного вызова, при этом приложение выполняет собственную диспетчеризацию событий оригинальным способом. Однако есть лазейки. из устаревшего набора инструментов Например, вызов ModalDialog внутренне вызывает более старую функцию GetNextEvent , что приводит к опросу в узком цикле без блокировки.

Carbon представляет систему замены, называемую Carbon Event Manager. (Исходный менеджер событий все еще существует для совместимости с устаревшими приложениями). Carbon Event Manager предоставляет разработчику цикл событий (на основе Core Foundation). CFRunLoop в текущей реализации); разработчик настраивает обработчики событий, входит в цикл событий в основной функции и ждет, пока Carbon Event Manager отправит события в приложение.

В классической Mac OS не было поддержки таймеров уровня приложения операционной системой (диспетчер времени нижнего уровня был доступен, но он выполнял обратные вызовы таймера во время прерывания, во время которого нельзя было безопасно выполнять вызовы большинства подпрограмм Toolbox). Реализация таймеров обычно оставлялась на усмотрение разработчиков приложений, и обычно это делалось путем подсчета времени, прошедшего во время события простоя , то есть события, которое возвращалось функцией WaitNextEvent , когда какое-либо другое событие было недоступно. Чтобы такие таймеры имели разумное разрешение, разработчики не могли позволить WaitNextEvent слишком долго задерживать, поэтому обычно устанавливались низкие параметры «сна». Это приводит к крайне неэффективному планированию, поскольку поток не будет спать очень долго, а вместо этого неоднократно просыпается, чтобы вернуть эти события простоя. Чтобы решить эту проблему, Apple добавила в Carbon поддержку таймеров — система может планировать таймеры с большой эффективностью.

Реализации с открытым исходным кодом

[ редактировать ]

GNUstep содержит реализацию Carbon API под названием Boron. Он стремится быть совместимым с неустаревшими частями ApplicationServices и CoreServices. Название происходит от того факта, что бор стоит перед углеродом в периодической таблице элементов . [ 14 ] Darling также содержит реализацию Carbon. Обе реализации крайне неполны и состоят в основном из функций-заглушек.

См. также

[ редактировать ]
  1. ^ «Концепции программирования на Objective-C: бесплатное соединение» . разработчик.apple.com . 2012 . Проверено 8 мая 2017 г.
  2. ^ Сиракузы, Джон (2000). «Обновление Mac OS X: Quartz и Aqua» . archive.arstechnica.com . Проверено 8 мая 2017 г.
  3. ^ Кразит, Том (17 октября 2008 г.). «Apple переводит Finder на Cocoa» . CNET . Архивировано из оригинала 11 июля 2015 года . Проверено 21 мая 2015 г.
  4. ^ Apple Inc. «Введение в 64-битное руководство для разработчиков Carbon» . Архивировано из оригинала 11 июня 2009 года.
  5. ^ Apple Inc. «Выбор пути разработки пользовательского интерфейса Carbon» . Изменение приложения для использования 64-битной адресации . Архивировано из оригинала 4 августа 2009 года.
  6. ^ Сиракузы, Джон (3 апреля 2008 г.). «Рапсодия и блюз» . Арс Техника . Проверено 5 февраля 2023 г.
  7. ^ Джон Нэк. «Дорожная карта Photoshop, Lightroom и 64-битной Adobe» . Архивировано из оригинала 14 апреля 2015 года.
  8. ^ Крис Форесман (3 сентября 2010 г.). «Практическое знакомство с iTunes 10: более высокая производительность, сомнительный выбор пользовательского интерфейса» . Архивировано из оригинала 2 апреля 2015 года.
  9. ^ Джон Сиракузы (сентябрь 2009 г.). «Mac OS X 10.6 Snow Leopard: обзор Ars Technica» . Архивировано из оригинала 13 июля 2014 года.
  10. ^ Apple Inc. (28 июня 2017 г.). «64-битные требования для приложений Mac» . Архивировано из оригинала 30 января 2018 года . Проверено 18 февраля 2018 г.
  11. ^ MacRumors (4 июня 2019 г.). «32-битные приложения, «не оптимизированные для вашего Mac», перестают работать на macOS Catalina» . Проверено 10 августа 2019 г.
  12. ^ Apple Inc. «Домашняя страница Apple Carbon» . Архивировано из оригинала 12 октября 2012 года.
  13. ^ Описание класса SOM HIEditText из Mac OS 8.0 (Copland) DDK [ постоянная мертвая ссылка ]
  14. ^ «gnustep/libs-boron: Бор — это атом, стоящий перед углеродом» . Гитхаб . GNUстеп. 23 марта 2019 г.
[ редактировать ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 699dc4a26e350c338519fe073899585d__1722458340
URL1:https://arc.ask3.ru/arc/aa/69/5d/699dc4a26e350c338519fe073899585d.html
Заголовок, (Title) документа по адресу, URL1:
Carbon (API) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)