Adem KALIN – Yazılım Mühendisi

“Desktop Programlama” Gözüyle “Android Programlama” ya Bakış

Profesyonel hayatta, yaklaşık 4 yıldır bankacılık sektöründe ve özelinde de ana bankacılık uygulamaları tarafında çalışan birisiyim. Bu sebeple en yeni teknolojilerle uygulama geliştirme tarafım maalesef uzun bir süredir eksik kalmıştı. Artık bir an önce adım atmam gerektiğini düşünerek hem web programlama hem de Android uygulama geliştirme tarafında çabalamaya başladım. Kafamda bir ton uygulama fikri vardı ancak teknolojiye hakim olmadığım için maalesef girişimde bulunamıyordum.

Peki nasıl başlamalıydım? Bu süreç biraz ağır oldu benim için. Bu zamana kadar hep desktop uygulamaları geliştirmiştim. Veritabanı, OOP vs tamamdı ancak web ve Android çok farklı bir felsefeye sahipti. Andorioid geliştirme için şimdilik işi zaman yayarak ve minik kızımı uyuttuktan sonraki zamanlarda uykudan feragat ederek bunu biraz biraz aşmayı başardım. Hala çok başlangıç aşamasındayım ancak işin genel felsefesini kavradığım için bundan sonrasının daha hızlı olacağını düşünüyorum. Benimle aynı durumda olan, Android geliştirmek isteyen ancak nasıl başlayacağını bilmeyen arkadaşlara yardımcı olmak adına yaşadığım tecrübeleri yazılı hale getirmek istedim. Umarım faydalı olur. Zaman içerisinde ve vakit ölçüsünde devamı da gelecektir.

İlk olarak mobil dünyanın desktop tarafına göre farklarından ve kısıtlarından bahsetmek istiyorum. İyi bir yazılımcı için, geliştirdiği uygulamanın çalıştırdığı platform hakkında da bilgilidir, yazdığı kodun arka tarafta bilgisayar yada cihazın hangi kaynaklarını kullandığını bilmek ona avantaj sağlayacaktır.

Desktop_Programming_vs_Android_Programming

Desktop uygulamaları için kaynakları kullanmak açısından neredeyse kısıtımız yoktur. Tabi bu söylediğim “Kafanıza göre değişken kullanın, herşeyi belleğe alın, işlemciyi hoyratça kullanmaktan çekinmeyin” anlamında değil. Kullanılan dile göre Garbage Collection mekanizmasını iyi kullanmamanız halinde geliştirdiğiniz uygulama bellek şişmelerine ve bilgisayarın kilitlenmesine sebep olabilir. Fakat OOP yapısındaki ve daha birçok dilde bellek yönetiminin otomatik yapıldığını ve günümüzdeki kişisel ve iş bilgisayarlarının işlemci, bellek, disk gibi kaynaklarının ciddi şekilde yüksek olduğunu, sürekli elektrik ihtiyacının da karşılanıyor olduğunu düşünürsek özel durumlar dışında çok rahat davranabileceğimizi söyleyebiliriz.

Mobil bir cihaz için uygulama geliştirirken ise öncelikle bütün kaynaklarının -eskiye göre daha gelişmiş olsa da- çok kısıtlı olduğunu unutmamamız gerekiyor. Günümüz cihazları için en çok pil ve biraz da depolama sorunlarından yola çıkarak bir takım kısıtlar yada metodlar geliştirilmiş durumda diye düşünebiliriz. Mesela, herhangi bir desktop uygulama yazarken yukarıda bahsettiğim gibi rahatça işlemciye yüklenecek, onu sonuna kadar ve uzun süreli kullanacak kodlar geliştirebiliriz. Ancak mobil için bunu yaptığımızda, çalışacak kodda daha çok işlemci zamanı demek daha çok pil harcamak anlamına gelecektir. Başka bir örnek daha vermek gerekirse mobil cihaz 3G şebekesi üzerinden veri çekmek istediğinde, çekeceği veriyi tamamladığı ana kadar çok yüksek enerjiye ihtiyaç duymaktadır. Bu da yine direkt olarak pil ömrüne etki etmektedir.

Bunların dışında, Android uygulamasının kullanmak istediği her kaynak yada özellik (kamera, GPS konum, internet, jiroskop, rehber, arama …) arka planda işlemci, pil gibi kaynakların yada kullanıcı bilgilerinin kullanılmasına sebep olacaktır. Bunların rastgele kullanılmasını engellemek için geliştirme aşamasında gerekli izinlerin eklenmesi istenmektedir. Eklenen her özellik ise kullanıcı uygulamayı yükleneceği zaman kullanıcıdan birtakım izinler istemektedir bildiğiniz gibi. Gereksiz yere istenen izinler kullanıcının aklına şüphe düşürecek, aynı zamanda da o kaynaklara sahip olmayan cihazlara yüklenemeyeceği için hedef kitlenizin düşmesine sebep olacaktır. Bu konularla ilgili Murat Yener – “Paranoid, Android” sayfasındaki videoyu izlemenizi tavsiye ederim, şimdilik konuyu çok uzatmıyorum.

Android_Uygulama_İzinleri

Özet olarak, yazacağınız kodları planlarken öncelikle mobil ortamın şartlarını göz önünde bulundurmalıyız. Aslında mobil ve özel olarak da Android uygulama geliştirme felsefesi için en bariz farklar yukarıda bahsettiğim gibi konulardan dolayı ortaya çıkmaktadır.

Buraya kadar anlattıklarım, işin yerel kaynaklar yönüyle farkları idi. Bir sonraki yazımda ise işin asıl tarafı olan kodlama açısından iki yaklaşımın farklarından bahsetmeyi düşünüyorum. Takipte kalmanız dileğiyle 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir