Не такие они и независимые (X-ы не считаем, они на маке не используются по факту). Cocoa -- это суть очень навороченная обертка вокруг Carbon, так что если на ляликсе проэмулировать Carbon, то Cocoa заведется сама. Но "ничего у вас не выйдет", Apple-овские фреймворки изобилуют недокументированными API, которые очевидно тем-же Cocoa используются, а что они из себя должны представлять - никто кроме Apple не знает достоверно.
> Откуда дровишки? А то очень похоже на 4.2.
Для затравки покурите http://www.macdevcenter.com/pub/a/mac/2001/05/23/cocoa_vs_carbon.html
А для окончательного убеждения, берем GUI Appliaction на Cocoa, самый что ни на есть
темплейтный, билдим, запускаме, цепляемся дебагером и смотрим backtrace (я что-
бы не утруждатся взял готовый пример - SimpleBrowser):
#0 0x968ce9e6 in mach_msg_trap ()
#1 0x968d61dc in mach_msg ()
#2 0x9399a0de in CFRunLoopRunSpecific ()
#3 0x9399ad18 in CFRunLoopRunInMode ()
#4 0x933786a0 in RunCurrentEventLoopInMode ()
#5 0x933784b9 in ReceiveNextEventCommon ()
#6 0x9337832d in BlockUntilNextEventMatchingListInMode ()
#7 0x93d237d9 in _DPSNextEvent ()
#8 0x93d2308e in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] ()
#9 0x93d1c0c5 in -[NSApplication run] ()
#10 0x93ce930a in NSApplicationMain ()
#11 0x00001f38 in main (argc=1, argv=0xbffff46c) at /Developer/Examples/AppKit/SimpleBrowser/main.m:4
(gdb)
И спрашивается, если Cocoa не обертка вокруг Carbon, то какого тогда
[NSApplication run] спускается в чисто карбоновский CFRunLoopRun* ?
Так что не знаючи, не суйтесь рыльцем
> Cocoa - тулкит от OSX, а карбон - это обертка для совместимости и запуска старых os9 тулз.
Еще раз повторюсь: не зная, не суйте свое рыло, ыы в том числе.
Вокруг чего простите Carbon обертка, вокруг Mach и BSD API? Carbon это нижний уровень архитектуры OS X, и все вышележащее его использует.
А то, что "а карбон - это обертка для совместимости и запуска старых os9 тулз." -- это да, Apple такими красивыми словами пишет в документации по Cocoa для чайником, дабы расхвалить последнюю. Однако по факту Cocoa целиком и полностью базируется на карбоне, и карбон является такой-же неотемлемой частью OS X, как WinAPI уровень в винде (имеются в виду XP / 2k, про свисту я ничего не знаю): какие-то библиотеки возможно и используют NT Native API, но большая часть всего базируется на WinAPI, при этом можно сколько угодно обзывать WinAPI устаревшим фреймворком, оставленным только для совместимости, умалчивая тот факт что 99% кода системного используют WinAPI. Так и Carbon можно обозвать устаревшим фреймворком, но для этого надо сначала переписать весь код Cocoa, так что-бы Cocoa напрямую использовала BSD и Mach интерфейсы, а до тех пор, пока Cocoa будет использовать Carbon, ни о какой "обертки для совместимости и запуска старых os 9 тулз" речи быть не может.
Если вам мои слова не кажутся убедительными, присмотритесь еще раз к backtrace, вас он не убеждает? Ну тогда вы полный ФГМ, что с вами спорить.
Кстати говоря, чтоб вы знали, Carbon не позволяет напрямую запускать OS 9 тулзы, он лишь облегчает перенос этих приложений на OS X, на уровне исходных кодов. А для запуска OS 9 приложений на PowerPC маках был эмулятор классики, который, что-бы знали, упразднили в Intel версии OS X, так что на новых маках запускать OS 9 тулзы уже никак не получится.
Ну и последний гвоздь в твой гроб: вот у меня стоит iPhone SDK beta5, я иду в каталог
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/System/Li brary
Захожу в каталог Frameworks, и вижу:
Carbon.framework отсутствует, вы могли бы радоватся, однако другие составляющие карбона: CoreFoundation, CoreGraphics, CFNetwork -- все это и тут есть, ну и для проверки сделаем:
> >Спрашивается, зачем на iPhone элементы Carbon-а, что-бы запускать старые OS 9 приложения?
> Чтобы собрать то, что на cocoa еще не переписали.
> ФГМ ты.
Странная у тебя логика. К твоему сведению, Cocoa на iPhone OS весьма отличается от Cocoa на OS X, так что получается что, Apple поменяли Cocoa интерфейс до неузнаваемости (оно и понятно, интерфейс пользовательский совершенно на другом принципе построен), но оставили Carbon что-бы какие-то там старые никому не нужные приложения собирались на iPhone-е ?
> Also unconfirmed, but somewhat likely, is that Apple will completely wrap Snow Leopard in its Cocoa application programming interface (API) set, meaning that applications written via the company's legacy Carbon API will fail to run on the new system.
Cocoa состоит в основном из двух библиотек объектов Objective-C называемых фреймворками (Framework). Фреймворки это примерно то же, что и динамические библиотеки. Они представляют собой скомпилированные объекты, загружаемые в адресное пространство программы во время исполнения, но помимо того фреймворки включают ресурсы, заголовочные файлы и документацию. Cocoa также включает систему контроля версий, предупреждающую проблемы встречающиеся в Microsoft Windows (так называемый "DLL hell").
Foundation Kit, зачастую просто называемый Foundation, впервые появился в OpenStep. В Mac OS X он основан на Core Foundation. Foundation представляет собой объектно-ориентированную библиотеку общего назначения обеспечивающую работу со строками и значениями, контейнеры и итерацию по ним, распределённые вычисления, циклы обработки сообщений и другие функции, не привязанные напрямую к графическому интерфейсу. И это ни разу не карбон!!!
Application Kit или AppKit происходит напрямую от NeXTSTEP Application Kit. Он содержит код, с помощью которого программы могут создавать графический интерфейс и взаимодействовать с ним. AppKit построен на основе Foundation.
Ключевой элемент архитектуры Cocoa — это модель представлений (views). Внешне она огранизована как обычный фреймворк но реализована с использованием PDF для всех операций рисования предоставляемых Quartz. Это позволяет программисту рисовать всё, что угодно, используя команды языка, похожего на PostScript. Это к тому же автоматически предоставляет возможность вывода любого представления на печать. Поскольку Cocoa обрабатывает обрезку, прокрутку, масштабирование и прочие типичные задачи отображения графики, программист освобождается от необходимости реализовывать базовую инфраструктуру и может сконцентрироваться на уникальных аспектах разрабатываемого приложения.
Разроботчегами, почему тогда даже Сами Боги, Apple, поместили референс на Core Foundation в раздел Carbon?
Сходите на тот-же http://www.macdevcenter.com/ млм на http://www.cocoabuilder.com/, поищите поиском слово "Carbon", и почетайте о чем люпи пишут/спрашивают.
> Короче загон в терминах. По вашему CF часть carbon?
Если давать точное определение, то очевидно нет, однако среди разработчиков карбоном зовется все что не на Objective-C, в частности всякие Core Foundation, Core Services, Core Graphics, System Configuration, Audio Services и проч-проч-проч.