Apakah ada tren untuk toolkit GUI lintas-platform? [Tutup]
12
Seperti apa tren penggunaan kerangka kerja GUI lintas platform saat ini? Apakah lebih banyak orang mulai menggunakan kerangka kerja lintas platform (seperti GTK +, Qt dan wxWidgets) atau apakah ada lebih banyak yang menggunakan lebih banyak kerangka kerja yang diikat platform (misalnya Kakao atau WPF)? Apakah kurang lebih stagnan? Apakah itu seperti rollercoaster? Menurut Anda seperti apa trennya, katakanlah, 5 tahun dari sekarang?
Lansekap OS berubah dengan sedikit orang yang menggunakan Windows (pengamatan pribadi). Ini seharusnya meningkatkan permintaan untuk cross-platform toolkit, bukan?
Sunting: Juga, toolkit (lintas platform) mana yang paling banyak berkembang, jika ya?
Sepertinya ada kecenderungan melawan kit lintas-platform. Jika orang ingin menulis sekali, jalankan di mana saja, mereka cenderung menggunakan HTML - membuat situs web. Orang-orang hanya menggunakan toolkit platform ketika tampilan dan rasa asli sangat dituntut, misalnya pada iPhone. Jadi jika seluruh alasan Anda repot dengan aplikasi non-web adalah untuk mendapatkan tampilan dan rasa asli, itu tidak masuk akal untuk menggunakan kit lintas-platform.
Toolkit lintas platform tidak pernah bekerja dengan baik; platform desktop tidak begitu mirip, dan sulit untuk benar-benar abstrak mereka. Menambahkan ponsel dan tablet ke dalam campuran membuatnya semakin sulit. Anda berakhir dengan abstraksi yang sangat bocor (lihat http://www.joelonsoftware.com/articles/LeakyAbstractions.html ). Seringkali lebih mudah memisahkan "mesin" Anda dari UI, dan menulis UI secara terpisah per-platform.
Tren untuk Mac menjadi lebih populer mungkin membuat kit lintas platform lebih tidak populer daripada lebih banyak. Saya pikir sering orang menggunakan kit lintas-platform lebih untuk secara teoritis memeriksa kotak centang lintas-platform daripada untuk mendapatkan hasil yang benar-benar baik di semua platform. Setelah Anda benar-benar peduli dengan banyak platform ... Anda mulai melihat bagaimana kit lintas-platform memiliki kelemahan.
Saya pikir ini memberi tahu bahwa banyak dari aplikasi lintas platform besar dan populer menemukan pendekatan lintas platform mereka sendiri (Firefox, Chrome, Eclipse, OpenOffice.org adalah contoh yang muncul di pikiran). Dengan memiliki kerangka kerja, mereka dapat melakukan abstraksi jika diperlukan. Semua aplikasi ini cenderung terlihat sama (dan tidak terutama yang asli) di semua platform.
Semua ini berkata, saya tidak memiliki statistik aktual atau apa pun. Tetapi saya telah melakukan banyak pekerjaan pada GTK +, dan memiliki keakraban dengan basis kode termasuk Firefox, Chrome, dan Eclipse. Jadi saya telah melihat tantangan teknis di sini secara langsung.
+1 Untuk web sebagai tren UI yang sedang berkembang, tapi saya rasa ini tidak menjawab pertanyaan OP.
Totaly setuju. Kami mengembangkan aplikasi IPTV kami di kotak Settop sepenuhnya menggunakan HTML5 / CSS3 / JavaScript. Itu adalah masa depan, belum lagi kerangka C / C ++ besar-besaran lainnya
Ernelli
1
Sebutan yang bagus, tapi saya sebenarnya tertarik dengan desktop toolkit lintas-platform . Masih terbalik.
Anto
@Anto - mungkin ingin menambahkan itu ke pertanyaan Anda. Dari membaca saya tidak mengambil di "desktop" sama sekali. Tentu saja, saya seorang programmer web dan tidak mengenali sebagian besar kerangka yang Anda sebutkan :)
Marcie
@Anto, Anda mungkin ingin menyebutkan desktop dalam pertanyaan Anda.
JBRWilkinson
7
Saya cenderung menggunakan cross-platform toolkit karena mereka memiliki desain yang lebih baik, bukan karena saya mencoba menjadi cross-platform. Misalnya, saya mengerjakan proyek yang ditulis dalam C ++ yang hanya menargetkan platform Windows. Apakah saya menggunakan win32 atau MFC, cukup banyak opsi HANYA tersedia untuk toolkit asli?
Astaga, tidak! Mereka cukup banyak tumpukan sampah spaghetti terburuk yang pernah saya lihat! Sambungan langsung dari sistem acara ke sistem "pesan" OS yang mendasari sangat tidak intuitif dan kurang ekspresif yang diperlukan untuk membuat program UI dengan cepat. Abstraksi tingkat yang lebih tinggi, saat ini hanya disediakan oleh cross-platform toolkit, sangat penting untuk tugas tersebut.
Itu hanya satu contoh juga. Saya bisa mengaduk-aduk dan daftar hal-hal yang lebih baik dilakukan oleh cross-platform toolkit. Faktanya adalah bahwa antarmuka grafis lebih mirip satu sama lain daripada berbeda. Ada sedikit perbedaan antara program jendela pada Windows vs yang ada di Linux misalnya. Jenis hal yang Anda lakukan saat membuat program UI hampir selalu persis sama, apa pun OS yang Anda targetkan ... dan hanya perbedaan kecil antara arsitektur seperti ponsel / palm vs desktop. Lapangan hanya berfokus pada metodologi lintas-platform karena a) itu diperlukan untuk banyak orang dan b) semuanya sama saja!
Salah satu argumen yang menentang pembuatan kerangka silang-platform adalah bahwa ia akan selalu ditargetkan pada penyebut umum terendah - klien kerangka kerja ingin menulis kode hanya sekali dan menjalankan 'di mana saja' didukung. Jadi satu platform perangkat keras yang luar biasa hanya akan terlihat seperti platform lain yang menjalankan kerangka kerja itu karena Anda tidak dapat memanfaatkan fitur-fitur khusus platform.
Seiring waktu, sayangnya ini menghasilkan kerangka kerja yang condong ke platform paling populer dan meretas dukungan bersama untuk platform lain, atau hanya memotongnya ketika anggaran / popularitas habis.
Salah satu cara untuk memanfaatkan kapabilitas platform-spesifik adalah memiliki sesuatu seperti #if PLATFORM_FEATURE_Xkonstruksi di sekitar semua kode tertentu atau pemeriksaan runtime yang setara yang menghasilkan kode mengasapi. Ini membosankan cukup cepat, karena varian dari platform yang sama akan membutuhkan penanganan khusus. Sebagai contoh, beberapa XBox v1 tidak memiliki hard drive, jadi game yang menggunakan alat lintas platform tidak dapat menggunakannya untuk caching, dibandingkan dengan versi PC yang dapat menjamin hard drive.
Untuk aplikasi Desktop / Produktivitas, platform look-and-feel sepertinya penting, tetapi banyak aplikasi memiliki gayanya sendiri sehingga tidak ada masalah untuk terlihat sama di semua platform, misalnya aplikasi yang dibuat dengan AIR.
Vendor perangkat keras seperti Apple, Sony, Nintendo dan Toshiba akan ingin memastikan bahwa produk mereka melakukan sesuatu untuk membedakan diri dari pesaing, misalnya Touch, Accelerometers / Gryoscopes, Blu-Ray, tampilan 3D. Tidak mungkin akan ada platform dengan semua fitur dari semua pesaing digulung menjadi satu (karena biaya dan kompleksitas), sehingga orang akan menang.
Faktanya telah ada kecenderungan menuju toolkit UI lintas platform dalam beberapa tahun terakhir. Toolkit itu adalah HTML / CSS / JavaScript.
Ini sangat sederhana untuk dikembangkan sekali dan melihatnya berjalan hampir identik di mana-mana.
Dan ya, perkembangan secara masif beralih dari desktop ke web. Anda melihatnya sendiri.
sumber
Saya cenderung menggunakan cross-platform toolkit karena mereka memiliki desain yang lebih baik, bukan karena saya mencoba menjadi cross-platform. Misalnya, saya mengerjakan proyek yang ditulis dalam C ++ yang hanya menargetkan platform Windows. Apakah saya menggunakan win32 atau MFC, cukup banyak opsi HANYA tersedia untuk toolkit asli?
Astaga, tidak! Mereka cukup banyak tumpukan sampah spaghetti terburuk yang pernah saya lihat! Sambungan langsung dari sistem acara ke sistem "pesan" OS yang mendasari sangat tidak intuitif dan kurang ekspresif yang diperlukan untuk membuat program UI dengan cepat. Abstraksi tingkat yang lebih tinggi, saat ini hanya disediakan oleh cross-platform toolkit, sangat penting untuk tugas tersebut.
Itu hanya satu contoh juga. Saya bisa mengaduk-aduk dan daftar hal-hal yang lebih baik dilakukan oleh cross-platform toolkit. Faktanya adalah bahwa antarmuka grafis lebih mirip satu sama lain daripada berbeda. Ada sedikit perbedaan antara program jendela pada Windows vs yang ada di Linux misalnya. Jenis hal yang Anda lakukan saat membuat program UI hampir selalu persis sama, apa pun OS yang Anda targetkan ... dan hanya perbedaan kecil antara arsitektur seperti ponsel / palm vs desktop. Lapangan hanya berfokus pada metodologi lintas-platform karena a) itu diperlukan untuk banyak orang dan b) semuanya sama saja!
sumber
Salah satu argumen yang menentang pembuatan kerangka silang-platform adalah bahwa ia akan selalu ditargetkan pada penyebut umum terendah - klien kerangka kerja ingin menulis kode hanya sekali dan menjalankan 'di mana saja' didukung. Jadi satu platform perangkat keras yang luar biasa hanya akan terlihat seperti platform lain yang menjalankan kerangka kerja itu karena Anda tidak dapat memanfaatkan fitur-fitur khusus platform.
Seiring waktu, sayangnya ini menghasilkan kerangka kerja yang condong ke platform paling populer dan meretas dukungan bersama untuk platform lain, atau hanya memotongnya ketika anggaran / popularitas habis.
Salah satu cara untuk memanfaatkan kapabilitas platform-spesifik adalah memiliki sesuatu seperti
#if PLATFORM_FEATURE_X
konstruksi di sekitar semua kode tertentu atau pemeriksaan runtime yang setara yang menghasilkan kode mengasapi. Ini membosankan cukup cepat, karena varian dari platform yang sama akan membutuhkan penanganan khusus. Sebagai contoh, beberapa XBox v1 tidak memiliki hard drive, jadi game yang menggunakan alat lintas platform tidak dapat menggunakannya untuk caching, dibandingkan dengan versi PC yang dapat menjamin hard drive.Untuk aplikasi Desktop / Produktivitas, platform look-and-feel sepertinya penting, tetapi banyak aplikasi memiliki gayanya sendiri sehingga tidak ada masalah untuk terlihat sama di semua platform, misalnya aplikasi yang dibuat dengan AIR.
Vendor perangkat keras seperti Apple, Sony, Nintendo dan Toshiba akan ingin memastikan bahwa produk mereka melakukan sesuatu untuk membedakan diri dari pesaing, misalnya Touch, Accelerometers / Gryoscopes, Blu-Ray, tampilan 3D. Tidak mungkin akan ada platform dengan semua fitur dari semua pesaing digulung menjadi satu (karena biaya dan kompleksitas), sehingga orang akan menang.
sumber