it-swarm.dev

Bir C # geliştiricisi olarak Java Android için geliştirmeyi veya bunun yerine MonoDroid'i kullanmayı) öğrenir misiniz?

Kendimi C # 'da oldukça tecrübeli buluyorum. Şu anda benim tercih ettiğim dil, ve temel olarak tüm mesleki deneyimimin yattığı yer.

Yine de MonoDroid projesinin varlığı beni şaşırtıyor. Anladığım kadarıyla her zaman C # ve Java çok yakındır. Öyleyse gerçekten hızlı bir şekilde. Bu yüzden, ilk Android uygulamasını geliştirmeyi düşündüğüm için, Java başlamak için yeterli ve o zaman sadece öğrenirken biraz öğren.

Bu, Java Android SDK ve Google API'sını öğrenmeyi gerektiren) zengin özelliklere sahip olması muhtemel MonoDroid kullanmaktan daha mantıklı olmaz mı? (bir .NET API olsa da) Zaten yeni bir dil (ve bu konuda son derece popüler bir dil) öğrenmenin ve zaten zaten bildiğiniz şeylere çok yakın olduğunda - biraz deneyim kazanmanın daha iyi olacağını hissediyorum. daha değerli beceriler kazanmadan deneyimlediğiniz bir teknolojiye sadık kalmak.

Belki de ortalama potansiyel MonoDroid kullanıcısını yanlış bir şekilde temsil ediyorum. Belki Java ve .NET deneyimli ve sadece .NET tercih eden insanlar için daha fazladır. Ya da belki de (aslında büyük olasılıkla) sadece dikkate almadım başka faktörler vardır. sadece Android Java kullanarak?) geliştirmek yerine neden MonoDroid kullanıyorsunuz?

46
Dan Tao

Herhangi bir yetkili C # programcısı hızla bir Java program yazmak için yeterli Android almak gerekir, ancak nokta bu değil olmalıdır. Bu bir kodun yeniden kullanımı meselesidir.

Şu andan itibaren yaklaşık altı ay düşünün, Android programınız popüler olduğunda ve kullanıcılarınız iPhone ve Windows Phone 7 için bir sürüm isterse, MonoDroid'i kullandıysanız, uygulamanızın çoğunu yeniden kullanabilirsiniz MonoTouch (iOS için Mono) ve Windows Phone SDK ile mantık.Şimdi web tabanlı bir sürüm istiyorlar, böylece ASP.Net projesine aynı sınıf kitaplıklarını dahil ediyorsunuz Masaüstü sürümleri Sorun değil, aynı sınıf kitaplığı çalışır. Linux ve OS X üzerinde Windows veya Mono altında net.

C veya C++ dışında, tüm bu hedeflerde aynı kodu yeniden kullanmanıza izin verecek başka bir dil düşünemiyorum.

Yorumlarda bazı endişeleri gidermek için düzenleyin: .Net ve Mono olmayacak tam bir program yazmanıza ve aynı programı her yerde kullanmanıza izin verir. bazı kodunu paylaşmanıza izin verecekler ve tüm platformlar arası programlama gibi, paylaşılan kod miktarı yazdığınız programların türüne ve kullanıcı arayüzünü ve donanım kodunu uygulamadan ne kadar iyi ayırdığınıza bağlıdır. mantık.

Ancak, Android uygulamanızı Java'ya yazarsanız, bunun ne kadarı iOS veya Windows Phone'da yeniden kullanılabilir mi? Yapmaya çalıştığım nokta budur. Üzerinde çalışmakta olan mevcut C # kitaplıkları vardı Mono için Android onları yeniden uygulamak için alacak daha çok daha kısa sürede, zaten Java biliyordum bile. Paylaşılan bazı kod var - değiştirilmemiş- - Mono sayesinde bir web sitesi, masaüstü programları ve mobil uygulamalar arasında iki farklı mobil platformda.

Dolaylı olarak bile, Mono'nun her mobil geliştirme durumu için mükemmel bir araç olduğunu ima etmek istememiştim. Bu bir ödünleşim, ancak Mono'nun çok daha iyi bir seçim olduğu durumlar olduğuna kesinlikle inanıyorum.

Jason S'nin başka bir bakış açısı için cevabına bakınız (ve oy verin!).

55
Kevin

Bu bir çeşit tamamlayıcı cevaptır, çünkü şimdiye kadar cevaplarda göz ardı edilen bir şey, aslında çapraz platform ile ilgilidir. Temelde iş mantığınız olan Xamarin'e göre, not kullanıcı arayüzünüz veya GPS, ses, adres defteri ve benzeri herhangi bir donanım kontrolü. Bunlar her platform için özel olarak yazılmalıdır. FAQ girişlerine bakın MonoTouch veya WindowsPhone 7 uygulamam var, Android ve hedef Android için Mono ile yeniden oluşturabilir miyim? .

Mono'yu kullanarak, kullanıcı arabiriminizi ve telefon kontrol kodunuzu C # kullanarak yazabilirsiniz, ancak herhangi bir platforma taşınabilir değildir. Her platform için UI ve telefon kontrolünü yazmanız gerekecek, ancak C # ile yazabilirsiniz. Her iki durumda da, Android üzerindeki UI kontrollerinin özelliklerini ve Android'nin telefon kaynaklarını nasıl işlediğini öğrenmeniz gerekecektir.

Mono'yu kullanarak, Android API'sini çağıran Mono API'sını öğrenmeniz gerekir. Ayrıca Mono'nun yeni Android özelliklerini uygulamasını beklemeniz ve tüm Android özelliklerini uygulamayı ummaları gerekir. C #, Java'dan daha güçlü olsa bile, Android SDK'yı doğrudan (Java'da) kullandığınızdan daha fazlasını yapamazsınız.

Doğrudan C # 'dan Android'e gidiyorsanız, C # sözdizimsel olarak Java'ya çok benzediğinden, bir C # geliştiricisinin Android için öğrenmesinin çoğu Android API'sını öğrenecektir.

Bazı düşünceler ...

C # to Android

Öğrenmeniz Gerekiyor

  • Android API'sı
  • Java API: Dize, Takvim ve etkinlik işleme vb.

Öğrenmenize gerek yok

  • Java sözdizimi: C # çok benzer bir sözdizimidir.

Diğer hususlar

  • Kodları platformlarda yeniden kullanamazsınız.
  • Sizinle Android SDK arasında herhangi bir bağımlılığınız olmayacak. Yeni Android özellikleri yayınlandıkça alacaksınız.
  • Android kodu için Mono'dan daha fazla destek ve örneğiniz olacaktır.

C # - Mono

Öğrenmeniz Gerekiyor

  • Android: Yine de Android'in kullanıcı arayüzü ve donanım kontrol özelliklerini öğrenmeniz gerekiyor.
  • Mono API: Android'in kullanıcı arayüzü ve donanımı ile ilgili şeyler yapmak için Mono'nun API'sini nasıl arayacağınızı öğrenmelisiniz.

Öğrenmenize gerek yok

  • Java API ve sözdizimi: C # ile geliştirebilirsiniz

Diğer hususlar

  • Kodu yeniden kullanın: Herhangi bir kullanıcı arayüzü veya donanım kontrol kodundan yoksun olduğu için saf "iş mantığı" olan C # kodunu yeniden kullanabilirsiniz. İdeal olmasına rağmen, temiz bir ayrılığa sahip olmak her zaman kolay değildir. Kodunuzun ne kadarının herhangi bir kullanıcı arayüzü veya donanım kontrolüne sahip olmadığını değerlendirmeniz gerekir.
  • Bağımlılıklar: Android API'sini uygulayan Mono'ya bağımlısınız. Android API sürümlerinden biraz gecikme olabilir veya bazı Android özelliklerinden hiçbir zaman uygulanamayabilir.
  • Aralarından seçim yapabileceğiniz daha az belge ve örneğiniz olabilir.
18
Jason S

Bence bunların çoğu mevcut kaynaklarla ilgili.

C # ve Java) içindeki sözdizimi benzer olabilir, ancak çok farklı şeyler sunarlar. Örneğin, standart Java = kütüphaneler bir kabus, C # ise oldukça hoş.

13
Corey

Görünüşe göre yeni bir dil öğrenmek için harika bir fırsat.

C # 'den Java, aynı kavramlara dayandığı için bir esinti. Java, C #' ın bir alt kümesi gibidir, bu yüzden öğrenmeniz gerekir bazı şeyler (mülkler ve montajlar gibi) ve bazı yeni sözleşmelere alışmak, ancak çoğunlukla beyinsiz olmalı.

9
Martin Wickman

Kısa tarih dersi - MonoDroid, MonoTouch'tan büyüdü. O zaman çok mantıklı geldi. Ne yazık ki, Novell satıldı ve tüm Mono ekibi işten çıkarıldı. İyi haber şu ki Miguel de Icaza finansman sağladı ve MonoTouch/MonoDroid olanı yeniden inşa etmek için yeni bir kıyafet başlattı. Yani onlar gerçekten fırlayana kadar bir tür gevşeksiniz.

Temmuz 2011 Güncellemesi: Miguel'in kıyafeti, tüm Mono * yığınına hak kazandı. Alışmışken alın.

3
Wyatt Barnett