21 Aralık 2005

Image Processing ve Java

Arkadaşlar Java'nın gücünü gün geçtikçe daha iyi anlıyorum. Image Processing üzerine bir kaç ödevim vardım ve Java'da yapacaktım.İki tane, bana göre temel sayılabilcek, sınıf keşfettim. PixelGrabber ve MemoryImageSource.PixelGrabber sınıfı ile bir Image objesinin pixellerini teker teker elde edebiliyorsunuz.Aşağıda gözükmektedir:

Image originalImage = new ImageIcon( imageURLString ).getImage();
int [] originalPixelArray;
PixelGrabber grabber = new PixelGrabber(originalImage, 0, 0, -1,
-1, true);
if (grabber.grabPixels()) {
originalPixelArray = (int[]) grabber.getPixels();
}

Daha sonra bu pixel dizisi üzerinde istediğiniz işlemi yaptıktan sonra yeni pixellernden oluşan dizi ile MemoryImageSource sınıfını kullanarak işlenmiş resmi oluşturabiliyorsunuz:

MemoryImageSource mis = new MemoryImageSource(width, height, newPixelArray,
0, width);
Image newImage = createImage(mis);

Burda width ve height parametreleri yeni resmin genişliğini ve yüksekliğini gösteriyor. Bir resme nasıl animasyonlu bir şekilde fade etkisi uygulandığını görmek için tıklayınız.

17 Aralık 2005

Castor ve XML

Uzun bir aradan sonra tekrar ilginç bir teknoloji ile karşınızdayım:) Gerçi teknoloji sayılmaz ama bir proje diyelim. Castor projesi size XML dosyaları üzerinde çok çeşitli işlemler yapabileceğiniz API'ler sunuyor.Örneğin XML dosyalarını Java Bean'ler şeklinde parse edebilyorsunuz ve XML parse edildikten sonra yapılan herhangi bir değişikliği otomatik olarak algılayıp XML dosyasını güncelleyebiliyorsunuz.Açıçası database kullanmadan XML kullanarak bir web uygulaması yazabilirsiniz, bunu neden söyledim, çünkü bir e-ticaret sitesi yapacağım ve bunu sadece XML dosyaları kullanarak yapmayı düşünüyorum.Bakalım Castor ile neler yapabileceğiz...

03 Aralık 2005

Arrays sınıfı harika...

Geçenlerde Java 5 Tiger'a bakıyordum biraz.Gözüme çok güzel bir sınıf takıldı,java.util.Arrays .Bu sınıf ile sizin uzun uzun yaptığınız dizi işlemlerini bir metodla yapabiliyorsunuz. Mesela iki diziyi

Arrays.equals(myArray, myOtherArray);

şeklinde karşılaştırabiliyorsunuz yada bir dizi içinde binary search yapabiliyorsunuz, şu şekilde:

int index = Arrays.binarySearch(myArray, 98);

En önemlisi

Arrays.sort(myArray);

diyerek dizinizin elemanlarını sıralayabiliyorsunuz.Kısacası bir bakmanızı tavsiye ederim.

18 Kasım 2005

System Tray'a ulaşmak artık çok kolay...

Programlar minimize edildiğinde system tray'da gözükmesi ve program ikonunun üstüne sağ tıklayarak programla ilgili çeşitli kısa yollara ulaşılması çok güzel bir özellik benim için.Bu arada System Tray nedir? diye soranlar için, system tray windows'ta veya linux'ta sağ alt köşede bulunan özel bir kısım.Burada çalışan bazı programların ikonları bulunur.JAVA'da artık system tray özelliği olan programlar yazmak çok kolay.Yeni gelecek Java 6.0 (Mustang)'de iki sınıf olacak, SystemTray ve TrayIcon diye.Bu sınıflar sizin system tray'a yönelik programlar yazmanızı sağlayacak. Bu sınıfların kullanımını anlatan bir makaleden detaylı bilgiyi alabilirsiniz.

Bedava Araçlar!!!

Evet işte uzun zamandır beklediğim an gelmiş,SUN bir kıyak daha yapmış saolsun.SUN Java Creator IDE ve Sun Java Studio Enterprise artık bedava.Normalde fiyatları epeyce yüksekti.Bedava kullanmak için bir şart var, o da SDN üyesi olmak.Zaten o da çok basit.Ben ikisini de indirdim,inşallah bir sorun ile karşılaşmam.

Technorati Tags: , ,

09 Kasım 2005

Taconite

AJAX uygulamaları geliştirmek için bir framework daha, TACONITE!!!. Apache lisanslı olan bu proje size istemci-taraflı bir javascript kütüphanesi sunuyor.Böylece XML dökümanlarını AJAX yolu ile okuyabiliyorsunuz.Ayrıca size JSP tag kütüphanesi de sunuyor çoğu işi kolaylıkla yapabilesiniz diye...

03 Kasım 2005

Bayramınız Kutlu Olsun...

Herkesin bayramını en içten dileklerimle kutlar,hayırlara vesile olmasını dilerim...

02 Kasım 2005

Swing Eğitimi

Java'da Swing kütüphanesini kullanarak masaüstüne yönelik uygulamar geliştirmek için güzel bir site. Tıklayınız, yalnız ingilizce....

EclipseME Projesi

EclipseME projesi, JAVA Micro Edition platformunda uygulama geliştirmeye yarayan bir projedir.Benim bir zamanlar mobil telefonlar için proje geliştirirken kullandığım bir eklenti (plugin)'dir. Bu eklentiyi eclipse ide'sine kolayca entegre edebiliyorsunuz ve çok rahat bir şekilde mobil uygulamalar geliştirebiliyorsunuz.Yazdığınız kodun telefonda nasıl çalıştığını görmek istiyorsanız da dert değil,çünkü çeşitli telefon emülatörlerinde ön izleme yapmanızı sağlıyor. Eklenti ön koşul olarak J2ME Wireless Toolkit'i yüklemenizi istiyor.

01 Kasım 2005

Obfuscation Nedir?

Java Dünyası'nda kod geliştiren herkes .class uzantılı (derlenmiş java dosyaları) dosyalardan kaynak koda (.java uzantılı dosyalara) decompiler denilen araçlarla geçileceğini bilir. Bu nedenle internetten yada herhangi bir yerden elinize geçen bir java projesinin sadece class dosyaları varsa bu araçlarla rahatlıkla orjinal kaynak koda dönebilirsiniz. Tabi bazı kayıplar olabilir,fakat bu kodu anlamanıza engel olmaz. Bu nedenle class dosyaları, kodunuzun başkaları tarafından okunmasını istemiyorsanız, güvenli değildir.

İşte obfuscation dediğimiz olay bu işe bir çözüm getirmiştir. Obfuscation işlemi sizin derlediğiniz .java dosyaları ile oluşan .class dosyaları üzerinde işlem yapar ve artık .class dosyalarından kaynak koda ulaşma işlemine bir son verir. Bu işlemi nasıl mı yapar?

Temel olarak bir class dosyasını alır ve onun ismini,kullandığı metodarın,alanların isimlerini değiştirerek alfabeden isimler atar. Mesela Deneme.class, a.class'a dönüşür. Tabi bunu yaparken bu class'ı kullanan diğer class'larda da gerekli değişiklikleri yapar.Böylece kodunuz hem sorunsuz bir şekilde çalışır hem de güvenliliği sağlanmış olur. Obfuscation işlemini yapan araçlara Obfuscator denmektedir ve piyasada çeşitli obfuscator'ler bulunmaktadır. Bunlardan en beğendiklerim ProGuard (bedava) ve RetroGuard (ticari projeler için paralı)'dır.

Obfuscation işlemi ayrıca projenin büyüklük olarak da küçülmesini sağlar. Özellikle mobil projeler için bu çok güzel bir özelliktir. Çünkü çoğu mobil proje internetten,wap'tan indirilmektedir. Bu nedenle projenin mümkün olduğu kadar küçük olması aranmaktadır.Obfuscation class isimlerini,değişkenlerinin isimlerini... kısalttığı için otomatik olarak projenin boyutu da küçülmektedir.

31 Ekim 2005

J2EE Dizayn Kalıpları

Aşağıdaki sitede J2EE dizayn kalıplarının (design patterns) listelendiği bir online katalog bulabilirsiniz: Core J2EE Patterns

PDF'li Uygulamalar

Adobe Java Uygulamaları için .pdf uzantılı dosyaları okuyabileceğiniz bir API çıkarmış. Bu API ile kendiniz bir Acrobat Reader yazabilirsiniz. Sitesi için tıklayın. "EXE" veya "ZIP" uzantılı olarak indirebiliyorsunuz. "ZIP" uzantılı olan uygulama geliştirmek için, zip'in içinde örnekler ve açıklamalar bulunmakta.

AJAX...

Ajax yeni bir teknoloji, bir senedir piyasada kullanılmakta:) Ben bu teknolojiyi son 2-3 aydır takip ediyorum. Nedir bu AJAX?

Hepimizin bildiği gibi web sayfalarını dolaşırken herhangi bir butona yada linke tıkladığımızda sayfanın yeniden güncellenip içeriğinin değiştiğini görürüz, sayfanın yeniden yüklenmesinde karşımıza boş bir sayfa çıkar.AJAX bu olayı çözmüş,yani sayfalar dinamik olarak yükleniyor aynı GMail'de olduğu gibi. Mesela siz bir butona tıkladınız ve karşınıza bir "loading..." yazısı çıktı ve sayfanın beyazlaşmadığını gördünüz.Ya da sayfanın belli bir bölümünü dinamik olarak güncellemek istediniz,herhangibir linke tıkladınız ve o bölümde bir "güncelleniyor..." yazısı çıktı ve bir kaç sn. sonra ordaki içeriğin değiştiğini gördünüz.

AJAX işte böylece sayfaların dinamikleşmesini sağlıyor.Peki AJAX yeni bir framework mü? Cevap ise hayır.AJAX bir teknikten öteye geçmiyor. AJAX ile sadece JavaScript'i efektif olarak kullanıyosunuz, böylece nerdeyse varolan tüm çatı (framework) 'lara uygulayabiliyorsunuz.Mesela "Struts" çatı(framework)'sına yada sadece "jsp" koduna monte edebilirsiniz.

AJAX'ın daha kolay kullanılması için çeşitli projeler geliştirilmiş. Örneğin DWR (Direct Web Remoting) size javascript'le uğraşmama kolaylığı sağlıyor,bildiğiniz java class'larını direk kullanmanızı sağlıyor.Bunun yanı sıra ceşitli makaleler mevcut,benim en sevdiğim makale: "Sprinkle Some AJAX Magic in Your Struts Web Application". Bu makale AJAX'ı çok güzel bir şekilde anlatıyor ve AJAX'ı bir struts örneğinde kullanıyor.

05 Haziran 2005

Merhaba!!!

İlk mesajım,hadi hayırlısı...