31 Aralık 2006

Bayram Tebriği

Herkesin kurban bayramını kutlar, yeni yılın sağlık, başarı ve mutluluk getirmesini dilerim.

08 Aralık 2006

Özgürlük için...

Pardus 2007'yi bekliyoruz ve blog kardeşliğine katılıyorum ve diyorum:Özgürlük için... ve sizde söyleyin: Özgürlük için...

06 Aralık 2006

Virtual Ant

Ant'ı kullanmayanımız yoktur herhalde.Kısaca Ant bizlere karmaşık sistemlerin build ve deploy işlemlerini kolay bir şekilde yapmamızı sağlıyor.Şu ana kadar bu işlemi elimizle build.xml dosyaları yazarak yapıyorduk.Fakat,saolsun,bundan sonra elimizle yazmayacağız,elimizle tıklayarak yapacağız,yani fare kullanarak:)Virtual Ant denilen proje görsel olarak ant scriptleri hazırlamamıza olanak sağlıyor.Proje windows'taki file exporere gibi bir arayüzle karşınıza çıkıyor.Burdaki dosyalar üzerindeki yapacağınız işlemler gerçek dosya sistemini etkilemiyor.Yani sanal çalışıyorsunuz.Yaptığınız her işlem bir ant task'ı olarak kaydediliyor.Daha geniş bilgi için sitesine ve demosuna bakabilirsiniz.Unutmadan proje paralıdır.

05 Aralık 2006

Pardus'a geçtim

Merhabalar,
Artık ben de bir Linux kullanıcısı oldum.Daha doğrusu PARDUS kullanıcısı.Bu iletinin java ile fazla bir ilgisi yok fakat bundan sonra PARDUS'ta java ile ilgili karşılaştığım sorunlar olup çözümlerini bulduğum zaman buraya yazacağım.Şu an windows'a hiç ihtiyaç duymuyorum.PARDUS'u Tubitak'taki ve emek veren herkes çok güzel bir şekilde inşa etmişler.PARDUS'u kurduğunuz zaman ihtiyacınız olan her şey beraberinde geliyor.Yeni bir şey yüklemek istediğinizde PISI adı verilen kendilerinin geliştirdiği paket yükleme ve güncelleme aracını kullanıyorsunuz.RPM ve DEB uzantılı dosyaların kurulumunu desteklemiyor.PARDUS'u kurduktan sonra yeni bir işletim sistemine geçmemden dolayı bir kaç zorlukla karşılaşmadım değil.Bunların en önemlisi internet oldu.Bende ZOOM 5510B USB ADSL modem vardı ve bunu bir türlü tanıtamadım.Kendi içinde gelen eciadsl paketi benim modemin bir eski versiyonunu destekliyormuş.Ben ne yaptım, abimin zoom ethernet modemi ile takas ettim benim modemi.Böylece sorun çözüldü:)
Java uygulamalarını kurmam da hiç zor olmadı.Ne kurdum:Eclipse 3.2.1,NetBeans 5.5, NetBeans Visual Web Pack, Glassfish Application Server.Bunlardan NetBeans'in kurulumunda sorunlar oldu.Bu sorunların çözümünü daha sonra dile getireceğim.Şu an çok güzel bir şekilde Java geliştirebiliyorum.
Bence PARDUS'u tüm Türkiye kullanmalı.En önemlisi milli bir işletim sistemi.Böylece açık kaynak koda desteğimiz de artmış olur ve piyasadaki microsoft tekelide azalmış olur.Windows'un kullanım açısından en son kullanıcıya hitap etmesini inkar etmemek lazım;fakat PARDUS'un da bu özellik olarak fazla eksik bir tarafı yok bence.Tamamen alışkanlık meselesi, kullandıkça alışıyorsunuz...İyi günler dilerim...

27 Kasım 2006

JBuilder 2007 ve Eclipse

Merhaba,
JBuilder 2007 sürümü Eclipse RCP kullanılarak geliştirilmiş.Yani çekirdek eclipse'in üzerine kendi eklentilerini geliştirmişler.Böylece Eclipse kullanıcıları JBuilder'a farklı Eclipse eklentileri ekleyebilecekler.
Bu sürüm çeşitli güzel özellikleri içinde barındırıyor.Görsel olarak EJB 3.0 ve JPA sınıflarını tasarlayabiliyorsunuz.Masaüstü programlar için görsel olarak GUI tasarlayabiliyorsunuz ki JBuilder bu konuda bir hayli iddialıdır.
Denemekte fayda var:) İyi çalışmalar...

05 Kasım 2006

Java 6 (Mustang)'deki Değişikliklerin Listesi

Merhabalar,
Aşağıdaki linkte Java 6'daki iyileştirmeler ve yeni özellikler listelenmiş.Faydalı olacağını düşündüm.
http://java.sun.com/javase/6/webnotes/features.html

04 Kasım 2006

Dikey yazı nasıl yazarsınız?

Bildiğiniz üzere Graphics interface'nin drawString metodunu kullanarak bir JFrame üzerinde istediğiniz koordinatta bir yazı yazdırabilirsiniz.Dikey olarak yazı yazdırmak istediğinizde nasıl yaparsınız? Aşağıdaki kod parçası bu işi yapmaktadır:

public static void drawVerticalText( Graphics g, double drawType, String label, int xPos, int yPos ) {
Graphics2D g2D = (Graphics2D)g;

// Yazıyı döndürmek için transformasyon gerekiyor.
AffineTransform fontAT = new AffineTransform();

// Varolan fontun bozulmaması için
Font theFont = g2D.getFont();

// 90 derece sola dondurulmus eni font oluşturuluyor
fontAT.rotate(3*Math.PI/2);
Font theDerivedFont = theFont.deriveFont(fontAT);

// yeni fontu belirleniyor
g2D.setFont(theDerivedFont);

// yazınızı dondurulmus fontla yazabilirsiniz
g2D.drawString(label, xPos, yPos);
// varolan fontu tekrar kullanmaya devam edin
g2D.setFont(theFont);
}

Metoda parametre olarak kullandığınız Graphics objesi ve diğer gerekli parametreleri verdikten sonra istediğiniz koordinata istediğiniz yazıyı yazabilirsiniz.

03 Kasım 2006

NetBeans mi Eclipse mi?

Merhabalar,
Başlıkdan da anlaşıldığı üzere yeni çıkan NetBeans 5.5 ile Eclipse 3.2 arasındaki artıları eksileri haddim üzere olmayarak fikirlerimi belirtmek istedim.Öncelikle yazacaklarım Charles Ditzel ile yapılan bir röportaja dayanmaktadır.Kendisi sitesinde aldığım gibi koyuyorum a partner area architect at Sun Microsystems.
Öncelikle NetBeans'de şöyle bir özellik var."All in one".Türkçe söylemek isterdim fakat bu daha güzel sanki.Yani geliştirme adına bulabileceğiniz her şey nerdeyse NetBeans'i kurduğunuzda geliyor.Mesela GUI designer olarak Matisse projesi adında yürütülen çalışma ile geliyor ve gayet başarılı.Masaüstü için görsel uygulamalar geliştirmeyi çok kolay hale getiriyor. Sonra Java EE 5'i destekliyor ki şu an IDE'ler arasında IntelliJ IDEA dışında hiçbir IDE Java EE 5'i desteklemiyor.Ayrica kullandığınız veritabanlarına IDE ortamından bağlanmanıza olanak sağlıyor.NetBeans içerisinde Struts ve JSF desteği veriyor.Fakat bu yukarda saydıklarımın hiç biri eklenti yüklemeden Eclipse ile kullanılamıyor.Masaüstü için görsel programlar yazmak istiyorsanız Visual Editor eklentisini indirmeniz gerek.JAVA EE desteklemek için WTP (Web Tools Project) indirmeniz gerek ki boyutu 180 MB civarında.Ayrıca Struts ve JSF desteği de maalesef yok.Bunların yanı sıra NetBeans ortamına kendi sitesinde yayınlanan çeşitli paketler yardımı ile yeni geliştirme ortamları eklemek mümkün.Örneğin; Mobility Pack ile J2ME geliştirme ortamı olması ki telefonlara sürükle bırak özelliği ile görsel uygulamalar yazabiliyorsunuz.Visual Web Pack ile sürükle bırak JSF web uygulamaları yapabileceğiniz ortamı oluşturabiliyorsunuz.Ayrıca Eclipsede de olduğu geniş bir plugin listesi var.

Eclipse'i indirdiğinizde ise bir editor,debugger,compiler geliyor.Sakın yanlış anlamayın, Eclipse'i kötülüyor değilim.Ben de genel olarak Eclipse'i kullanıyorum.Çünkü Eclipse'in look & feel'i beni rahatlatıyor.NetBeans genel olarak ne kadar hızlandı deseler de Eclipse'i geçemez.Bir kere kod yazarken real-time compiler'ı NetBeans ile kıyaslaştırılamaz.NetBeans kodu değiştirdikten 2-3 sn. sonra uyarı veriyor neredeyse:).Ayrıca Eclipse'in perspective ve view mantığı diğer IDE'lere taş çıkartacak nitelikte.

Ama dediğim gibi iş web uygulaması, EJB uygulaması gibi kurumsal uygulamalar geliştirmeye geldiğinde ve son teknolojiyi kullanmaya geldiğinde Eclipse NetBeans'e göre zayıf kalıyor.

Benim şu ana kadar genel olarak izlenimlerim böyle.Sizin düşüncülerinizi de almak isterim.İyi çalışmalar dilerim...

27 Ekim 2006

JavaScript 1.7

Merhabalar, Mozilla Firefox 2.0 versiyonuyla piyasaya merhaba dedi.Yeni sürümün özelliklerini incelerken JavaScript 1.7'yi desteklediğini gördüm.Yani JavaScript'in yeni versiyonunun çıktığını da bu şekilde öğrendim.JavaScript'teki yeni özellikleri anlatan bir makale yayınlamışlar.İşte burda! Gerçekten çok hoş özellikler eklenmiş.Mesela Java'daki iterator mantığı getirilmiş, functionlar artık birden fazla değer döndürebiliyor ve döndürülen değerleri aynı anda farklı değişkenlere atayabiliyorsunuz...Makaleye bakmanızı tavsiye ederim.
İyi çalışmalar...

27 Eylül 2006

JAR içinden resim dosyası nasıl okunur?

Bir masaüstü uygulaması yazdınız.Uygulamanızın tüm dosyalarının (java, class, resim dosyaları...) aynı jar içinde olmasını istiyorsunuz.Böyle bir jar dosyası oluşturabilirsiniz fakat kaynak dosyalarını mesela resim dosyalarını direk kodunuzun içinden aşağıdaki gibi:

Icon icon = new ImageIcon("pic1.jpg");

çağıramazsınız.Bunu yapmak için aşağıdaki gibi kodlamanız gerekecek:

// İlk önce ClassLoader objesini alırsınız.
ClassLoader cl = this.getClass().getClassLoader();
// Create icons
Icon saveIcon = new ImageIcon(cl.getResource("images/save.gif"));

İlk önce Bir tane ClassLoader objesi alıyorsunuz.Daha sonra bu obje ile resim dosyasını bir resource olarak programınıza yüklüyorsunuz.Yalnız getResource metodunun içine resim dosyasının tüm yolunu vermeyi unutmayın.

AJAX Frameworks

Merhabalar,
Geçen gün AJAX için yapacağımız çalışma için piyasada var olan ve güzel olan AJAX çatılarını (framework) incelemeye çalıştım.Benim beğendiklerim aşağıdaki gibidir,bilmem siz ne dersiniz:)
  1. Ajax4JSF: JSF (Java Server Faces) çatısı için hazırlanmış.Bedava...Demo!!!
  2. Echo 2: Gayet güzel bir çalışma.Özellikle size sunduğu bileşenler (component) çok hoş.Yalnız biraz yavaş çalışıyor.Bu proje ile javascript, html ve http bilmenize gerek kalmiyor.Çünkü size java uygulamasi yazma olanağı sağlıyor ve bunu web sayfasi olarak sunuyor.Tek gereken bir servlet container ve java bilgisi,ayrıca bedava...Demo!!!
  3. Backbase: Bu projeyi görünce adamlar aşmış dedim.Hoş ve hızlı bileşenlerle ve zeki kullanım kolaylıkları ile gayet güzel bir ajax çatısı olmuş.Bu proje size kendi kütüphanesini sunuyor.Eclipse için plugin desteği var.Ayrıca .net versiyonu da var.Yalnız paralı, 30 günlük deneme süresi var.Demo!!!
  4. DWR (Direct Web Remoting): Bu proje ile java metodlarını bir jsp dosyasından direk çağrabiliyorsunuz.JavaScript fonksiyonlarının içerisinde yazdığınız java metodlarını çağırdığınız için sayfaların yenilenmesine gerek kalmıyor.Ayrıca Struts,JSF,hibernate desteği de var.Demo!!!
  5. ICEFaces: Paralı olan bu ürün size kendi JSF bileşenlerini sunuyor.Kullanımı kolay, görsellik güzel.Demo!!!
  6. JSP Controls Tag Library: Bu proje otomatik olarak tarayıcının (browser) senkron çalışıp çalışmadığını algılıyor ve sayfaları istenilen modda açma olanağı sağlıyor.Bedava...Demo!!!
  7. ThinkCAP JX: Bu ürün size RAD ortamı sağlıyor ve hızlı bir şekilde AJAX uygulamaları geliştirebiliyorsunuz.Eclipse, JBuilder... için plug-in desteği var.Çatısı açık kaynak fakat RAD ortamı para ile satılıyor.Demo!!!
  8. ThinWire: ThinkCAP JX tarzı bir proje.Masaüstü tarzı uygulamalar yapabiliyorsunuz.Ayrıca herşeyi bedava.Demo!!!

28 Ağustos 2006

Annotation de neymiş?

Java 5 ile gelen Java syntax'ındaki değişikliklerde annotation kısmına göz atıyordum. Annotation kısmını okuduğumda bu yapıyı acaba kendi yazdığım uygulamalarda nasıl kullanırım diyordum. Aklıma doğru dürüst bir fikir gelmiyordu. Ta ki Java EE 5 teknolojisine bakana kadar. Adamlar her şeyi annotation ile yapmışlar.Gerçekten çok hoşuma gitti, çünkü XML kullanımını minimum seviyeye indirmişler ve uygulamaları geliştirmek gayet kolaylaşmış. Örneğin; .NET platformunda web servis oluşturmayı herkes denemiştir. Gerçekten kolay bir şekilde web servis tanımlayabiliyorsunuz. Servis metodlarının başına, hatırladığım kadarıyla, [Web Method] deyince .NET geri kalan kısmı sizin için hallediyordu. Java EE 5'de de aynı şekilde Web Servis sınıfının başına @WebService ve servis metodlarının başına @WebMethod yazınca Web Servisinizi yazmış oluyorsunuz, geriye ufak tefek işler kalıyor. EJB'lerin yapısı da gayet kolaylaşmış annotation yardımı ile.
Bence annotation mantığı iyi kavranırsa mimarisi daha güzel ve kodu daha anlaşılır uygulamalar geliştirilebilir.Herkese iyi çalışmalar...

17 Ağustos 2006

JSTL mi, Struts Tag Library mi?

Bildiğiniz gibi

Struts framework'ünü kullanarak MVC (Model-View-Controller) modeline göre web uygulamarı geliştiribiliyorsunuz. Bu modelin view kısmında yani kullanıcı arayüzü kısmında isteğe (request) veya oturuma (session) gömdüğünüz objelerin alanlarını (field) göstermek için, scriplet kullanmak istemiyorsanız, ya Struts etiket kütüphanesini (tag library) kullanıyorsunuz, ya jstl (java standard tag library) ya da kendi yazdığınız etiket kütüphanesini kullanıyorsunuz. Kendi yazdıklarınızı şu an es geçelim. Ben bu iletide JSTL ve Struts etiket kütüphanesinin arasındaki önemli gördüğüm farklılıkları anlatacağım:

  1. En önemli fark bence isteğe ya da oturuma gömdüğünüz bir objeyi JSTL'in bulamaması durumunda bir hata vermemesi, sayfayı çalıştırmaya devam etmesi, Struts'da ise NullPointerException yada başka hatalar üretip sayfayı çalıştırmaması.Bu durumun hem avantajı hem de dezavantajı var. Eğer objenin değeri gerçekten sizin için önemli değilse çalışmaya devam etmesi gerçekten güzel olur; fakat objenin değeri sizin için önemli ise bir sorun olduğunu düşünüp hatalı kısmı gözden geçirmek istersiniz. Bu farklılık size fayda sağlıyor.Devam etmesini düşündüğünüz yerlerde JSTL kullanıp hatalı yerlerde Struts etiket kütüphanesini kullanabilirsiniz. Aslında Struts etiket kütüphanesinde olan herşey JSTL'de mevcut, sadece html tag library'si hariç.

  2. JSTL yazımı Struts etiket kütüphanesinden daha kolay. Derli toplu bir yapısı var, özellikle expression language kullanarak gayet kısa ve güze kodlar yazabiliyorsunuz.Mesela <c:forEach [attributes]>...</c:forEach> etiketi (tag) ile <logic:iterate [attributes]>...</logic:iterate> etiketi aynı işi yapıyor.Fakat bence core etiket kütüphanesi etiketi olan forEach daha derli toplu ve anlaşılır.

  3. Son olarak da JSTL'in JSR (Java Specification Request) olarak geliştirilmesi, Struts etiket kütüphanesinin de Apache tarafından geliştirilmesidir. JSTL ilk önce çıkmıştır. Bu nedenle ilk göz ağrısı unutulmaz:)

Benim tercihim genelde JSTL olmuştur, bir tek form elemanlarını oluşturmak için Struts'ın html tag libray'sini kullanmak zorundasınız.Çünkü bunun karşılığı JSTL'de yok. Neyseki Java alemindeki çeşitlilikten dolayı istediğimiz tag libray kullanabiliriz...

25 Temmuz 2006

IntelliJIdea 6.0

IntelliJIdea'yi zamanında kullanmıştım, o zaman versiyonu 4.0'tü galiba. Şimdi 6.0 versiyonu çıkacak. Yeni özellik olarak ne gelmiş diye bir baktım ve şu an Java dünyasında güncel ne varsa bu yeni versiyonda entegre edilmiş. Gözüme çarpanlar EJB 3.0, JSF, AJAX, Struts, GWT (Google Web Toolkit), GUI designer. EJB için persistence sınıflarını gösteren dialog haritaları eklenmiş. Bu haritalarla görsel olarak sınıflar arasındaki ilişkileri rahatlıkla görebiliyorsunuz. GWT'i entegre etmeleri ilgimi çekti. Neden derseniz, artık google IDE'lere bile girdi de ondan:). GUI Designer bence çok hoş olmuş, kolaylıkla GUI tasarlayabiliyorsunuz. Ayrıca önceden yapmış olduğunuz GUI'ler varsa veya internetten veya başka bir yerden GUI kodu edindiyseniz bunları IntelliJIdea sizin için proje olarak alabiliyor, hem de GUI'nin istediğiniz kısımlarını. GUI Designer'ı anlamak için sitesindeki demo'yu izlemenizi tavsiye ederim.Ayrıca IDE'de irili ufaklı bir çok değişiklik yapmışlar, refactor gibi, code completion gibi özellikleri daha iyi hale getirdiklerini iddia ediyorlar. Son olarak TeamCity denilen CVS vari bir geliştirmede bulunmuşlar.Böylece SW developer'ların ortak çalışmasını sağlayacaklar ve IDE'de entegre gelen chat modülü de cabası olmuş.Chat modülü sayesinde developer'lar kendi aralarında chat yapabiliyorlar ve herhangi bir dosya üzerinde kod parçalarını göstererek çalışabiliyorlar. Java alemine hayırlı olsun...

08 Temmuz 2006

GJTAPI ve Telefon

Modeminizi kullanarak birisine telefon açmak istediniz. GJTAPI bu ihtiyacınıza cevap verecek bir açık kaynak proje. Ayrıca web servisi desteği de var. Çalıştığım yerde bir arkadaşım gösterdi.Kendisi bir java masaüstü uygulaması yazmıştı. Şirkette dahili numaranızı yazıp call butonuna basıyorsunuz ve hemencecik sizi arıyor:) Bunu uzaklardaki insanlar için de geliştirebilirsiniz.

07 Temmuz 2006

6 Saatlik Deneyim

Merhabalar, bugün karşılaştığım, nerdeyse 6 saattir bulmakta uğraştığım bir hatayı sizinle paylaşmak istiyorum. Hatanın nedeni çok basit ama proje büyük olunca bulmak çok zor oluyor. Bildiğiniz üzere Java'da objeleri yeni oluşturmak ile referans olarak başka bir değişkene atamak farklı şeyler.Bu temel bir kuraldır. İşte bu kural dikkate alınmazsa aşağıdaki sorunu yaşarsınız:
Mesela elinizde HashMap sınıfına ait map isminde bir objeniz var.Key olarak bir String,value olarak List objesi tutuyor. Eğer siz, map objesinden bir değeri aşağıdaki şekilde bir List değişkenine atarsanız ve yeni değişkenden bir eleman silerseniz bu map objesinde tutulan List objesinden de silinir:
List list = (List)map.get("a");
// key değeri a olan map'teki List objesinden de aynı elemanı siler.
list.remove(0);


yukardakinin yerine aşağıdakini kullanmak gerekir:
List list = new ArrayList( (List)map.get("a") );
// list yeni bir obje olduğundan map objesi etkilenmez.
list.remove(0);


Bu nedenle işlemlerinizde bir tutarsızlık görebilirsiniz, benim bugün gördüğüm gibi.Bir de bence hatalar genelde ufak ayrıntılardan çıkmakta, kodu yazarken temel olan şeyleri göz önünde daima bulundurmak lazım.Aksi takdirde 6 saat boşu boşuna debeleniyorsunuz:)

02 Temmuz 2006

Eclipse 3.2 çıktı!!!

Merhabalar,
IDE'lerin piri diyebildiğim Eclipse'in 3.2 versiyonu çıktı.Bu versiyonda Java 6 (Mustang) desteği var. Ayrıca kod tamamlama özelliği, performansı, kullanılabilirliği de geliştirilmiş. Bir de Callisto adı verilen proje kapsamında 1o tane ayrı geliştirilen proje Eclipse ile beraber indirebilir halde sizi bekliyor. Bu 10 tane proje aslında bilindik projeler, mesela bir tanesi Eclipse Visual Editor (VE), GUI tasarlamanıza yarayan bir eklenti. İsterseniz bileşsenleri ayrı ayrı yükleyebiliyorsunuz yada önceki Eclipse sürümünüzden güncelleme yapabiliyorsunuz.
Eclipse 3.2 ile iyi eğlenceler dilerim...

21 Haziran 2006

JMeter 2.2

Merhabalar,
Apache JMeter'ın 2.2 versiyonu cıkmıs haberimiz yok:) Bilmeyenler icin JMeter size bir Java projesinde fonsiyonaliteyi test etmenizi ve performansı ölçmenizi sağlıyor.Genelde web tabanlı projelerde kullanılır.İndirmek için tıklayınız.

04 Haziran 2006

Bir dosya için system ikon'u nasıl alınır?

Şöyle bir ihtiyacınız oldu.Bir program yazdınız,programınızda bir klasörde bulunan klasörleri ve dosyaları listelemek istediniz.Listelenen bu elemanların bir işletim sistemindeki ikon'larını göstermek istediniz.Nasıl yapacaksınız?
FileSystemView adında bir sınıfımız var bu iş için (javax.swing.filechooser.FileSystemView).Bu class size herhangi bir dosyanın sistem ikonunu döndürmenin yanında bir çok işinize yarayacak metodu barındırıyor.Benim ihtiyacımı karşılayan kod parçası aşağıdadır.Sizin ihtiyacınızı sağlayan kod parçalarını da bekleriz:)
File file = null;
String extension = "doc";

try
{
//Create a temporary file with the specified extension
file = File.createTempFile("icon", "." + extension);

FileSystemView view = FileSystemView.getFileSystemView();
Icon icon = view.getSystemIcon(file);


//Delete the temporary file
file.delete();
}

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->

28 Nisan 2006

Looking Glass Projesi

SUN'ın geçen gün izlediğim ama izlemekte geç kaldığım bir projesini gördüm.Üç boyutlu bir işletim sistemi.İsmi de Looking Glass,2003 yılında bir konferansta demosu olmus.Önceden üç boyutlu işletim sistemi diye bir şeyler duymuştum,ama görüntülerini ve screenshotlarını görmemiştim.Sanırım sparc işlemci üzerinde çalışıyor.Görüntülere bakmanızı tavsiye ederim.

11 Nisan 2006

Excel'i Kullanmak...

Geçen günlerde Excel'de bir kaç rapor yapmam gerekiyordu.Bu raporlar'ı yapması basit bir şey değildi.Bir sürü veriyi kolon bazında satır bazında tarayıp anlamlı raporlar çıkartmam gerekiyordu.Haliyle Excel mühendisi olmadığım için bunları Excel'in içinden yapamadım.Çoğu Excel mühendisine sordum ama onlar da excel'in kendi fonksiyonları ile yapamadılar.Son anda işten bir arkadaşım yardımıma koştu.Bana bir API'nin linkini verdi. API'yi yapan adam gerçekten çok hoş yapmış projeyi.Birkaç satırla Excel'de istediğiniz veriye sheet ve cell bazında ulaşabiliyorsunuz.Ayrıca excel dosyası oluşturup kendi verilerinizi kaydedebiliyorsunuz.Kısacası isterseniz Excel'e takla attırabilirsiniz:)

04 Nisan 2006

Java Veritabanı

Merhabalar, Java DB diye bir proje varmış.Sun'ın kendisinin ürettiği bir proje.Masaüstü programlarınızda kullanabileceğiniz bir veritabanı.Sanırım kurumsal uygulamalarda da kullanılabilir ama tutulacak veri çok olursa ve bir kaç bin kullanıcı aynı anda sistemi kullanırsa sıkıntı yaşanabilir.Java DB daha çok mütevazi sistemler için geçerli diyelim:) SQL dilini, JDBC gibi veritabanı teknolojilerini aynen Java DB'de de kullanabliyorsunuz.Benim en çok sevindiğim nokta, bir masaüstü uygulaması geliştirdiğimde veritabanı ne kullanacaz demiycem artık.Direk Java DB kullanacağım:) Bu makalede de nasıl kullanılacağı anlatılıyor.

03 Nisan 2006

Bedava Resim Düzenleyici

İyi günler dilerim, bir web sitesine bakarken JAlbum diye bir link gördüm.Linke tıklayınca aklımda olan bir düşüncenin acaba gerçeği var mı derken bu proje bu düşüncemi bastırdı.JAlbum size resimlerinizi Picasa tarzında düzenlemenize izin veren, çeşitli skin'lerle albümler yapmanızı sağlayan ve bu albümleri arkadaşarınızla paylaşmanızı sağlayan çok güzel bedava bir program.Denemenizi öneririm.

02 Nisan 2006

JFreeChart

Bu proje çok güzel istatistik grafikleri yapmanıza olanak sağlıyor.İki boyutlu ve üç boyutlu grafikler (pie chart,bar chart,line chart,area chart ...) ile verilerinizi göstermenizi sağlıyor.Çeşitli veritabanlarına bağlanmanıza olanak sağlıyor.Ayrıca oluşturduğunuz grafikleri JPEG ve PNG formatında kaydedilmenizi, PDF formatında saklayabilmenizi, yazıcı ile çıktısını almayı sağlıyor.Bunlar benim ilgimi çekenler, sayfasında daha birçok özelliği bulabilirsiniz.Ayrıca bir demosu da mevcut...

01 Nisan 2006

Java 6 (Mustang) vs. Java 5 (Tiger)

Java 6 ve Java 5 için yapılan ilk benchmark sonuçları açıklanmış.Buna göre Java 6 sanal makinesinin hızı Java 5'e göre %40-100 daha iyiymiş.Bunda tabiki ceşitli kütüphanelerde yapılan iyileştirmelerin büyük etkisi var.Mesela Collections framework'ünde yapılan değişiklikler,iyileştirmeler buna büyük bir etkisi var.Çünkü uygulamaların çoğunda bu framework sıklıkla kullanılmakta.Bir örnek HashMap sınıfı.Bu nedenle bu framework üzerindeki iyileştirmeler hızı büyük bir oranda etkileyecektir.Testlerin sonuçları aşağıdaki linklerde:
http://javolution.org/doc/results15.txt (Tiger)
http://javolution.org/doc/results16.txt (Mustang)

27 Mart 2006

ROME ile RSS...

Bloglar'ın gün geçtikçe sayısı artıyor.İnsanlar günlük yazmak yada başka nedenlerle blog hesapları oluşturuyor.Bildiğiniz gibi bu blog hesaplarının bir de feed adresleri oluyor.RSS ve Atom bu feed'lerin yapısını tanımlayan iki tane format.ROME adında bir proje yardımı ile bu tip feed'leri kolaylıkla anlayan programlar yazabilirsiniz.Bu proje size hazır kütüphaneler sunuyor.Bu kütüphaneler yardımıyla programınızda bir kaç satır kodla bir blog'un haberlerini kolaylıkla elde edebiliyorsunuz.Gerisi size kalmış...

17 Mart 2006

JAVA 5 Tutorial

Güzel bir haber,bildiğiniz gibi Java'yı öğrenmek için sık başvurulan kaynaklardan birisi de online java tutorial idi.Bu tutorial JAVA 5'e göre güncelleştirilmiş.İyi okumalar:)

13 Mart 2006

Java'ya Dil Desteği...

Bildiğiniz gibi .net'i Java'dan ayıran en önemli özellik istediğin dilde yaz bir yerde çalıştır matığının olmasıdır.Yazılan kod ortak bir dile çevrilip daha sonra bu kod çalışıtırılır.Java'da ise sanal makine (virtual machine) dediğimiz, arka planda çalışan ve Java class dosyalarını çalıştıran bir program vardır.Her işletim sistemine özel bir sanal makine olduğundan platform bağımsızlık Java'da sağlanmıştır.Bugün bir arkadaşımın bana yolladığı bir link ilgimi çok çekti.Java'ya dinamik tipli dilleri ,dynamic typed languages, (Python,JavaScript...) destekleyecek bir yapı getireceklermiş.Dinamik tipli dil şu demek:Mesela JavaScript'de değişken tanımlamak için
"var x;"
dersiniz.Burda "x" değişkeninde string bir değer de tutabilirsiniz, integer bir değer de.Bu nedenle dinamik tipli dilleri derlemek statik tipli dilleri derlemeye nazaran daha zordur.
Bu proje şu an JSR 292 olarak açılımış durumda.Anlatılana göre bu yapıyı sanal makine üzerinde bir takım değişiklikler yaparak gerçekleştirileceklermiş.Sanal makine dinamik bir hale getirilecek.Yani şu anki sanal makine statik, statik olarak değişken tipi kontrolü yapacak şekilde tasarlanmış.Yeni geliştirilecek sanal makine ise dinamik değişken tipi kontrolü yapılacak.Böylece dinamik tipli diller desteklenecek ve çalışma zamanında (runtime) sınıfların,metodların içeriği de değiştirilebilecek.Bu proje 2007'nin ikinci yarısında hayata geçecekmiş ve JSE 7 (Dolphin) sürümünde gelecekmiş.

12 Mart 2006

Object Oriented Database Management Systems

Object Oriented Database Management Systems (OODMS), Nesne Tabanlı Veri Tabanı Yönetim Sistemleri, ismini önceden duymuştum ama hiç bu konu ile ilgili bir makale okumadım.Sadece lisans yıllarında "Database" dersinde bir kaç bilgiden öteye değildi bildiklerim.Ta ki geçen gün bir zat'ın makalesini okuyunca ilgim bu konuya arttı. OODMS'ler gerçekten çok güzel düşünülmüş.Siz nasıl nesne tabanlı programlama yapıyorsanız veritabınını da bu şekilde tanımlayabiliyorsunuz.Böylece veritabanında kalıtım özelliğini de sağlamış oluyorsunuz.Bir çok avantajı var,mesela primary key ortadan kalkıyor.Çünkü herşey bir nesne ve her nesnenin bir ID'si var.Sorgulama (Query) diline de fazla ihtiyacınız yok.Çünkü nasıl programlamada bir nesnenin elemanlarına get() metodları ile ulaşıyorsunuz,burda da vaziyet aynı.Makalede de belirtildiği gibi kötü tarafı şema değişikliği.Yani veritabanında bir değişiklik yaptığınızda bu değişikliklere takabül eden sınıflarda da değişiklik yapmak gerek.Ama bu konuyu halledecek araçlar bence mevcuttur, araştırmadım gerçi.Otomatik olarak veritabanındaki değişiklikleri algılayıp kodu güncelleyebilirler mesela.
Günümüzde İlişkisel veritabanları bazı araçlar kullanılarak nesne tabanlı bir yapıya dönüştürebiliyorsunuz.Mesela ünlü hibernate projesini kullanarak haritalama (mapping) yardımı ile table'lar ile JavaBean sınfları arasında ilişki kurabiliyor ve nesne tabanlı olarak veritabanına veri yazıp okuyabiliyorsunuz.Ama arka tarafta, işlemler gene ilişkisel veritabanına göre yapıldığı için performansta bir kayıp oluyor.Ama OODBMS'de zaten her şey nesne tabanlı, o nedenle performansta ilişkisel veritabanında göre performans kaybının daha düşük olacağı kanaatindeyim.Bir deneyip görmek lazım...

05 Mart 2006

Netbeans 5.5 ve JEE 5 SDK çıktı!!!

Evet arkadaşlar, Sun'ın yeni enterprise kiti JEE 5 çıktı.Dikkat ettiğiniz üzere artık J2EE yok, "two" ibaresi kaldırıldı.JEE 5 içinde Sun Application Server,version 9'u barındırıyor ve son teknolojileri destekliyor,JSF 1.2,JAX-WS 2.0,JAXB 2.0...Bunun yanında NetBeans 5.5'de çıktı ve tabiki JEE 5'i destekliyor.Ayrıca NetBeans 5.5 Java 6 beta kodlarını da çalıştırabiliyor.Yalnız bu ikilinin hala beta versiyonları mevcutmuş.Çünkü spesifikasyonlarda ufak değişikliklerin olması muhtemel.Bu nedenle tam sürümleri 2006'nin ikinci çeyreğinde çıkacakmış.

Struts'da Form ve Action'lar...

Arkadaşlar güzel bir makale buldum.Struts'da Action ve Form nesnelerinin nasıl farklı şekillerde kullanılacağını anlatıyor ve bu yöntemlerin avantajlarını,dezavantajlarını ve hangi durumlarda kullanılabileceğini anlatıyor.Gerçekten çok hoş bir makale,referans olabilecek nitelikte...

01 Mart 2006

J2ME Polish

Arkadaşlar çalıştığım şirkette bir arkadaşım var.Geçen günlerde bana çok güzel bir projeyi tanıttı,J2ME Polish.Projeye göz attığımda ağzım açık kaldı açıkçası.Mobil telefonlar için yapmak istediğiniz uygulamalar olur,ama nasıl yapacağınızı düşünürsünüz.Oyun yüklersiniz telefonunuza,adamlar bu grafikleri nasıl yapmışlar dersiniz.J2Me Polish size aklınıza gelen fikirleri kolaylıkla geliştirmeyi sağlıyor.Sitesinde gezerken bir kaç özellik gözüme takıldı, değinmeden geçemeyeceğim:
    1. Öncelikle uygulamalar için enterasan GUI'ler tasarlayabiliyosunuz ve bu tasarıma CSS dosyalarında yapıyorsunuz.Süper bir şey.Kodda sadece CSS'i çağırıyosunuz.Aynı html gibi.Aşağıdaki resim başka söze gerek bırakmıyor.Sonra size bir oyun motoru sunuyor.MIDP 2.0 Oyun motorunu, MIDP 1.0 desktekleyen telefonlarda kullanabiliyosunuz.
    2. Kendi fontunuzu tanımlayabliyorsunuz,mesela verdan font tipini tanımlayabiliyorsunuz.Normalde üç tip Font vardı MIDP 1.0'da.
    3. Lokalizasyon yapmanıza imkan sağlıyor.Böylece uygulamanıza dil desteği sağlıyorsunuz.
    4. Telefon veritabanı mevcut.Böylece uygulamanızı spesifik telefonlara göre yapabliyorsunuz.
Ve daha niceleri.Bence girip bir bakın derim ve denemenizi tavsiye ederim.Bundan sonra mobil bir uygulama geliştirirken bu projeyi kullanmadan geçemem herhalde...

26 Ocak 2006

JFormDesigner ile Swing...

Gmail'imde maillerime bakarken JFormDesigner isminde bir projenin reklamını gördüm ve tabiki sitesine gidip bir bakayım dedim.Çok hoşuma gitti.Neden derseniz, Swing ile kullanıcı arayüzü oluşturmak hem elle kod yazarak hem de çeşitli araçlar kullanarak gerçekten zor.Mesela NetBeans'in form designer'ını kullanmıştım, baya bir zordu. Eclipse'in visual editor eklentisi de keza öyleydi.Ama bu proje gerçekten iyi düşünülmüş, kullanıcı arayüzü oluşturmak gerçekten çok kolaylaştırılmış.Hani .net'inkinden daha iyi desem yeridir:). Sitesinde projenin demolarına bakabilirsiniz, bu zaten yeterli olacaktır zannımca...

25 Ocak 2006

Java 6 (Mustang)

Uzun bir aradan sonra tekrar merhaba!!!Bir okuyucum saolsun bir yorum yazmış ve benden Java 6 (Mustang) için yorumlarımı sormuş.Teşekkür ediyorum ilk önce.Şu aralar internette Java 6 ile ilgili haberlere bakıyordum.Yazılan makalelere göre syntax olarak bir değişiklik yapılmayacak bu yeni sürümde.Biliyorsunuz Java 5 ile birçok yeni özellik getirilmişti Java programlama diline (Herhalde c# ile arasındaki syntax farklılıklarını bir nebze olsun gidermek için:) ).Genel hatlarıyla Java'nın bu yeni sürümünde bazı var olan API'lerde iyileştirmeler ve eklentiler yapılmış ve yeni özellikler katılmış.Ayrıca mimari olarak da birtakım değişiklikler mevcut.Gözüme takılanlar şöyle:
  • Artık Java kaynak dosyaları bir uygulama içerisinden derlenebilecek (Java Compiler API).Böylece basit IDE'ler daha kolay bir şekilde yazılabilir.
  • Script dilleri derlenebilecek.Bu sayede Java uygulamalarının içerisinde mesela "JavaScript" yazılabilecek.Mustang'de Mozilla Rhino (JavaScript yorumlayıcısı) entegre edilmiş.Rhino'yu normalde uygulamlara siz kendiniz entegre ediyordunuz.Böylece Java uygulamalarınızda javascript yazabiliyordunuz.
  • "java.io.File" sınıfı artık size diskinizdeki bölümleri, bu bölümlerin toplam boyutlarını,boş kalan kısımların büyüklüğünü söyleyebilecek.Ayrıca Windows platformunda 255 karakterden fazla dosya yolları yazabileceksiniz.
  • XML ve web servisleri konusunda bir hayli gelişme var.Herhalde XML ve web servislerinin popüleritesi arttığından dolayı JAVA bu önemi anlamış olsa gerek.Mustang'e çok büyük olmayan bir HTTP server entegre edilmiş.Böylece basit callbackler ve web servisler çalıştırılabilecek.
  • JDBC 4.0 Mustang'e entegre edilmiş olarak gelecek.Böylece otomatik java.sql.Driver keşfi sağlanabilecek,SQL:2003 XML desteği ve Ulusal dil desteği sağlanmış olacak.
  • Java uygulamalarının izlenmesinde,yönetiminde de bir çok yenilik gelmiş.Bunlardan en çok hoşuma giden, geçenlerde bir arkadaşımın bahsettiği, java uygulamaları artık VM'ye eklenecek.Mesela siz aynı anda üç tane uygulama çalıştırdınız.Bunlar Windows görev yöneticisinde üç ayrı javaw.exe olarak gözükür.Artık bunları tek javaw.exe olarak göreceksiniz.Böylece her bir uygulama için ayrı ayrı hafıza kullanımı olmayacak ve hız artacak.
  • java.lang.OutOfMemoryError artık size sadece bir satır cümle basmayacak.Bu soruna neden olan neyse stack trace'i basılacak.Bu da hafızanın efektif olarak kullanılması gereken uygulamalarda büyük bir avantaj sağlıyacak.
  • jconsole geliştrilmiş, hem kullanıcı arayüzü olarak hem de yapısal olarak.Böylece çalışan uygulamarı daha kolay bir şekilde görebilecek ve yönetebileceksiniz.
Evet arkadaşlar, benim gözüme takılanlar bu şekilde.Yanlışım varsa lütfen düzeltmeyi unutmayın.Sizlerinde yorumlarını bekliyorum.Ayrıca bir şeyi daha unutmadan söyleyeyim.Dikkat ettiyseniz artık JAVA sürümleri 1.3, 1.4 şeklinde değil de Java 5 Tiger, Java 6 Mustang... isimleri ile çıkıyor.Bu da bence Java'ya ayrı bir hava katıyor.Ayrıca Mustang'den sonra çıkacak yeni sürümün kod ismi de "Dolphin" miş.Bunu da söyleyeyim dedim.Herkese iyi günler dilerim...

11 Ocak 2006

Eclipse'e J2EE Standard Tools eklentisi...

Ben bir Eclipse IDE'si hayranıyım, gerçekten çok güzel, çok kullanışlı ve çok hızlı bir uygulama geliştirme platformu. En büyük özelliklerinden bir tanesi de genişletilebilir olması. Bu sayede Eclipse'e çeşitli eklentiler ekleyerek çeşitli fonksiyonaliteler katabiliyorsunuz.Piyasada bedava yada paralı birçok eklenti mevcut. Bu iletide çok güzel bir eklentiden, başlıkta da belirtildiği gibi J2EE Standard Tools eklentisinden, bahsedeceğim. Bu eklenti Eclipse platformunda EJB'den tutun Servlet'lere kadar bir çok J2EE teknolojisini kullanarak web uygulamaları geliştirmenizi sağlıyor. Bu eklenti ile çeşitli dosya tipleri özel bir formatta açılıyor.Mesela XML dosyaları özel bir editörde açılıyor ve tasarım aşamasında XML'i değiştirebiliyorsunuz, JSP dosyalarında kod renklendirmesi yapabiliyor ve scripletlerde otomatik kod tamamlama özelliğini kullanabiliyorsunuz ...Bir de IDE'de "File" menüsünden "New..." alt menüsünü seçtiğinizde bir sürü yeni proje tipi çıkıyor.Örneğin; EJB,J2EE gibi...Kısacası,bu eklentiyi bir deneyin derim ben...

Kurban bayramınız kutlu olsun...

Uzakların yakın olduğu, küskünlerin barıştığı, huzurlu ve mutlu bir bayram geçirmeniz dileğiyle, hayırlı bayramlar...

01 Ocak 2006

RSSOwl, JAVA RSS okuyucu...

Geçen gün merak ettim ve Google'da JAVA'da yapılmış bir RSS okuyucu var mı diye arattım.Tabi bir sürü sonuç çıktı.Çıkmaması anormal olurdu zaten.Bu sonuçlardan, en iyi rss okuyucu sıralamasına da giren, open source bir proje buldum, RSSOwl. Program gerçekten güzel,kullanışlı. Görselliği Eclipse'in kullandığı IBM'in ürünü olan SWT Toolkit'i kullanarak hazırlamışlar. Programın ilginç bir özelliği, bir haberi html,pdf ve rtf olarak kaydetmeye olanak sağlaması. Diğer RSS okuyuculardaki özellikler mevcut kendisinde.Uzun lafın kısası bir denemenizi öneririm...