О Mac OSX - из России с любовью





Обзоры
Development: В чем разница между Carbon и Cocoa и должно ли меня это волновать?

В чем разница между Carbon и Cocoa и должно ли меня это волновать?
By Geoff Perlman, CEO, REAL Software, Inc.
Перевод: alexmak <alexmak@mac.com>

С тех пор, как Mac OS X начала продаваться и поставляться со всеми компьютерами, новости о новых приложениях, которые разработаны специально для новой операционной системы, уже стали обыкновенной вещью. В новостях часто сообщается, что некоторые из этих приложений базируются на Cocoa, а некоторые - на Carbon. Умные разработчики не упоминают этого вообще, зная, что средний пользователь Мака не знает в чем разница между этими средами, и его это не волнует.

Apple пытается донести до разработчиков преимущества Cocoa и в результате многие пользователи Маков начали думать, что приложения, написанные на Cocoa, лучше чем приложения, написанные на Carbon. Выбор API или фреймворка имеет больше влияния на разработчика, нежели на конечного пользователя. Этот документ поясняет что такое Carbon и Cocoa, чем они отличаются, и как это влияет на пользователей REALbasic.

Что такое REALbasic?
REALbasic - это приложение, которое создает приложения - обьединяя простоту оригинального языка BASIC с мощью современного обьектно-ориентированного программирования. REALbasic создает быстрые, готовые приложения для классической Mac OS, Mac OS X и Windows. Приложения REALbasic являются родными для каждой операционной системы, тоесть они выглядят и функционируют так, как и должны, на каждой конкретной операционной системе.

Немного истории.
Когда Mac OS была впервые представлена в 1984 году, это было само совершенство современного программирования. Операционные системы для других платформ, которые появились несколько лет спустя, предлагали такие вещи как защищенная памятть и вытесняющая многозадачность, что в конечном итоге давало лучший пользовательский опыт. Apple не встраивала этих вещей в Mac OS потому, что микропроцессоры, доступные во время разработки Mac OS, не были достаточно мощными. Позднее добавление таких вещей, как защищенная память и вытесняющая многозадачность в Mac OS стало трудной и ресурсоемкой задачей, потому что эти вещи должны находиться в ядре системы. Apple пыталась сделать это несколько раз, то так до конца дело и не довела. В конце концов Apple решила что приобретение современной операционной системы и последующая подготовка ее для работы на Маке - более разумное решение. Apple рассматривала как вариант покупку BeOS у Be, Inc. но в конечном итоге остановилась на NEXTSTEP от NeXT, Inc, компании, которую основал Стив Джобс

NEXTSTEP преподнесла Apple современную систему, которая ей требовалась, но у нее был радикально другой графический интерфейс пользователя, чем у Mac OS. Apple начала изменять NEXTSTEP, чтобы сделать ее более похожей на Mac OS. Результатом стало нечто, что Apple назвала Rhapsody. Rhapsody была новой современной операционной системой для маковских пользователей с знакомым маковским интерфейсом. Следующим шагом (сорри за каламбур - без умысла) надо было сделать так, чтобы существующие приложения под Mac OS, такие как Microsoft Office и Adobe Photoshop, стали доступными для Rhapsody, чтобы у пользователей Макинтошей появилась причина использовать ее.

К несчастью, разные операционные системы - это как разные языки. Они могут достигать одинаковых целей, но разными путями. Чтобы получить на Rhapsody работающее приложение, написаное для Mac OS, требовалось изменить весь код в приложении, который обеспечивает работу с Mac OS на код, который бы мог обеспечивать взаимодействие с Rhapsody. Для усложения ситуации оказалось, что если приложения под Мак могли быть написаны на таких языках, как Pascal, C, C++, то единственным языком, на котором можно было общаться с Rhapsody, был Objective-C (новый язык, разработанный в NeXT). Маковские разработчики, желающие поставлять свои приложения под эту новую операционную систему, оказались перед проблемой, что им не только придется изучить новый язык программирования, но и переписать свои приложения с нуля на этом новом языке. Размер большинства приложений может составлять от нескольких тысяч до нескольких миллионов строк кода. Apple нужен был путь полегче для разработчиков под Мак, чтобы их приложения заработали на Rhapsody

Что такое API?
Приложения общаются с операционной системой, на которой они запущены через интерфейсы (вызовы) программирования приложения (application programming interface - сокращенно API). Эти вызовы позволяют приложению сообщить операционной системе сделать чтонибудь простенькое, например, проиграть обычный звук, или же чтото сложное, например, предоставить drag&drop. Например, чтобы проиграть звук на Mac OS, приложение вызывает функцию SysBeep(). В Rhapsody, та же функция называется NSBeep.

Что же такое Cocoa?
Cocoa - это имя которое использует Apple для обобщения API, которые существовали в Rhapsody. Приложения, которые были написаны изначально для NEXTSTEP, были написаны на языке Objective-C и использовали Cocoa API для общения с этой системой. Некоторые приложения, которые поставляются с Mac OS X (Mail и Chess) были написаны изначально для NEXTSTEP, поэтому они используют Cocoa API. Также существуют и другие приложения, которые были написаны для NEXTSTEP, и сейчас они обновлены для Mac OS X. Эти приложения тоже используют Cocoa API.

Что такое Carbon?
Когда Rhapsody была переименована в Mac OS X, Apple представила свое решение для того, чтобы существующие под Мак приложения превратились в приложения под Mac OS X. Они добавили еще один набор системных вызовов (API) в Mac OS X, который (почти) использовал те же имена и параметры, что и системные вызовы, которые разработчики под Мак уже использовали в Mac OS. Это означало, что большинство кода существующих приложений не придется изменять, и только малая часть приложения будет требовать изменений или обновлений, чтобы запускаться под Mac OS X как "родное" приложение. Здесь также предстояло много работы, но все же меньше, чем начинать сначала. Apple назвала этот набор API "Carbon".

Лучше ли Cocoa чем Carbon?
Если говорить вкратце - нет. Системные вызовы Carbon и Cocoa вызывают функции из Application Services и Core Services системы Mac OS X. И вовсе Carbon не вызывает функции из Cocoa, как некоторые думают. Вызывать функции Carbon API не сложнее, чем вызывать функции Cocoa API. Если говорить более широко, то если вы собираетесь писать новое приложение на таких языках как C или Java, и вас интересует работа вашего приложения только на Mac OS X, можете избрать путь использования Cocoa API, так как эти системные вызовы более высокого уровня, чем Carbon. Большинство маковских разработчиков хотят использовать огромное количество наработанного годами кода, а также знание C или C++, так что они, вероятнее всего, останутся верны Carbon, чем будут изучать Objective-C и переписывать свой код использую Cocoa API.

Может ли приложение, написанное на Cocoa, делать больше, чем приложение, написанное на Carbon?
Вкратце - нет. Системные вызовы и Carbon, и Cocoa поступают в одни и те же части Mac OS X. Правда, есть небольшая часть функций, которые Apple пока что не сделала доступными для Carbon только потому, что эти функции не нужны маковским приложениям, чтобы стать "родными" приложениями на Mac OS X. Правда и обратное утверждение. Есть маленький набор функций, к которому могут доступаться Carbon приложения на Mac OS X, а Cocoa приложения не могут просто потому, что Cocoa приложениям это не надо, потому что они не прывыкли пользоваться этими функциями. Apple работает над тем, чтобы уменьшить эту разницу до нуля.

Более ли "родные" Mac OS X Cocoa приложения, чем Carbon приложения?
Нет. И Cocoa, и Carbon посылают вызовы в одну и ту же часть Mac OS X. Cocoa приложения не более и не менее "родные", чем Carbon приложения. Carbon API более новый для Mac OS X, чем Cocoa API, и как результат, могут возникать некоторые краткосрочные проблемы с Carbon, но это проблема, которую Apple решит.

Cocoa - будущее Mac OS X и уйдет ли когда-то Carbon?
Как было замечено выше, если вы раньше не инвестировали в Carbon API и C/C++ и вы собираетесь писать приложения только под Mac OS X, то Cocoa и Objective-C могут стать правильным выбором. Написание приложения с использованием Cocoa и Objective-C может потребовать меньше кода, чтобы достичь того же, чем использование C/C++ и Carbon API. Разработчики существующих приложений под Мак, скорей всего, продолжат использование C/C++ и Carbon, потому что инвестиции уже сделаны и потому что приложения, написанные на Carbon API, более переносимы на другие платформы. Приложения, написанные на Objective-C с использованием Cocoa API не переносимы на другие платформы, а производители программного обеспечения обычно хотят продавать свои приложения для нескольких платформ.

Apple продолжит улучшать и Carbon, и Cocoa API потому что они знают, что большинство важных для успеха Mac OS X приложений (Office, Photoshop, REALbasic) написаны с использованием Carbon API. Если Apple хочет , чтобы эти приложения использовали новые технологии Mac OS X, им придется сделать эти технологии доступными через Carbon. Сделать это стоит тех же усилий, что и сделать эти технологии доступными и через Cocoa.

Значит ли это что-то для меня как пользователя REALbasic?
Не совсем. REALbasic в основном Carbon приложение, и строит в основном Carbon приложения. Я говорю " в основном", потому что REALbasic предоставляет такие функции, как доступ к командной строке UNIX и серийным портам Mac OS X, которые доступны на Mac OS X, но не доступны на Mac OS 8 или 9. Это один из примеров возможностей Carbon.
Есть некоторые особенности Mac OS X, например, drawers ("ящик" - пример в Mail), которые мы сейчас не можем предложить, потому что они не доступны через Carbon API. Как только Apple добавит их в Carbon, мы сможем сделать их доступными вам через REALbasic.

Несмотря на то, что Cocoa предлагает более широкий выбор функций, нежели Carbon, REALbasic предлагает еще более широкий выбор функций, нежели Cocoa. Написание приложения в REALbasic занимает намного меньше времени и намного более проще для обычного пользователя, чем на Cocoa. И приложение, написанное на REALbasic, может быть запущено на Mac OS 8, Mac OS 9, Mac OS X, и от Windows 95 до Windows XP. Можете не принимать просто так наши слова, убедитесь сами.
Скачайте учебник Objective-C (с помощью которого вы можете создать конвертор валют) с сайта Apple. Теперь создайте тот же конвертор валют с помощью REALbasic. Сделав это, вы сами во всем убедитесь.

Copyright (c) 2002 REAL Software, Inc. All rights reserved.

Это место зарезервировано для Вашей рекламы

С нетерпением ждем ваших обзоров и статей. Пишите!
Хостинг предоставлен Unsanity LLC
All rights reserved © Powermic, 2001.