yang lebih penting, apakah Microsoft akan pernah melakukan porting .NET ke platform selain Windows?
Kerry
Jawaban:
325
Pembaruan : Karena saya menulis jawaban ini dua tahun lalu, kami membuat Mono dijalankan di Android. Pekerjaan tersebut mencakup beberapa langkah: porting Mono ke Android, mengintegrasikannya dengan Visual Studio, membangun plugin untuk MonoDevelop di Mac dan Windows dan mengekspos Java Android APIs ke bahasa .NET. Ini sekarang tersedia di http://monodroid.net
Mono di Android didasarkan pada runtime Mono 2.10, dan default ke profil 4.0 dengan kompiler C # 4.0 dan menggunakan mesin pengumpulan sampah SGen baru Mono, serta sistem pengumpulan sampah terdistribusi baru kami yang menjalankan GC di seluruh Jawa dan Mono.
Tautan di bawah ini mencerminkan Mono di Android pada Januari 2009, saya menyimpannya untuk konteks sejarah
Mono sekarang bekerja di Android berkat karya Koushik Dutta dan Marc Crichton.
Yah, saya katakan, bukan MS atau Google tetapi mungkin Miguel dan di sini Anda (well, saya tahu itu bukan Anda, tapi entah bagaimana dekat) Tautan hebat Miguel. Apakah Anda pikir Google akan pernah mendukung ini? Maksud saya mereka mengambil port di bawah tenda mereka? :) Jika saya bisa, saya akan memilih jawaban saya sendiri :)
OscarRyz
6
Uhm, itu "hanya" berjalan di debian yang berjalan pada perangkat keras yang sama. Tidak cukup porting ke "android" menurut pendapat saya, tapi sepertinya itu bukan masalah besar untuk port sepertinya sepenuhnya.
sandos
1
Saya bertanya-tanya, apakah sudah ada pembicaraan dengan Google untuk mempermudah pemasangan ini? Mungkin memasangnya sebagai unduhan gratis dari Pasar? Izinkan aplikasi .Net ditempatkan di pasar?
csauve
1
Sayang sekali itu tidak bekerja dengan Visual Studio Express ...
Rockcoder
1
Luar biasa. Senang melihat jawaban yang diperbarui. +1 Miguel
Steven Evers
78
Ya, itu akan mungkin dan itu tidak akan sulit. Semua yang diperlukan pada saat ini untuk memulai adalah semacam konverter yang akan mengubah MSIL menjadi bytecode Dalvik . Karena kedua format bersumber terbuka dan didokumentasikan dengan baik, tidak akan ada masalah dengannya.
Jadi, menulis aplikasi Android dalam C # atau VB.NET akan dimungkinkan, pertanyaannya adalah seberapa banyak perpustakaan standar .NET framework akan didukung. Tapi itu masalah lain.
Oscar Reyes menulis:
Saya cukup yakin jika Google memberikan minat pada .net, mereka akan mendesain sesuatu ketika Android berada di tahap pertama, tidak sekarang ketika mereka berada dalam tahap produksi. Maksud saya itu tidak mungkin, yang saya katakan adalah mereka tidak tertarik. Mungkin dalam mmm hhhh 10 thn.
Sebenarnya apa yang telah mereka rancang sangat kompatibel dengan Java dan .NET
Mereka tidak dapat melakukan semuanya sekaligus, tetapi jika Anda melihat ke Android SDK, ada alat yang disebut dx . Alat ini mengubah bytecode Java menjadi bytecode Dalvik, jadi dengan kata lain, Anda dapat menjalankan program yang ditulis dalam Java di Android tanpa usaha hari ini. Sekarang alat yang sama diperlukan untuk .NET.
Mempertimbangkan betapa miripnya. NET dan Java, itu benar-benar masalah waktu.
ddimitrov menulis:
Terjemahan .Net-> Java-> Dalvik dapat dilakukan bahkan sekarang ( http://dev.mainsoft.com/ ), tapi saya pikir Anda meremehkan kurangnya perpustakaan .Net. Tentu saja seseorang dapat mem-porting Mono, tetapi ini jelas bukan upaya sepele.
Tidak perlu porto Mono. Android sudah memiliki VM dan beberapa API dasar. Semua yang dibutuhkan adalah CIL-> Dalvik converter dan .NET wrapper kecil untuk Android API (dan mungkin beberapa implementasi dasar dari beberapa kelas .NET standar). Itu dia.
Pembaruan: .NET sudah berfungsi di Android - Anda memerlukan produk yang disebut Monodroid ( http://monodroid.net ) seperti yang dinyatakan di atas.
Ya, kami tidak pernah tahu ... mungkin, mungkin ... Yah, buatlah 4 tahun, bukan 10 ...: P
OscarRyz
16
Saya tidak setuju. Semua yang Anda katakan IS secara teknis mungkin, tetapi saya pikir Anda meremehkan pekerjaan yang dibutuhkan oleh urutan besarnya. Itu selalu mudah untuk mengumpulkan bukti-konsep-seperti halo silang dikompilasi dalam beberapa jam. Tetapi untuk mengatur pembungkus untuk semua kelas BANYAK pekerjaan.
Lena Schimmel
4
@ Brian, video yang Anda poskan tentang iPhone bukan Android.
lubos hasko
14
Yah, mengingat Google Java affinity itu tidak terlalu mengejutkan bahwa mereka tidak menggunakan .NET dengan ini. Ya, menggunakan Mono mungkin layak tetapi saya hampir yakin Google akan menghindari penggunaan .NET dengan semangat yang sama seperti Microsoft akan menghindari penggunaan Linux.
Joey
2
"Perusahaan kecil tidak akan mempertaruhkan masa depan mereka kecuali ada perusahaan besar yang membebani mereka." Novell sudah mensponsori itu. Dan Microsoft mendukung proyek turunan Moonlight baik dengan menyediakan codec dan test suites.
sblom
23
Miguel de Icaza mengumumkan di blog - nya pada 17 Februari 2010 bahwa mereka mulai bekerja pada mono untuk android yang akan disebut MonoDroid.
Ini akan mirip dengan MonoTouch di iphone tetapi untuk android sebagai gantinya.
Ini akan memberikan pengikatan ke UI Android, sehingga aplikasi akan terlihat dan terasa aplikasi Android asli hidup. Ini akan mengharuskan Anda untuk menulis UI khusus android.
Namun Anda akan dapat menggunakan kembali perpustakaan tingkat bawah yang ada tanpa perlu melakukan kompilasi ulang.
Beta Monodroid sekarang tersedia untuk orang yang mendaftar untuk program beta lebih awal.
Damian
ya itu saat ini dalam versi beta pribadi, yang saya lakukan untuk mendaftar tetapi sejauh ini telah melewatkan undangan :(
trampster
9
Ada Mono untuk Android, kerangka NET. Porting untuk Android. Dan ada MonoDroid, tumpukan pengembangan untuk menggunakan C # dan inti .NET API untuk mengembangkan aplikasi berbasis Android. MonoDroid Preview 1 telah dirilis beberapa hari yang lalu.
Karena ini adalah salah satu tautan pertama di Google ketika mencari dukungan Android dan .net, cukup pas untuk memposting ini di sini.
Proyek mono bekerja pada SDK untuk mengembangkan aplikasi Android menggunakan bahasa CIL seperti C #. Sisi buruknya adalah itu akan menjadi produk komersial. monodroid
MonoDroid tersedia untuk pratinjau. Saya pikir itu akan menjembatani kesenjangan. Namun, MonoDroid bisa menjadi pilihan yang mahal untuk pengembangan. Alat pengembangan mereka lainnya harganya antara $ 199 dan $ 4000 (The MonoTouch .. Alat pengembang iPhone ... dihargai antara $ 399 dan $ 3999). Jika orang mengembangkan aplikasi dengan alat ini, mereka membutuhkan model bisnis yang sangat kuat untuk melihat beberapa pengembalian.
Saya suka jawaban itu. Ini menunjukkan bahwa itu mungkin, tetapi jika Anda menonton video itu, itu juga menunjukkan berapa banyak masalah yang masih terbuka untuk dipecahkan dan berapa banyak pekerjaan yang ada di balik semua itu.
Lena Schimmel
4
Pelabuhan Mono yang dimodifikasi juga sepenuhnya memungkinkan.
@ jarang, apakah Anda memiliki pengalaman dengan porting perangkat lunak dari desktop / server OS ke embedded? Saya memiliki beberapa pengalaman pengembangan ponsel (Java dan Brew) dan IMHO, Anda terlalu meremehkan upaya tersebut. Itu mungkin, tetapi tidak pasti dalam 3 tahun ke depan.
ddimitrov
@ddmitrov: Pertanyaannya adalah apakah platform android dengan dukungan EVER. NET, bukan apakah itu akan dalam tiga tahun ke depan. Saya hanya berpendapat bahwa karena Mono adalah implementasi open source dari .NET akan lebih mudah untuk membangun versi android dari Mono daripada memulai dari awal.
akdom
2
Tidak butuh tiga tahun pada akhirnya. Dan orang-orang di Xamarin berencana untuk melakukannya lagi dalam waktu kurang dari enam bulan.
Justin
4
Framework .NET compact telah diangkut ke Symbian OS ( http://www.redfivelabs.com/ ). Jika .NET sebagai platform 'tertutup' dapat porting ke platform ini, saya tidak dapat melihat alasan mengapa itu tidak dapat dilakukan untuk Android.
Sudahkah Anda menggunakan kerangka kerja yang ringkas? Saya lakukan setiap hari di tempat kerja saya dan porta mono dalam bentuk MonoDroid akan lebih baik.
trampster
4
.NET dan Mono adalah lingkungan yang hebat, dengan banyak alat dan dan basis keterampilan yang sangat baik dari orang-orang yang tahu cara menggunakannya.
Saya pikir Mono memiliki kesempatan untuk menjadi lingkungan pengembangan lintas platform mobile pilihan, mengingat mereka adalah satu-satunya alternatif untuk Objective-C pada iPhone dan harus portabel untuk Android, dan .NET sudah ada di Windows Mobile.
Saya benar-benar berharap untuk melihat implementasi yang solid dari Mono di Android, dengan pembungkus untuk API Android seperti dengan Monotouch, dan akan siap untuk membayarnya karena saya tidak dalam posisi untuk melakukannya sendiri.
Anda lebih cenderung melihat implementasi Android dari Silverlight. Microsoft rep telah mengkonfirmasi bahwa itu mungkin, vs iPhone di mana perwakilan mengatakan itu bermasalah.
Tetapi versi kerangka kerja Net adalah mungkin. Hanya butuh seseorang yang begitu peduli :)
Tapi sungguh, pindah dari C # ke Java bukan masalah besar dan mempertimbangkan perbedaan drastis antara kedua platform (PC vs G1), sepertinya tidak mungkin Anda bisa bertahan dengan satu basis kode untuk aplikasi apa pun yang Anda ingin menjalankan keduanya.
Menurut pendapat saya, secara teknis dimungkinkan untuk mengkonversi Bytecode CLI ke Dalvik, dan menulis kelas wrapper untuk beberapa fitur inti seperti Koleksi, akses File, dll., Bahkan itu akan menjadi kerja keras.
Tetapi aplikasi .NET desktop yang dijalankan pada android akan terasa asing, karena akan memiliki GUI Windows-Like klasik yang tidak dapat digunakan pada perangkat sentuh. Jika, di sisi lain, Anda membuat kode GUI seperti Android di .NET, Anda akan membutuhkan satu set pembungkus (perhatikan bahwa pembungkus hanyalah sebaliknya terhadap pembungkus yang disebutkan di atas).
Saya tidak yakin apakah aplikasi mobile .NET akan terasa asli di Android, tapi saya rasa tidak.
Mungkin Anda tertarik pada pendekatan lain: Anda dapat menulis aplikasi Anda dalam bahasa Java. Anda kemudian dapat mengkompilasinya ke .NET melalui Microsoft J # (saya tahu itu dihentikan tetapi Anda masih dapat mengunduh dan menggunakannya) dan menggunakan kode Java yang sama di android. Sekali lagi, itu untuk kelas inti alias logika bisnis dan lagi Anda harus menulis GUI belakang. Mungkin Anda juga dapat menggunakan J2ME, yang tidak akan dapat Anda lakukan jika menggunakan .NET.
tidak itu tidak akan Anda anggap bahwa bentuk menang akan porting, yang merupakan ide yang sangat buruk, MonoDroid akan memiliki binding ke widget UI android, sehingga akan terlihat persis seperti aplikasi android asli, pengguna bahkan tidak perlu mengetahuinya sedang berjalan di MonoDroid
trampster
Juga Bytecode CLI ke Dalvik adalah ide yang buruk, runtime mono dan VM sudah bekerja pada ARM, membuatnya berjalan di android tidak akan menjadi masalah. Dan melihat sebagai mono dikompilasi JIT dan Dalvik ditafsirkan. Menjalankan mono runtime akan jauh lebih cepat.
trampster
2
NET untuk Android. Tampaknya seperti kemungkinan nyata bagi saya. Ada berita bahwa Microsoft akan merilis Silverlight yang tepat untuk Android - Jangan pernah meremehkan keuntungan bagi Microsoft untuk memasukkan boot ke Apple. Sebuah smartphone yang lebih cepat, lebih kaya fitur, siklus hidup pengembangan lebih cepat, perangkat keras yang mengesankan, Flash & Silverlight sebagai standar yang dapat dipasang.
Microsoft memiliki kepentingan dalam meningkatkan Android, dan pada saat yang sama, aplikasi akan digunakan untuk Silverlight di Android juga akan bekerja pada OS Windows Phone 7 dengan multi-touch, GPS, dll., Dll.
Jawaban:
Pembaruan : Karena saya menulis jawaban ini dua tahun lalu, kami membuat Mono dijalankan di Android. Pekerjaan tersebut mencakup beberapa langkah: porting Mono ke Android, mengintegrasikannya dengan Visual Studio, membangun plugin untuk MonoDevelop di Mac dan Windows dan mengekspos Java Android APIs ke bahasa .NET. Ini sekarang tersedia di http://monodroid.net
Mono di Android didasarkan pada runtime Mono 2.10, dan default ke profil 4.0 dengan kompiler C # 4.0 dan menggunakan mesin pengumpulan sampah SGen baru Mono, serta sistem pengumpulan sampah terdistribusi baru kami yang menjalankan GC di seluruh Jawa dan Mono.
Tautan di bawah ini mencerminkan Mono di Android pada Januari 2009, saya menyimpannya untuk konteks sejarah
Mono sekarang bekerja di Android berkat karya Koushik Dutta dan Marc Crichton.
Anda dapat melihat videonya sedang diputar di sini: http://www.koushikdutta.com/2009/01/mono-on-android-with-gratuitous-shaky.html
Dan Anda bisa mendapatkan instruksi untuk membangun Mono sendiri di sini: http://www.koushikdutta.com/2009/01/building-mono-for-android.html
Anda bisa mendapatkan patokan membandingkan JIT Mono vs juru bahasa Dalvik di sini: http://www.koushikdutta.com/2009/01/dalvik-vs-mono.html
Dan tentu saja, Anda bisa mendapatkan gambar pra-konfigurasi dengan Mono di sini (buka bagian bawah pos untuk detail tentang penggunaannya): http://www.koushikdutta.com/2009/01/building-mono-for- android.html
sumber
Ya, itu akan mungkin dan itu tidak akan sulit. Semua yang diperlukan pada saat ini untuk memulai adalah semacam konverter yang akan mengubah MSIL menjadi bytecode Dalvik . Karena kedua format bersumber terbuka dan didokumentasikan dengan baik, tidak akan ada masalah dengannya.
Jadi, menulis aplikasi Android dalam C # atau VB.NET akan dimungkinkan, pertanyaannya adalah seberapa banyak perpustakaan standar .NET framework akan didukung. Tapi itu masalah lain.
Sebenarnya apa yang telah mereka rancang sangat kompatibel dengan Java dan .NET
Mereka tidak dapat melakukan semuanya sekaligus, tetapi jika Anda melihat ke Android SDK, ada alat yang disebut dx . Alat ini mengubah bytecode Java menjadi bytecode Dalvik, jadi dengan kata lain, Anda dapat menjalankan program yang ditulis dalam Java di Android tanpa usaha hari ini. Sekarang alat yang sama diperlukan untuk .NET.
Mempertimbangkan betapa miripnya. NET dan Java, itu benar-benar masalah waktu.
Tidak perlu porto Mono. Android sudah memiliki VM dan beberapa API dasar. Semua yang dibutuhkan adalah CIL-> Dalvik converter dan .NET wrapper kecil untuk Android API (dan mungkin beberapa implementasi dasar dari beberapa kelas .NET standar). Itu dia.
Pembaruan: .NET sudah berfungsi di Android - Anda memerlukan produk yang disebut Monodroid ( http://monodroid.net ) seperti yang dinyatakan di atas.
sumber
Miguel de Icaza mengumumkan di blog - nya pada 17 Februari 2010 bahwa mereka mulai bekerja pada mono untuk android yang akan disebut MonoDroid.
Ini akan mirip dengan MonoTouch di iphone tetapi untuk android sebagai gantinya.
Ini akan memberikan pengikatan ke UI Android, sehingga aplikasi akan terlihat dan terasa aplikasi Android asli hidup. Ini akan mengharuskan Anda untuk menulis UI khusus android.
Namun Anda akan dapat menggunakan kembali perpustakaan tingkat bawah yang ada tanpa perlu melakukan kompilasi ulang.
sumber
Ada Mono untuk Android, kerangka NET. Porting untuk Android. Dan ada MonoDroid, tumpukan pengembangan untuk menggunakan C # dan inti .NET API untuk mengembangkan aplikasi berbasis Android. MonoDroid Preview 1 telah dirilis beberapa hari yang lalu.
sumber
Karena ini adalah salah satu tautan pertama di Google ketika mencari dukungan Android dan .net, cukup pas untuk memposting ini di sini.
Proyek mono bekerja pada SDK untuk mengembangkan aplikasi Android menggunakan bahasa CIL seperti C #. Sisi buruknya adalah itu akan menjadi produk komersial. monodroid
sumber
MonoDroid tersedia untuk pratinjau. Saya pikir itu akan menjembatani kesenjangan. Namun, MonoDroid bisa menjadi pilihan yang mahal untuk pengembangan. Alat pengembangan mereka lainnya harganya antara $ 199 dan $ 4000 (The MonoTouch .. Alat pengembang iPhone ... dihargai antara $ 399 dan $ 3999). Jika orang mengembangkan aplikasi dengan alat ini, mereka membutuhkan model bisnis yang sangat kuat untuk melihat beberapa pengembalian.
sumber
Lihat ini xmlvm Saya pikir ini mungkin. Mungkin juga bisa mengecek video ini
sumber
Pelabuhan Mono yang dimodifikasi juga sepenuhnya memungkinkan.
sumber
Framework .NET compact telah diangkut ke Symbian OS ( http://www.redfivelabs.com/ ). Jika .NET sebagai platform 'tertutup' dapat porting ke platform ini, saya tidak dapat melihat alasan mengapa itu tidak dapat dilakukan untuk Android.
sumber
.NET dan Mono adalah lingkungan yang hebat, dengan banyak alat dan dan basis keterampilan yang sangat baik dari orang-orang yang tahu cara menggunakannya.
Saya pikir Mono memiliki kesempatan untuk menjadi lingkungan pengembangan lintas platform mobile pilihan, mengingat mereka adalah satu-satunya alternatif untuk Objective-C pada iPhone dan harus portabel untuk Android, dan .NET sudah ada di Windows Mobile.
Saya benar-benar berharap untuk melihat implementasi yang solid dari Mono di Android, dengan pembungkus untuk API Android seperti dengan Monotouch, dan akan siap untuk membayarnya karena saya tidak dalam posisi untuk melakukannya sendiri.
sumber
Anda lebih cenderung melihat implementasi Android dari Silverlight. Microsoft rep telah mengkonfirmasi bahwa itu mungkin, vs iPhone di mana perwakilan mengatakan itu bermasalah.
Tetapi versi kerangka kerja Net adalah mungkin. Hanya butuh seseorang yang begitu peduli :)
Tapi sungguh, pindah dari C # ke Java bukan masalah besar dan mempertimbangkan perbedaan drastis antara kedua platform (PC vs G1), sepertinya tidak mungkin Anda bisa bertahan dengan satu basis kode untuk aplikasi apa pun yang Anda ingin menjalankan keduanya.
sumber
Menurut pendapat saya, secara teknis dimungkinkan untuk mengkonversi Bytecode CLI ke Dalvik, dan menulis kelas wrapper untuk beberapa fitur inti seperti Koleksi, akses File, dll., Bahkan itu akan menjadi kerja keras.
Tetapi aplikasi .NET desktop yang dijalankan pada android akan terasa asing, karena akan memiliki GUI Windows-Like klasik yang tidak dapat digunakan pada perangkat sentuh. Jika, di sisi lain, Anda membuat kode GUI seperti Android di .NET, Anda akan membutuhkan satu set pembungkus (perhatikan bahwa pembungkus hanyalah sebaliknya terhadap pembungkus yang disebutkan di atas).
Saya tidak yakin apakah aplikasi mobile .NET akan terasa asli di Android, tapi saya rasa tidak.
Mungkin Anda tertarik pada pendekatan lain: Anda dapat menulis aplikasi Anda dalam bahasa Java. Anda kemudian dapat mengkompilasinya ke .NET melalui Microsoft J # (saya tahu itu dihentikan tetapi Anda masih dapat mengunduh dan menggunakannya) dan menggunakan kode Java yang sama di android. Sekali lagi, itu untuk kelas inti alias logika bisnis dan lagi Anda harus menulis GUI belakang. Mungkin Anda juga dapat menggunakan J2ME, yang tidak akan dapat Anda lakukan jika menggunakan .NET.
sumber
NET untuk Android. Tampaknya seperti kemungkinan nyata bagi saya. Ada berita bahwa Microsoft akan merilis Silverlight yang tepat untuk Android - Jangan pernah meremehkan keuntungan bagi Microsoft untuk memasukkan boot ke Apple. Sebuah smartphone yang lebih cepat, lebih kaya fitur, siklus hidup pengembangan lebih cepat, perangkat keras yang mengesankan, Flash & Silverlight sebagai standar yang dapat dipasang.
Microsoft memiliki kepentingan dalam meningkatkan Android, dan pada saat yang sama, aplikasi akan digunakan untuk Silverlight di Android juga akan bekerja pada OS Windows Phone 7 dengan multi-touch, GPS, dll., Dll.
sumber