Mengapa tidak semua aplikasi Mac mudah dibawa-bawa ke Linux?

15

Karena sistem operasi Apple OS-X adalah turunan UNIX (BSD), dan arsitektur yang mendasari (Intel) Mac adalah sama, mengapa tidak mudah untuk menjalankan aplikasi spesifik Apple yang berjalan di Linux?

Nick Pierpoint
sumber

Jawaban:

23

OS X sebenarnya (sebagian besar) shell grafis berpemilik di atas BSD. Untuk membuat aplikasi OS X GUI, kita harus mengikuti api yang telah diekspos Apple, dan karenanya ini bukan lintas platform dan tidak mudah portabel.
Itu sebabnya sebagian besar perpustakaan yang mudah porting (sebenarnya yang paling dikembangkan di Linux) untuk Linux tetapi tidak kerang grafis mereka.

Di samping catatan: Ada kerangka kerja di luar sana dengan mana Anda dapat membuat aplikasi GUI lintas platform. Qt terlintas dalam pikiran. Tetapi fakta bahwa kerangka kerja tersebut adalah lintas platform juga membuat aplikasi yang dibuat dengan mereka kurang ramah pengguna pada platform tertentu daripada aplikasi GUI "asli". Kerangka kerja tersebut cenderung membuat semuanya terlihat generik di seluruh platform, yang dalam kasus Apple buruk, karena Apple menciptakan pengalaman pengguna yang sangat spesifik yang tidak mudah "cocok" dengan platform lain.

Edit (untuk memasukkan komentar dalam jawaban - terima kasih @Nick, @kbisset dan @John):
Sebuah solusi adalah dengan mem- port seluruh shell grafis OS X (sumber tertutup perpustakaan Cocoa / Core - yang membuat OS X benar-benar unik ) ke Linux. Dan secara teknis, Apple bisa melakukan itu dengan mudah, tetapi mereka tidak punya alasan untuk, karena seluruh model bisnis mereka adalah keunikan dari seluruh platform mereka - perangkat keras dan perangkat lunak.
Dapat disimpulkan bahwa seseorang dapat berupaya untuk mengkloning perpustakaan, tetapi itu akan membutuhkan waktu puluhan tahun bagi manusia, dan mungkin tidak akan pernah benar karena semua panggilan tidak berdokumen yang harus direplikasi.

fretje
sumber
Mengapa cangkang grafis berpemilik relatif tidak mudah diangkut ke Linux jika sedang berjalan di BSD? Saya memahami masalah ketika arsitektur yang mendasarinya berbeda, tetapi sekarang arsitektur yang mendasarinya hanya Intel, mengapa tidakkah shell grafis hanya satu perpustakaan lagi?
Nick Pierpoint
8
Dua alasan. Pertama, lebih dari sekedar shell grafis. Ini adalah seluruh lapisan di atas Unix, yang telah dikerjakan Apple selama bertahun-tahun. Kedua, kode tidak tersedia. Jadi itu perlu ditulis ulang dari awal. Apple mungkin bisa melakukannya dalam waktu singkat, tetapi tidak ada alasan bagi mereka untuk melakukannya.
KeithB
1
Jadi ... untuk Apple setidaknya tidak ada masalah teknis - mereka dapat memigrasikan OS-X untuk berjalan di Linux dengan relatif mudah karena mereka sudah menjalankannya pada UNIX. Jelas merupakan masalah besar bagi semua orang karena kodenya adalah sumber tertutup dan tidak ada API yang diterbitkan sepenuhnya. Apakah itu ringkasan yang adil?
Nick Pierpoint
3
Nick: Intinya, ya. Apple tidak tertarik memindahkan OSX ke platform Linux; mengapa mereka harus ketika mereka telah berinvestasi begitu banyak dalam platform Darwin open source mereka (lapisan BSD) dan perpustakaan Cocoa / Core * sumber tertutup mereka (yang membuat OSX benar-benar unik). Seluruh model bisnis mereka adalah keunikan dari seluruh platform mereka - perangkat keras dan perangkat lunak. Dapat disimpulkan bahwa seseorang dapat berupaya untuk mengkloning perpustakaan, tetapi itu akan membutuhkan waktu puluhan tahun bagi manusia, dan mungkin tidak akan pernah benar karena semua panggilan tidak berdokumen yang harus direplikasi. Dan untuk apa?
John Rudy
4
GNUStep adalah implementasi open source dari banyak pustaka inti yang sekarang ada di OS X, namun Apple menambahkan banyak sejak saat itu sehingga porting masih tidak mudah: wiki.gnustep.org/index.php/Cocoa
TRS-80
2

Menurut aplikasi spesifik Apple, maksud Anda aplikasi GUI? Setelah Anda bergerak di atas baris perintah ada API khusus Apple untuk semuanya (grafik, suara, dll.) Yang tidak didukung di Linux sehingga Anda tidak dapat dengan mudah mem-port aplikasi.

Menandai
sumber
1

Lapisan grafis tidak sama sekali. OS X menggunakan kerangka kerja grafis berpemilik, linux menggunakan X (X11 / X.org)

Hampir semua aplikasi OS X asli menggunakan kerangka kerja seperti Cocoa, CoreAnimation, dan sebagainya, yang hanya tersedia di OS X.

Misalnya, Anda memiliki aplikasi yang menyimpan kata sandi untuk pengguna - di OS X, ini akan menggunakan sistem Keychain dan API yang relevan. Jika Anda ingin mem-port-kan ini ke Linux, tidak ada yang setara langsung, jadi Anda harus menambahkan kembali seluruh fitur ini. Itu adalah fitur kecil, dan akan membutuhkan penulisan ulang yang besar.

Jika Anda menulis aplikasi menggunakan pustaka GUI lintas platform seperti GTK, Qt atau wxWidgets, dan porting akan jauh lebih mudah (atau, "mungkin") - tetapi sistem operasinya masih sangat berbeda dalam hal UI (misalnya, OS X menggunakan bilah menu yang terpisah, sedangkan Linux cenderung memiliki bilah menu untuk setiap jendela)

Salah satu port lintas platform terbaik yang pernah saya lihat adalah Transmission , yang mengimplementasikan fungsi utamanya sebagai pustaka (yang berisi kode spesifik platform sesedikit mungkin), kemudian membuat GUI asli untuk setiap platform, secara terpisah. Ini berarti setiap port membagikan banyak kode, tetapi semua memiliki antarmuka asli yang baik (bukan antarmuka tunggal yang cocok dengan Linux, tetapi tidak pada OS X, atau sebaliknya)

Ada sebuah proyek bernama Cocotron yang "bertujuan untuk mengimplementasikan API Objective-C lintas-platform yang serupa dengan yang dijelaskan oleh dokumentasi Cocoa Apple Inc." yang berpotensi membuat porting lebih mudah, tetapi tampaknya ada aktivitas yang sangat sedikit belakangan ini. (posting blog terakhir pada bulan Desember 2008)

dbr
sumber
1

Karena sebagian besar aplikasi lebih bergantung pada prosesor dan arsitektur dasar dari mesin yang sedang mereka jalankan. Mereka juga bergantung pada toolkit antarmuka pengguna dan pustaka khusus platform lainnya.

Kent Boogaart
sumber