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

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

8
задан Nick Pierpoint
08.03.2023 14:13 Количество просмотров материала 2894
Распечатать страницу

4 ответа

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

Вот почему большинство библиотек are легко портируется (на самом деле большинство из них разработаны на Linux) в Linux, но не их графических оболочек.

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

Edit (включить комментарии в ответе-спасибо @Nick, @kbisset и @John):

Решением было бы перенести всю графическую оболочку OS X (закрытые исходные библиотеки Cocoa / Core, что делает OS X действительно уникальной) в Linux. И технически, Apple может сделать это довольно легко, но у них нет причин, так как вся их бизнес-модель является уникальностью всей их платформы-аппаратного и программного обеспечения.

Можно предположить, что кто-то может попытаться клонировать библиотеки, но это это займет десятилетия, и, вероятно, никогда не будет правильным из-за всех недокументированных вызовов, которые должны быть воспроизведены.

23
отвечен fretje 2023-03-09 22:01

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

2
отвечен Mark 2023-03-10 00:18

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

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

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

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

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

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

1
отвечен dbr 2023-03-10 02:35

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

1
отвечен Kent Boogaart 2023-03-10 04:52

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх