Perché non tutte le applicazioni Mac sono facilmente trasportabili su Linux?


15

Poiché il sistema operativo Apple OS-X è un derivato UNIX (BSD) e l'architettura Mac (Intel) sottostante è la stessa, perché non è molto semplice far funzionare le applicazioni specifiche di Apple su Linux?

Risposte:


23

OS X è in realtà (principalmente) la shell grafica proprietaria in cima a BSD. Per creare un'applicazione GUI di OS X, è necessario seguire l'api che Apple ha esposto, e quindi questo non è multipiattaforma e non facilmente trasportabile.
Ecco perché la maggior parte delle librerie può essere facilmente trasferita (in realtà la maggior parte è sviluppata su Linux) su Linux ma non sulle loro shell grafiche.

Nota a margine: ci sono framework là fuori con i quali è possibile creare applicazioni GUI multipiattaforma. Mi viene in mente Qt . Ma il fatto che tali framework siano multipiattaforma rende anche le applicazioni create con loro meno user friendly su una piattaforma specifica rispetto a un'applicazione GUI "nativa". Tali framework tendono a rendere tutto generico su piattaforme diverse, il che nel caso di Apple è negativo, perché Apple ha creato un'esperienza utente molto specifica che non si adatta facilmente ad altre piattaforme.

Modifica (per incorporare i commenti nella risposta - grazie @Nick, @kbisset e @John):
una soluzione sarebbe quella di portare l'intera shell grafica di OS X (le librerie Cocoa / Core di origine chiusa - che è ciò che rende OS X davvero unico ) a Linux. E tecnicamente, Apple potrebbe farlo abbastanza facilmente, ma non hanno motivo di farlo, poiché il loro intero modello di business è l'unicità di tutta la loro piattaforma: hardware e software.
È CONCEPIBILE che qualcuno possa tentare di clonare le biblioteche, ma ciò richiederebbe decenni di lavoro, e probabilmente non sarebbe mai giusto a causa di tutte le chiamate non documentate che dovrebbero essere replicate.


Perché la shell grafica proprietaria non può essere facilmente trasferita su Linux se è in esecuzione su BSD? Ho capito il problema quando l'architettura sottostante era diversa, ma ora l'architettura sottostante è solo Intel, perché la shell grafica non è solo un'altra libreria?
Nick Pierpoint,

8
Due ragioni. Innanzitutto, è molto più di una semplice shell grafica. È un intero strato sopra Unix, su cui Apple lavora da anni. Secondo, il codice non è disponibile. Quindi dovrebbe essere riscritto da zero. Apple potrebbe probabilmente farlo in breve tempo, ma non c'è motivo per farlo.
KeithB

1
Quindi ... almeno per Apple non c'è davvero un problema tecnico: potrebbero migrare OS-X per eseguirli su Linux in modo relativamente semplice poiché lo hanno già in esecuzione su UNIX. Ovviamente un grosso problema per tutti gli altri in quanto il codice è di tipo chiuso e non esiste un'API completamente pubblicata. È un giusto riassunto?
Nick Pierpoint,

3
Nick: Essenzialmente, sì. Apple non ha interesse a spostare OSX su una piattaforma Linux; perché dovrebbero aver investito così tanto nella loro piattaforma Darwin open source (il livello BSD) e nelle loro librerie Cocoa / Core * (che è ciò che rende OSX davvero unico). Il loro intero modello di business è l'unicità dell'intera piattaforma: hardware e software. È CONCEPIBILE che qualcuno possa tentare di clonare le biblioteche, ma ciò richiederebbe decenni di lavoro, e probabilmente non sarebbe mai giusto a causa di tutte le chiamate non documentate che dovrebbero essere replicate. E a che fine?
John Rudy,

4
GNUStep è un'implementazione open source di molte delle librerie principali che sono ora in OS X, tuttavia Apple ne ha aggiunte molte da allora, quindi il porting non è ancora così semplice: wiki.gnustep.org/index.php/Cocoa
TRS-80

2

Per applicazioni specifiche di Apple intendi le app GUI? Una volta che passi sopra la riga di comando ci sono API specifiche di Apple per tutto (grafica, suono, ecc.) Che non sono supportate su Linux, quindi non puoi facilmente trasferire le applicazioni.


1

Il livello grafico non è affatto lo stesso. OS X utilizza un framework grafico proprietario, Linux utilizza X (X11 / X.org)

Quasi tutte le applicazioni native di OS X utilizzano framework come Cocoa, CoreAnimation e così via, disponibili solo su OS X.

Ad esempio, supponiamo che tu abbia un'applicazione che memorizza una password per l'utente - su OS X, questo userebbe il suo sistema di portachiavi e le API pertinenti. Se dovessi eseguire il porting di questo su Linux, non esiste un equivalente diretto, quindi dovresti reimpiantare l'intera funzionalità. Questa è una funzione minuscola e richiederebbe una grande riscrittura.

Se si scrive l'applicazione utilizzando una libreria GUI multipiattaforma come GTK, Qt o wxWidgets e il porting sarà molto più semplice (o "possibile") - ma i sistemi operativi sono ancora molto diversi in termini di UI (ad esempio, il sistema operativo X usa una barra dei menu separata, mentre Linux tende ad avere la sua barra dei menu per ogni finestra)

Una delle migliori porte multipiattaforma che ho visto è Transmission , che implementa la sua funzionalità principale come libreria (che contiene il minor numero possibile di codice specifico della piattaforma), quindi creando GUI native per ciascuna piattaforma, separatamente. Ciò significa che ogni porta condivide molto codice, ma tutte hanno buone interfacce native (piuttosto che una singola interfaccia che si adatta bene su Linux, ma è fuori posto su OS X o viceversa)

Esiste un progetto chiamato Cocotron che "mira a implementare un'API Objective-C multipiattaforma simile a quella descritta dalla documentazione Cocoa di Apple Inc." che potrebbe potenzialmente rendere il porting molto più semplice, ma sembra che ci sia pochissima attività negli ultimi tempi (l'ultimo post sul blog è stato a dicembre 2008)


1

Perché la maggior parte delle applicazioni dipende molto più del processore e dell'architettura sottostante della macchina su cui è in esecuzione. Dipendono anche dai toolkit dell'interfaccia utente e da altre librerie specifiche della piattaforma.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.