Почему все приложения Mac не являются легко портативными к Linux?

Так как операционная система OS X Apple является производной UNIX (BSD) и базовым (Intel) Mac, архитектура является тем же, почему это не очень просто для получения определенных для Apple приложений, работающих на Linux?

15
задан 14.08.2009, 13:34

4 ответа

OS X является на самом деле (главным образом) собственной графической оболочкой сверху BSD. Для создания приложения GUI OS X нужно следовать API, который выставила Apple, и следовательно это не является кросс-платформенным и не легко портативным.
Вот почему большинство библиотек легко портировано (на самом деле, большинство разрабатывается на Linux) к Linux, но не их графическим оболочкам.

На ноте стороны: существуют платформы там, с которыми можно создать кросс-платформенные приложения GUI. QT приходит на ум. Но то, что те платформы являются кросс-платформенными также, подает приложения, созданные с ними менее удобный для пользователя на определенной платформе, чем "собственное" приложение GUI. Те платформы имеют тенденцию заставлять все выглядеть универсальным через платформы, который в случае Apple плох, потому что Apple создала очень определенный пользовательский опыт, который не легко "соответствует" другим платформам.

Редактирование (для слияния комментариев в ответ - благодарит @Nick, @kbisset и @John):
Решение состояло бы в том, чтобы портировать целый OS X графическая оболочка (Какао/Оперативные библиотеки с закрытым исходным кодом - который является тем, что делает OS X действительно уникальным) к Linux. И технически, Apple могла сделать это довольно легкое, но у них нет причины для, поскольку их вся бизнес-модель является уникальностью их всей платформы - аппаратное и программное обеспечение.
Возможно, что кто-то мог попытаться клонировать библиотеки, но это займет десятилетия человека, чтобы сделать и вероятно никогда не было бы правильно из-за всех недокументированных вызовов, которые должны будут копироваться.

23
ответ дан 07.12.2019, 11:03

Определенными для Apple приложениями Вы имеете в виду приложения для GUI? После того как Вы перемещаетесь выше командной строки существует Apple определенные API для всего (графика, звучите и т.д.), которые не поддерживаются на Linux следовательно, Вы не можете легко портировать приложения.

2
ответ дан 07.12.2019, 11:03

Графический слой не является тем же, вообще. OS X использует собственную графическую платформу, Linux использует X (X11/X.org)

Почти все собственные приложения OS X используют платформы, такие как Какао, CoreAnimation и так далее, которые только доступны на OS X.

Например, скажите, что у Вас есть приложение, которое хранит пароль для пользователя - на OS X, это использовало бы его систему Связки ключей и соответствующие API. Если бы необходимо было портировать это на Linux, нет никакого прямого эквивалента, таким образом, у Вас была бы к re-impliment эта вся функция. Это - крошечная функция и потребовало бы, чтобы большое переписало.

Если Вы пишете свое приложение, пользующееся межплатформенной библиотекой GUI как GTK, QT или wxWidgets, и портирование будет намного легче (или, "возможным") - но операционные системы все еще очень отличаются с точки зрения UI (например, OS X использует разделенную строку меню, тогда как Linux имеет тенденцию иметь свою строку меню для каждого окна),

Одним из лучших межплатформенных портов, которые я видел, является Передача, которая реализует ее основную функциональность как библиотеку (который содержит как можно меньше определенный для платформы код), затем создавая собственные графический интерфейсы пользователя для каждого платформы, отдельно. Это означает, что каждый порт совместно использует много кода, но у всех есть хорошие, собственные интерфейсы (а не единственный интерфейс, который соответствует приятно на Linux, но неуместен на OS X, или наоборот),

Существует проект под названием Cocotron, который "стремится реализовывать межплатформенный Objective C API, подобный описанному документацией Какао Apple Inc.", которая потенциально сделала бы портирование намного легче, но там, кажется, очень мало действия в последнее время (последнее сообщение в блоге было в декабре 2008),

1
ответ дан 07.12.2019, 11:03

Поскольку большинство приложений зависит от намного больше, чем архитектура процессора и базовая архитектура машины, они работают. Они также зависят от инструментариев пользовательского интерфейса и других определенных для платформы библиотек.

1
ответ дан 07.12.2019, 11:03

Теги

Похожие вопросы