MOBiL CiHAZLAR iÇiN PROGRAMLAMA YÖNTEMLERi
Mobil cihazlardaki kısıtlılıklar, uygulama geliştirme yöntemlerinizi değiştirmenizi gerektirir. Burada kullanılabilecek genel programlama yaklaşımları vardır.
Uygun Programlama Dili
Burada yapacağınız seçim hedefinize yönelik olarak Java, C/C++ gibi dillerden biri olabilir. İşlemci hızı ve bellek kapasitesi gibi etkenler bu şeçimde belirleyici olabilir.
İşlem Yükünü Sunucu Tarafına Kaydırın
Zayıf istemci Web uygulaması geliştirme sürecine benzer olarak uygulamanın ana elemanları ve işlem yükü sunucu tarafında olacak şekilde bir tasarım gerçekleştirilmeyi tercih edin.
Uygulamayı Basitleştirin
Mümkün olan tüm yükü sunucu tarafına taşıdıktan sonraki adım uygulamanın basitleştirilmesidir. Bu adım en iyi uygulama tasarımı sırasında yapılır ve geliştirme sırasında zaman açısından büyük kazanç sağlar. En kolay ve açık basitleştirme gereksiz özelliklerin uygulamada bulundurulmamasıdır.
Daha Küçük Uygulamalar Geliştirin
Yapılabilecek bir sonraki adım daha küçük uygulamalar geliştirmektir. Daha küçük bir uygulama, cihaz üzerinde daha az bellek alanı kaplayacaktır, kurulması ve başlatılması da daha az vakit alacaktır. Kablosuz ağlar üzerinden indirilip çalıştırılan uygulamalar için de boyutun küçük olması olumlu olacaktır.
Çalışma Zamanında Daha Az Bellek Kullanın
Küçük cihazların çalışma zamanı bellek kapasiteleri çok kısıtlı olabilir; bazen bu kısıtlar açık da olmayabilir. Örneğin Palm işletim sistemi iki tür bellek tanımlar: dinamik ve depo. Dinamik bellek uygulama uygulamanın çalışma zamanı verisini saklar. Depo bellek ise yazmaya karşı korumalıdır ve kalıcıdır.
Nesnel Olmayan Tipler Kullanın
Kullanılan her nesneye çalışma zamanı belleğinden yeterli alan ayrılır. Bu nedenle tanımlanan her nesne uygulamanın performansını etkileyeceği gibi gereksinim duyduğu bellek alanını da belirleyen bir etken olacaktır. Bu nedenle mümkün olan yerlerden int ve bool gibi nesnel olmayan tipler kullanılması daha iyi olacaktır.
Bellek Temizleyiciye (Garbage Collector) Güvenmeyin
Geliştirme yaparken kullandığınız değişkenleri, işleri bittiğinde boşaltın ve serbest bırakın. Programlama dillerinin getirdiği “garbage collection” özelliği bu işi belli aralıklarla sizin için yapacak olsa da, en iyi sonuç kendi yazdığınız kodun içerisinde kendi değişkenlerinizi kendinizin boşaltması ile alınacaktır.
“Lazy Instantiation” Kullanın
Nesneleri sadece ihtiyacınız olduğu zaman yaratıp işiniz bittiğinde serbest bırakırsanız, bellekten kullanacağınız alan daha verimli kullanılmış olacaktır; bu teknik "lazy instantiation" olarak bilinir. Örneğin:
public class LazyClass {
private Vector v;
public Vector getVector(){
if( v == null ) v = new Vector();
return v;
}
}
Kaynakları Bırakın
Küçük cihazlar veya masaüstü sistemleri için geliştirilen uygulamalarda, kullanılan veritabanı bağlantıları, ağ bağlantıları, dosyalar gibi kaynakların serbest bırakılması verimli kullanımı arttıracaktır.
Nesneleri Tekrar Kullanın
Nesneleri tekrar tekrar yaratmak yerine tekrar kullanmak da bir başka yöntem olabilir. Kullanacağınız nesneleri ilklemek ve sonlandırmak için metodlar yaratın ve bu metodları kullanarak bellek kontrolünü sağlayın.
public class ObjHolder
{
private Object _value;
public ObjHolder( Object value )
{
_value = value;
}
public Object getValue()
{
return _value;
}
}
Bu koda ilkleme ve sonlandırma metodlarını eklersek:
private void initialize( Object value )
{
_value = value;
}
private void deinitialize()
{
_value = null;
}
İlkleme metodunu da sınıfın oluşturucu metodu içerisinde çağırabiliriz:
private ObjHolder( Object value )
{
initialize( value );
}
Gereksiz Hata Yakalama Kontrollerini Kaldırın
Hata (Exception) yakalama kontrolleri bazen gereksiz kullanılır ve bu kontroller koda ve derleyiciye ek iş yükü getirir. Uygulamaların bu tür kontrollerden mümkün olduğunca arındırılması daha iyi olacaktır.
Kodlarken Performans Kriterini Gözönünde Bulundurun
Programınızı geliştirirken performans arttırma düşüncesini her zaman gözönünde bulundurun. Bunun için kodlama pratiklerini anlatan kitaplar okuyabilir, veya derleyicinin sunduğu iyileştirme seçeneklerinden faydalanabilirsiniz.
Yerel Değişkenler Kullanın
Sınıflara ulaşmak, yerel değişkenlere ulaşmaktan genellikle daha zordur. Örneğin aynı sınıfı bir döngü içerisinde kullanmak yerine yerel bir değişken tanımlamak daha uygun olacaktır.
İş Parçacıkları Kullanın
Kullanabileceğiniz yerlerde iş parçacıkları kullanarak getirilerinden yararlanmaya çalışın.
Kaynaklar
-Programming Strategies for Small Devices
Bilgisayar alanından hareketle yaşamla ilgili her şeyi paylaşmaya çalışan arkadaşların oluşturduğu kollektif bir günlüktür.
Java Logosu
Java değişik bir şey başlatmış. Şu soruları cevaplayıp "Java Get Powered" logosunu kullanmaya hak kazanıyorsunuz. Sorular kolay. Asıl mesele logoyu almak için üye olmanızda ve logoyu koyacağınız web sitesini belirlemede. Hak kazandığım bu logoyu sağ tarafta görebilirsiniz.
Kod Yazı (Summer of code)
Google blogunda dolaşırken (yapacak başka işim yok :) ) karşıma google code site bağı geldi. Ben de bir bakayım nelerle uğraşıyorlar dedim. Biraz incelemeden sonra Summer of Code ile karşılaştım. Öğrenci kelimesi geçince ben de tam zamanlı öğrenciliğime devam ettiğim için ilgimi çekti. Biraz okuyup sıkça sorulan sorulara göz atıp ne olduğunu anlamaya çalıştım. İnceledikçe güzel bir şey olduğunu algılamaya başladım. Özetle açık kaynak projesi geliştirmek için danışman (mentor) firmalar buluyorlar, daha sonra öğrenci kayıtlarını alıyorlar ve öğrencilerin proje önerilerini bekliyorlar. Beğendikleri (tabi danışmanın da beğenmesi gerekiyor herhalde) projeleri kabul ediyorlar. Öğrenciler projeyi başarıyla tamamlayınca öğrenciye 4500$ para veriyorlar. 500$ da danışman firma kazanıyor. Katılsam mı acaba diye düşünmeye başladım. Ama son tarih 8 Mayıs 2006 hemen karar verip kafamda bir proje oluşturmam gerekebilir. Gerçi eğer projeyi öğrenciyi uygun bulup kendileri atıyorlarsa daha kolay olabilir. Emin değilim ama bu blogu takip edenler varsa onları haberdar edeyim diye hemen bilgilerimi aktardım.
Google Europe Code Jam ve Milliyet Hatası

Bu gazeteler konuyu iyice araştırmadan neden haber yaparlar bilmiyorum. Bazen öyle gereksiz hatalarla karşılaşıyor ki insan.
Bugün milliyet'in internet gazetesinde Google'dan 50 bin YTL ödüllü yarışma başlıklı haberle karşılaştım. Bana da haberi okumadan bir kaç dakika önce Google Code Jam adı verilen (Milliyet ne güzel çevirmiş Şifre Sıkışıklığı :S) yarışma bilgileri gelmişti. Ve milliyetteki haberi görünce hayret dedim, milliyet bunu neden haber yapıyor acaba? Türkiye içerisinde TopCoder yarışmalarına ilgi duyan pek az insan olduğunu düşündüğüm için şaşırdım. Ama haberi okudukça şaşkınlığım daha da arttı. Çeviriyi birebir yapmışsın neyse de iyice incelemeden neden haber yaparsın? Gerçekte bu yarışma "Programlama" yarışmasıdır, ancak dikkat edilirse haberin bir yerinde en zor şifreleri çözmekten bahsediliyor. Ki bu şifre çözme konusu bambaşka bir konudur. Ben geçen seneki google code jam'e katılmış biri olarak yarışmada şifre çözmedim. Algoritmik çözümler üretmeye çalıştım. Neyse dedik, olabilir uzman yardımı almadan reklam mahiyetinde bir haber vermişler. Okumaya devam ettik ve en son da daha fazla bilgi alacağımız ve kaydolacağımız yere yönlendirme var, ancak bağ verilmemiş. Bağı verseler de reklam tam yerine otursa değil mi?
Neyse aklımdakileri yazayım dedim, içimde kalmasın. Hazır bahsetmişken katılacağımı belirteyim (Eğer geçen ki topcoder yarışması gibi unutmazsam :D ). Katılacaklara, topcoder'a üye olmayanlara bilgilenme için Google Code Jam Europe adresini vereyim dedim. Belki faydamız dokunur. Türkiye'den bir programcının Dublin'de yarışması ne kadar gurur verici olur değil mi?
Katılacaklara başarılar diliyorum.
Google Yolları
Google üzerinde The Da Vinci Code Quest on Google oyununda takılırken yepyeni bir (bana göre tabi ki) bir google hizmetiyle karşılaştım. Google SMS . İnanılmaz bir şey gerçekleştirmişler. Gerçi kendileri (google firması) bu hizmeti mobil servis olarak düşünmüşler ancak benim gibi google bağımlısı kişilerinde işine yarıyor. Açıkçası şu oyun yeni google özellikleri öğrenmemde çok işe yaradı, reklam ancak bu kadar iyi olabilir diyorum.
Diğer google haberim şu blog ile ilgili. Google firması haritaları ve yerel bilgileri (uydu falan) güncellemiş. Ayrıca iki yeni yaklaştırma seçeneği eklemiş. İnsan tırsıyor açıkçası, bu kadar yakından insanların en ufak hareketini takip eder bunlar diye, Big Brother sendromu iyice ayyuka çıkacak diye. Neyse ben asıl konuma döneyim, ben acaba oturduğum apartmanı bulabilirmiyim diye bir inceleme yaptım. İzmir'i haritada arattım. Ve evet, İzmir daha yeterince ayrıntılı olarak desteklenmiyormuş. Şimdilik yabancı gözlerden uzak bir şekilde yaşamımıza devam edebiliriz. (İzmir'in bir görüntüsü için) (Bu arada körfez yukarıdan daha güzel gözüküyor sanki :S )
Diğer google haberim şu blog ile ilgili. Google firması haritaları ve yerel bilgileri (uydu falan) güncellemiş. Ayrıca iki yeni yaklaştırma seçeneği eklemiş. İnsan tırsıyor açıkçası, bu kadar yakından insanların en ufak hareketini takip eder bunlar diye, Big Brother sendromu iyice ayyuka çıkacak diye. Neyse ben asıl konuma döneyim, ben acaba oturduğum apartmanı bulabilirmiyim diye bir inceleme yaptım. İzmir'i haritada arattım. Ve evet, İzmir daha yeterince ayrıntılı olarak desteklenmiyormuş. Şimdilik yabancı gözlerden uzak bir şekilde yaşamımıza devam edebiliriz. (İzmir'in bir görüntüsü için) (Bu arada körfez yukarıdan daha güzel gözüküyor sanki :S )
Kaydol:
Kayıtlar (Atom)