Mobil dünyanın hızlı gelişimi ile paralel olarak mobil cihazlar için uygulama geliştirme noktasında da hızlı gelişmeler yaşanıyor. Özellikle 2015 sonrasında art arda duyurulan birçok programlama dilinin ve platformun ardından özellikle mobil uygulama geliştirmeye yeni başlamayı düşünen geliştiricilerin karar vermekte fazlası ile zorlandığı bir gerçek. Bu noktada bende elimden geldiğince bilgi birikimim doğrultusunda sizlere bu yazı serimde mobil uygulama geliştirmemize fırsat sunan platform veya programlama dillerini avantajları ve dezavantajları ile sizlere tanıtmaya çalışacağım. Başlangıcı da 2016 yılında tanıştığım Xamarin platformu ile yapmaya karar verdim, hazırsanız Xamarin nedir hep beraber öğrenelim.

Xamarin Tarihçesi
2011 yılında Miguel de Icaza, Nat Friedman ve Joseph Hill tarafından kurulan bir platform yani framework olan Xamarin'in çıkış noktası C# dilini kullanarak geliştiricilerin çapraz (cross) olarak mobil uygulama geliştirmesini sağlamaktır. 2011 yılında başlayan bu yolculuğun hızla gelişmesi ve birçok geliştirici tarafından kullanılması ardından 2016 yılında Micorsoft tarafından Xamarin'in satın alınması ile hem bilinirliğini hemde kullanım sayısını arttırmıştır. Günümüzde de hala Microsoft bünyesinde barınan Xamarin platformu güncel şekilde geliştirilmektedir.

Xamarin Nedir ?
Xamarin temel düzeyde açıklamak gerekirse C# dili ile cross platform mobil uygulama geliştirmenizi sağlayan bir framework. Bir kez yaz tüm cihazlarda kullan mottosu ile yola çıkan Xamarin üzerinde C# ile yazdığınız kodlar sonucunda Android, Ios ve Windows Phone için aynı anda uygulama geliştirebilirsiniz. Böylece zaman ve maliyet noktasında oldukça tasarruf etmenizi sağlayan platform aynı zamanda benzer platformlardan da native olması sebebi ile ayrılmaktadır. Geliştiriciler için birçok imkanı sunan Xamarin üzerinde Objective-C, Swift ya da Java ile yaptığınız her şeyi kolayca yapabilirsiniz. %75'ten fazla kodları ortaklaştırması ve IDE olarak Visual Studio gibi güçlü bir geliştirme ortamı sunması da Xamarin'i tercih etmeniz için en büyük nedenleri oluşturmakta.



Xamarin Avantajları Nelerdir ?

  • Hybrit değil native olarak uygulama geliştirme imkanı sunmaktadır.

  • Tek kod ile çoklu platform (Android,Ios ve Windows Phone) için uygulama geliştirebilirsiniz.

  • Zaman ve maliyet noktasında tasarruf etmenizi sağlar.

  • Objective-C, Swift ya da Java ile gerçekleştirdiğiniz tüm her şeyi Xamarin üzerinde yapabilirsiniz.

  • Microsoft bünyesinde olması sebebi ile destek sistemi güçlüdür.

  • Visual Studio aracılığı ile rahat bir geliştirme ortamı sunar.

  • Geniş kütüphane yelpazesine sahip ve geliştiricilere kütüphane yazma imkanı sunar.

  • Akıllı saatler için uygulama geliştirebilirsiniz.

  • C# bilgisini aynı şekilde Xamarin için kullanabilirsiniz. (Ülkemizde ki üniversiteleri baz alınarak avantaj olarak düşünüyorum.)

  • Geniş geliştirici sayısı ile kaynak noktasında global olarak imkanınız fazlası ile bulunmaktadır.

  • Xamarin SDK'ları, Xamarin.Forms ve Mono çalışma zamanı GitHub'da açık kaynak olarak geliştiricilerin katkıları için sunulmaktadır.





Xamarin Dezavantajları Nelerdir ?


  • Ios için uygulama geliştirmek için MAC sahibi olmanız gerekmektedir. Eğer Mac sahibiyseniz de Windows Phone uygulamalar için sanal makine üzerinde Windows işletim sistemi ile test edebilirsiniz. Kurulum dosyaları içinde aynı durum geçerlidir.

  • Xamarin ile geliştirdiğiniz uygulamalar resmi dillere göre daha fazla yer kaplamakta. Yani Android için Java ile geliştirdiğiniz uygulamanın boyutu ile Xamarin ile geliştirdiğiniz uygulamanın boyutu aynı olmamaktadır.

  • Türkçe kaynak noktasında yeterli seviyede değildir.





Xamarin.IOS ve Xamarin.Android
Xamarin ile cross platform olarak uygulamaları hazırlarken her platforma özel farklı arayüz tercihi kullanmak isterseniz Xamarin.Ios ve Xamarin.Android üzerinde işletim sistemine göre özelleştirme yapabilirsiniz. Böylece Ios veya Android arayüzünde direkt işletim sisteminde yer alan tasarım çizgilerini kullanmada hiçbir sorun yaşamazsınız.

Xamarin.Forms
Bu kısım ise uygulamayı geliştirdiğiniz her platform için ortak bir tasarım çizgisini kullanmanızı sağlamaktadır. Yani işletim sisteminden bağımsız olarak uygulamanızın tasarımı her cihazda aynı olarak gözükmesini istiyorsanız Xamarin.Forms ile geliştirme yapmanız mümkün.

Eğitim Tavsiyesi
Xamarin için Türkçe kaynak noktasında Microsoft Açık Akademi bünyesinde Yiğit Özaksüt tarafından hazırlanan eğitim videolarını izleyebilirsiniz. Ayrıca yine Yiğit Özaksüt tarafından açılan ve Türkiye'nin en kaliteli Xamarin eğitimlerini barındıran Xamarinturkiye.com sitesini de ziyaret edebilirsiniz.



Cross Nedir ?
Bir defa kod yazıp farklı platformlarda çalışmasına çapraz programlama (cross) denilmektedir. Xamarin'de yazıda daha önce belirttiğim gibi Android, Ios ve Windows Phone için tek kod ile uygulama geliştirmenize olanak sağlamaktadır. Ayrıca Samsung ve Intel ortaklığında geliştirilen Tizen platformu içinde Xamarin desteğini açıkladı fakat bu noktada Tizen gelişiminin yavaş ilerlemesi ve yeterli tanıtımının yapılmaması sebebi ile beklenen duruma gelemedi. Yani aslında teoride Xamarin ile tek kod ile 4 platform için uygulama hazırlayabilirsiniz. Ayrıca Android ve Ios için akıllı saatleri de kapsayacak şekilde geliştirme olanağınız bulunmakta. Yani bu durumda cross platform olayını sadece mobil cihazlar için değil ayrıca akıllı cihazlar içinde düşünebilirsiniz.

Native Nedir ?
Native uygulamalar geliştirme noktasında cihazların donanım ve yazılım kaynaklarına doğrudan erişmesi anlamına gelmektedir. Örneklendirmek gerekirse bir uygulama geliştiriyorsunuz ve bu uygulamada kamerayı kullanmanız gerekiyor. Bu noktada cihazın kamerasına direkt olarak erişebilmeniz için native uygulama geliştiriyor olmanız gerekiyor. Örneğin Xamarin benzeri diğer bir teknoloji olan Ionic bu noktada ara katman olarak Cordova kullanıyor yani bir noktada işleri daha uzun yoldan hallediyor.Bu da büyük projeler için performans kaybına sebep olmaktadır.



Biraz daha basite indirgemek gerekirse native uygulama geliştirirken hiçbir ara katmana ihtiyaç duymadan cihazların donanım ve yazılımlarına erişebilirsiniz bu durumda performans noktasında sizlere çok büyük bir avantaj sağlayacaktır. Aynı şekilde Ionic gibi Hybrit uygulama geliştirirken cihazın özelliklerine direkt olarak ulaşamazsınız bunun yerine belirtiğim gibi farklı platformlar ile ara bir köprü kurmanız gerekecek.

Son Olarak
Xamarin platformunun avantajları ve dezavantajları ile sizlere aktarmaya çalıştım. Bu süreçte yazılım geliştiricileri olarak projemize uygun teknolojiler kullanmamız gerektiğini unutmamak gerekiyor. Yani Xamarin şuan için çok avantajlı gözükebileceği gibi bazı noktalarda sizler için tam tersi durumlara sebep olabilir bu sebeple bir projeyi geliştirmeye başlamadan önce projeyi detaylandırarak zaman,kaynak, ekip gibi değerleri göz önüne alarak hangi dilin kullanılacağına karar verilmesi gerekmektedir.

Kaynak : www.hasaneksi.net