Saya akan menganggap diri saya cukup berpengalaman dalam C #. Ini bahasa pilihan saya saat ini, dan di situlah semua pengalaman profesional saya berada.
Tetap saja, saya bingung dengan keberadaan proyek MonoDroid . Pemahaman saya selalu bahwa C # dan Java sangat dekat. Seperti, jika Anda tahu satu, Anda dapat belajar yang lain dengan sangat cepat. Jadi, karena saya telah mempertimbangkan untuk mengembangkan aplikasi Android pertama saya, saya hanya berasumsi bahwa saya akan cukup membiasakan diri dengan Java untuk memulai dan kemudian hanya belajar seperti yang saya lakukan.
Bukankah ini lebih masuk akal daripada menggunakan MonoDroid, yang sepertinya kurang kaya fitur daripada Java Android SDK, dan bagaimanapun juga memerlukan mempelajari API-nya sendiri (walaupun. NET API)? Saya hanya merasa akan lebih baik untuk belajar bahasa baru (dan yang sangat populer saat itu) dan mendapatkan beberapa pengalaman di dalamnya — ketika itu sangat dekat dengan apa yang sudah Anda ketahui — daripada bertahan dengan teknologi yang Anda alami. dengan, tanpa memperoleh keterampilan yang lebih berharga.
Mungkin saya salah mengartikan potensi pengguna MonoDroid rata-rata. Mungkin lebih untuk orang-orang yang berpengalaman di Jawa dan .NET dan lebih suka. NET. Atau mungkin (sebenarnya kemungkinan) ada faktor-faktor lain yang belum saya pertimbangkan. Saya hanya ingin tahu, mengapa Anda menggunakan MonoDroid daripada hanya mengembangkan untuk Android menggunakan Java?
Jawaban:
Setiap programmer C # yang kompeten harus dapat dengan cepat mengambil cukup Java untuk menulis program Android, tapi bukan itu intinya . Ini masalah penggunaan kembali kode.
Pikirkan enam bulan dari sekarang, ketika program Android Anda populer dan pengguna Anda meminta versi untuk iPhone dan Windows Phone 7. Jika Anda telah menggunakan MonoDroid, Anda dapat menggunakan kembali sebagian besar logika aplikasi Anda dengan MonoTouch (Mono untuk iOS) dan Windows Phone SDK. Sekarang mereka menginginkan versi berbasis web, jadi Anda memasukkan pustaka kelas yang sama dalam proyek ASP.Net. Versi desktop? Tidak masalah, pustaka kelas yang sama berfungsi dengan .Net di bawah Windows atau Mono di Linux dan OS X.
Selain C atau C ++, saya tidak bisa memikirkan bahasa lain yang memungkinkan Anda menggunakan kembali kode yang sama pada semua target itu.
Sunting untuk mengatasi beberapa kekhawatiran dalam komentar: .Net dan Mono tidak akan membiarkan Anda menulis program lengkap dan menggunakan program yang sama di mana-mana. Mereka akan membiarkan Anda berbagi beberapa kode, dan seperti semua pemrograman lintas platform, jumlah kode bersama tergantung pada jenis program yang Anda tulis dan seberapa baik Anda memisahkan UI dan kode perangkat keras dari logika aplikasi.
Namun, jika Anda menulis aplikasi Android di Java, berapa banyak yang dapat digunakan kembali di iOS atau Windows Phone? Itulah yang ingin saya sampaikan. Saya memiliki perpustakaan C # yang bekerja pada Mono untuk Android dalam waktu yang jauh lebih singkat daripada yang diperlukan untuk mengimplementasikannya kembali, meskipun saya sudah mengenal Java . Saya memiliki beberapa kode yang dibagikan - tidak dimodifikasi - antara situs web, program desktop, dan aplikasi seluler pada dua platform seluler yang berbeda, terima kasih kepada Mono.
Saya tidak bermaksud mengatakan, bahkan secara tidak langsung, bahwa Mono adalah alat yang sempurna untuk setiap situasi pengembangan ponsel. Ini pertukaran, tetapi saya sangat yakin bahwa ada situasi ketika Mono adalah pilihan yang jauh lebih baik.
Silakan lihat (dan ingat!) Jawaban Jason S untuk perspektif lain.
sumber
Ini adalah semacam jawaban tambahan, karena satu hal yang tampaknya telah diabaikan dalam jawaban sejauh ini, menyangkut apa yang sebenarnya lintas platform. Menurut Xamarin sendiri yang pada dasarnya adalah logika bisnis Anda, bukan UI Anda atau kontrol perangkat keras apa pun seperti GPS, audio, buku alamat, dan sebagainya. Itu harus ditulis khusus untuk setiap platform. Lihat entri FAQ mereka Saya memiliki aplikasi MonoTouch atau WindowsPhone 7, dapatkah saya membangunnya kembali dengan Mono untuk Android dan menargetkan Android? .
Dengan menggunakan Mono, Anda dapat menulis UI dan kode kontrol telepon menggunakan C # tetapi tidak akan portabel untuk platform apa pun. Anda harus menulis UI dan kontrol telepon untuk setiap platform, meskipun Anda dapat menulisnya dalam C #. Either way, Anda masih harus mempelajari secara spesifik kontrol UI pada Android dan bagaimana Android menangani sumber daya ponsel.
Dengan menggunakan Mono, Anda harus mempelajari Mono API, yang memanggil ke dalam API Android. Anda juga harus menunggu Mono untuk mengimplementasikan fitur Android baru dan berharap mereka mengimplementasikan semua fitur Android. Bahkan jika C # lebih kuat daripada Java, Anda tidak akan dapat melakukan lebih dari jika Anda menggunakan Android SDK secara langsung (di Jawa).
Jika Anda langsung beralih dari C # ke Android, karena C # secara sintaksis mirip dengan Java, maka sebagian besar pembelajaran pengembang C # untuk Android akan mempelajari API Android.
Beberapa pertimbangan ...
C # ke Android
Perlu Belajar
Tidak perlu belajar
Pertimbangan lainnya
C # ke Mono
Perlu Belajar
Tidak perlu belajar
Pertimbangan lainnya
sumber
Learn the Mono API
? Berapa banyak yang sebenarnya perlu Anda ketahui untuk mengembangkan aplikasi Android? Dan apakah Anda benar-benar mencoba MonoDroid atau Anda menebak?Learn the Mono API
, saya berarti bahwa Anda masih perlu mempelajari API Android yang Mono ulangan, selain bagian-bagian itu tidak. Seberapa banyak yang perlu Anda ketahui? Tergantung pada aplikasinya, tergantung orangnya - itu bukan inti dari OP. Sudahkah saya menggunakan MonoDroid? Tidak. Saya punya pengalaman C #, Java dan Objective C, jadi tidak perlu. Saya memang mempertimbangkan Mono untuk portabilitas. Pada saat itu saya menjawab tidak ada yang menyebutkan batas portabilitas. Saya tidak keberatan orang tidak setuju dengan saya, tetapi itu saja tidak membuat jawaban saya miskin.Saya pikir banyak yang harus dilakukan dengan sumber daya yang tersedia.
The sintaks di C # dan Java mungkin mirip, tetapi mereka menawarkan hal-hal yang sangat berbeda. Misalnya, bekerja dengan tanggal menggunakan perpustakaan Java standar adalah mimpi buruk, sedangkan di C # itu cukup menyenangkan.
sumber
Sepertinya ini adalah kesempatan bagus untuk belajar bahasa baru , yang saya pikir Anda tidak boleh melewatkannya.
Pergi dari C # ke Jawa sangat mudah karena mereka didasarkan pada konsep yang sama. Java seperti subset dari C #, jadi Anda harus menghapus beberapa hal (seperti properti dan rakitan) dan membiasakan diri dengan beberapa konvensi baru, tetapi sebagian besar harus menjadi no-brainer.
sumber
Pelajaran sejarah cepat - MonoDroid tumbuh dari MonoTouch. Dibuat banyak akal pada saat itu. Sayangnya, Novell dijual dan seluruh tim Mono di-PHK. Berita baiknya adalah Miguel de Icaza mendapatkan pendanaan dan telah memulai pakaian baru untuk membangun kembali apa yang disebut MonoTouch / MonoDroid. Jadi Anda agak limbo sampai mereka benar-benar diluncurkan.
Pembaruan Juli 2011: Pakaian Miguel telah mendapatkan kembali hak atas seluruh tumpukan Mono *. Dapatkan saat masih hawt.
sumber