24 Mayıs 2006

Java passByReference

Java ile haşır neşir olan insanlar java da objelerin methodlara parametre olarak gönderilirken value olarak değil de referans olarak geçtiğini bilirler.(Türkçe söyleyince biraz garip geldi ama passByValue değil de passByReference yani)
Basit değil mi peki aşağıdaki code ne print edecek.
class Person(){
int personId;
}
class Foo{
main(){
Person p=new Person();
p.personId=3;
System.out.println(p.personId);
doSomething(p);
System.out.println(p.personId);
}

public void doSomething(Person p){
p=new Person();
p.personId=5;
}
}

önce 3 sonra 5 değil mi çünkü referansını göndermiştik eleman da değiştirdi.Maalesef hayır önce de 3 sonra da 3. Neden mi çok basit methodlara objeleri parametre olarak gönderdiğimizde objenin referansının kendisini değil kopyasını göndeririz.

23 Mayıs 2006

Eclipse Ctrl+1

Eclipsin en kullanışlı kısa yolu bence ctrl+space den sonra ctrl+1
neler mi yapabiliyorsunuz :

eclipsin sizi bir hata için uyardığı her yerde kullanabiliyorsunuz.
Herhangi bir bloğu if-else try-catch runnable vs gibi şeyler içine almak için kullanabiliyorsunuz.Olmayan bir methodun ismini return type'ını parametrelerini yazdığınızda sizin için method oluşturmasını, bırakın methodu class oluşturmasını sağlayabiliyorsunuz.
Ve benim en çok kullandığım özelliği ise herhangi bir methodu çağırdığınızda bunu local bir variable'a assign etme işinizi müthiş kolaylaştırıyor.Hatta siz zaten hiçbirşey yapmıyorsunuz.O sizin yerinize methodun return tipine ve ismine göre uygun local variable'a methodu eşitlemenizi sağlıyor.
mesela:

Logger.getLogger("a.b.c");
Yazdıktan sonra ctrl+1 ile eclipse size bir menu çıkarıyor.Local bir variable ya da yeni bir field seçeneği. Local variable dediğinizde
Logger logger=Logger.getLogger("a.b.c");
şeklinde işinizin bittiğini görüyorsunuz.
Aslında daha bir sürü kolaylık sağlıyor ya yer yok yazamıyoruz :)

Eclipse Navigate menüsü

Madem katıldık biz de birşeyler yazalım.Üst üste birkaç eclipse yazısı önce.
Eğer büyük bir proje ile uğraşıyorsanız ya da karman çorman bir sürü paket ve hiyerarşiye sahipseniz aradığınız dökümanı bulmak için Eclipse'in Navigate menüsü altındaki Open Type (Ctrl+Shift+T) ve Open Resource(Ctrl+Shift+R) 'u kullanabilirsiniz.
Lucene tabanlı olarak indexlenen class ve resourcelara isimlerinden hatırladığınız kısmını yazarak ulaşabilirsiniz zira pattern search de yapılabiliyor.Java dosyaları için OpenType ,genel olarak bütün dosyalar için(java dosyaları da dahil) Open Resource'u kullanabilirsiniz.

Örneğin *res*.py yazarak isminde res geçen python dosyalarını bulmanız mümkün.
(Bu arada eclipse ile python yazabildiğinizden bahsetmiş miydim? :) )

21 Mayıs 2006

Nonblocking Algorithms

Bazen thread-safe gerektiren islemler yapariz ki sychronization'in getirdigi bazi maliyetler vardir. Fakat her zaman syncronization gerekmeyebilir. Java 5.0 ile java.util.concurrent paketini kullanarak lock-free thread-safe tekil degiskenler kullanabilirsiniz:
http://www-128.ibm.com/developerworks/java/library/j-jtp04186/index.html

04 Mayıs 2006

SIPA :)

Aman yanlış anlamayın:)Üniversiteden iki arkadas bitirme tezi olarak Java 5'i kullanarak skype tarzı bir chat programı yazmışlar.Program Java ile yapıldıgı için ilgimi çekti.Size normal bir chat programında olması gereken özellikleri sunuyor.Ayrıca görsellik de göz tırmalamıyor gayet hoş bence.Ne diyim böyle projeler yapıp açık kod alemine katkıda bulunmak lazım.Neredeyse unutuyordum, adresi de burda->