поскольку операционная система Apple OS-X является производной от UNIX (BSD), а базовая архитектура (Intel) Mac одинакова, почему не очень просто получить приложения Apple, работающие на Linux?
Почему не все приложения Mac легко переносятся в Linux?
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 может сделать это довольно легко, но у них нет причин, так как вся их бизнес-модель является уникальностью всей их платформы-аппаратного и программного обеспечения.
Можно предположить, что кто-то может попытаться клонировать библиотеки, но это это займет десятилетия, и, вероятно, никогда не будет правильным из-за всех недокументированных вызовов, которые должны быть воспроизведены.
под Apple, конкретных приложений вы имеете в виду GUI приложений? После того, как вы двигаться выше в командной строке есть определенные API Apple для все (графика, звук и т. д.), которые не поддерживаются в Linux, поэтому вы не можете легко портировать приложения.
графический слой совсем не то же самое. 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 года)
потому что большинство приложений зависят от гораздо большего, чем процессор и базовая архитектура машины, на которой они работают. Они также зависят от инструментария пользовательского интерфейса и других специфичных для платформы библиотек.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]