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?
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?
Jawaban:
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.
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)
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.