Showing posts with label Java. Show all posts
Showing posts with label Java. Show all posts

February 10, 2009

How to make a prepared statement scrollable and updateable in JDBC?

// New in JDBC 2.0
PreparedStatement ps2 = conn.prepareStatement(sqlString,
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATEABLE);

// New in JDBC 3.0
PreparedStatement ps3 = conn.prepareStatement(sqlString,
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATEABLE,
ResultSet.HOLD_CURSOR_OVER_COMMIT);

July 21, 2008

Eclipse ve Java Hafıza Arttırımı ile Performans Kazanımı

Eclipse kullanıyorsanız muhtemelen yavaşlık problemleri yaşıyorsunuzdur. Bu problemlerin aslında basit bir çözümü var. Aslında bu çözüm bütün Java uygulamaları için geçerlidir. Bütün Java uygulamalarını hafıza kullanımı sınırlarını ayarlayabilirsiniz.

Bütün Java uygulamalarınızı çalıştırırken -Xms40m ile minimum hafıza kullanım sınırını 40 megabyte'a; -Xmx512m ile maximum hafiza kullanımını 512 megabyte'a sınırlayabilirsiniz. Örneğin:

java App -Xms40m -Xmx512m

Bu ayarlar Eclipse içinde geçerlidir. Ayarları değiştirmek için eclipse.exe 'inin bulunduğu dizinde bulunan eclipse.ini dosyasını bir metin düzenleyici ile açın. Zaten ayarları orada göreceksiniz. Bu değerleri hafızanıza göre ayarlayabilirsiniz. Örneğin -Xms756m -Xmx756m şeklinde ayarlayabilirsiniz.

Fakat eğer bu değerleri Java'nın kabul edemeyeceği kadar büyük verirseniz Eclipse hata verip başlamayacaktır. Benim deneyimlerim 1000mb'yi geçince hata vereceği yönünde. Bu kısıt, Java'nın hafıza adresleme kısıtları ile ilgilidir.

Son olarak Xms ile ayarladığınız değeri ilk bakışta düşük bir değere eşitlemenin iyi olacağı düşünebilir. Böylelikle Eclipse ya da herhangi bir Java uygulaması Xms ile ayarladığınız hafıza ile başlar ve gerektikçe hafıza kullanımı arttırır. Yani 40mb ile başlayıp hafıza gerektikçe Xmx ile ayarladığınız değere kadar hafıza arttırımı yapacaktır. Fakat bu nokta önemli olan, bu hafıza arttırımı işlemi çok zahmetli ve dolayısıyla performans düşürücü bir işlemdir. Yani kısacası Xms değerini küçük vermeyin, hatta Xmx ile aynı değeri verin ki hafıza arttırımı işlemine gerek kalmasın.

April 11, 2008

Hunter for Turkish 'i'

Turkish language is probably a nightmare for programmers, especially for ones that something to do with internationalization. Why? Because Turkish alphabet has two characters: 'i' and 'ı' (i without dot); and their capitals 'İ' and 'I' respectively. Did you notice it?

It is unfortunate that in Turkish uppercase of 'i' is not 'I' (which is the case in English) And it gets worse as lowercase of 'I' is 'ı' not 'i'.

So, when you are programming you should always have this situation in mind especially if you are calling (most probably you are) toLowerCase, toUpperCase and equals in any programming language. Most languages have overridden methods which takes locale as parameters.

Especially, open source projects generally have such problems. I try to hunt these bugs and here is what I got for now:

I will be hunting for more :)

July 25, 2007

Eclipse 3.3 ile Merhaba Java Dünyası

Bu yazıda, Eclipse kullanarak basit bir Java uygulaması nasıl geliştirilebileceği hakkında bildiklerimi paylaşacağım.

Ama önce Eclipse hakkında kısa bir bilgi vereyim. Eclipse, 2001 yılında IBM tarafından geliştirilmeye başlanmış bir tümleşik geliştirme ortamıdır. IBM daha sonra bu yazılımı Eclipse Vakfı'na bağışlamış ve açık kaynak kodlu bir yazılım halini almıştır. Şu an birçok yazılım devi tarafından desteklenen Eclipse, Haziran 2007'de 3.3 sürümü çıkarmıştır.

Eclipse şu anda Java geliştirmek için en çok kullanılan ortamlardan biridir. Başarısının altındaki en büyük nedenlerden biri, eklenti mimari yapısı sayesinde Eclipse'i genişletmenin inanılmaz
kolay olmasıdır. Bu sayede sadece Java değil, uygun eklentiler ile C/C++, Python, Javascript gibi dillerde geliştirme yapmak da mümkün olmaktadır. Eclipse ekosistemi şu anda ticari ya da açık kaynak kodlu pek çok eklenti içermektedir. Bu eklentilerin belli başlı 21 tanesi Eclipse 3.3 sürümü ile aynı zamanda yayınlanan Europa eş zamanlı sürümünde yer almaktadır. (Europa içerdiği projeler hakkında başka bir yazı yazmayı düşünüyorum)

Bu kadar bilgi yeter birazda iş yapalım. Öncelikle www.eclipse.org/downloads sayfasından "Eclipse IDE for Java Developers" indirmeniz gerekiyor. Tabii Java'yı kurmanız gerektiğini söylememe gerek yok sanırım:) Eclipse'in bu sürümü için en az Java 1.5 yüklü olması tavsiye ediliyor.

Eclipse'in kurulumu çok kolay indirdiğiniz zip dosyasını bir dizine açıyorsunuz ve Eclipse kurulmuş oluyor:) Zipi açtığınız dizindeki Eclipse.exe'yi çalıştırmanız yeterli. (tabii windows için)

Eclipse açılışında sizden bir çalışma alanı (workspace) dizini soracaktır. Eclipse bu alanı projelerinizi ve ayarlarınızı saklamak için kullanacaktır. Herhangi bir dizin girin. Ve Eclipse'in her açılışında bu dizini sormasını istemiyorsanız "Use this as the default and dont ask again" seçeneğini işaretleyin.

Çalışma alanını ilk kez kullanıyorsanız, Eclipse sizi "Hoşgeldiniz" görünümü ile karşılar. Burada Eclipse ve yüklü eklentileri ile ilgili genel bilgilere, yardım sayfalarına, eğitim dokümanalarına ulaşabilirsiniz. Bu görünümü sol üste "Welcome" başlığının yanındaki çarpı ile kapayabiliyoruz. Böyle Java perspektifini görebiliyoruz. Burada kısaca Eclipse'deki perspektif olayından bahsedeyim. Eclipse, görünümlerin yerleşimi ve hatta bazı menülerin,vb. yerleşimini perspektifler kullanarak yönetmektedir. Biz Java perspektifini ve hata ayıklama yapmak için "Debug" perspektifini kullanacağız. Kendi yerleşimlerinizi yapıp, perspektif olarak kaydedebilirsiniz. (Başka bir yazı konusu daha)


Şimdi bir Java projesi yaratmamız gerekiyor. Bunun için ya "File" menüsünden ya da soldaki "Package Explorer" görünümünde sağ tıklayarak New->Project seçip çıkan sihirbazlar arasından "Java Project" seçmemiz gerekiyor. Çıkan ekranda bir proje adı girmemiz gerekiyor. Diğer ekrandaki ayarlar arasında projenin kullanacağı Java Sanal Makinası seçimi, projenin kaynak ve sınıf dosyalarının ayrı ayrı dizinlerde mi yoksa aynı dizinde olması gibi ayarlar mevcut. Ayarlarla oynamadan "Finish" yapabileceğimiz gibi "Next" ile kullanacağımız kütüphaneleri ekleyebileceğimiz ekranlara ulaşabiliriz. Biz kısayoldan "Finish" tıklıyoruz.


"deneme" isimli projemiz yaratılınca soldaki "Package Explorer" görünümünde gözükecektir. Projeye yeni bir sınıf eklemek için, bu görünümden projeye sağ tıklayıp New->Class seçmeliyiz. Burada bir sınıf ismi girmemiz gerekiyor. Ayrıca bir de paket ismi vermekte yarar var. (java pratikleri açısından paket ismi vermek iyidir) Paket ismi olarak "tr.eclipse.deneme", sınıf ismi olarak "Merhaba" giriyoruz. Bir de main metodu bizim için yaratması için ilgili seçeneği seçiyoruz. Bu ekranda sınıfın super sınıfını ve/veya gerçeklediği arayüzleri de seçebiliyoruz. Bunları burada yapınca Eclipse sınıfı yaratırken gerçeklenmesi gereken metodlarıda bizim için sınıfımıza ekleyecektir. Ama bu ekranda bu seçenekleri kullanmazsanız da üzülmeyin Eclipse'e bu metodları daha sonrada ekletebilirsiniz. (Başka bir yazı konusu daha:))

"Finish" diyip sınıfımızı yaratınca Eclipse ekranında Merhaba sınıfımız açılacaktır. Burada main metoduzu içindeki TODO satırını silip yerine "Merhaba Dünya" yazacak satırımızı ekleyelim. Ama bunun içinde Eclipse kısayolunu kullanalım; "sysout" yazıp CTRL+space basınca Eclipse bizim için bunu "System.out.println(""); " şeklinde tamamlayacaktır. Bu Eclipse'de bulunan kod şablonlarının kullanıma bir örnektir. (Başka bir yazı konusu) Satırın içine "Merhaba Dünya" yazalım. Böylece sınıfımız çalışmaya hazırdır.

Çalıştırmak için sınıfın üzerine sağ tıkladığımızda çıkan menüde "Run As->Java Application" seçiyoruz. Ve sonucu "console" görünümünde görüyoruz. Hata ayıklamak (debug) yapmak için ise "Debug As->Java Application" seçmeliyiz. (Eclipse ile hata ayıklamada başka bir yazı konusu)

Ve sonunda başardık. Yazı tahminimden uzun oldu çünkü basit bir merhaba dünya uygulamasından öte Eclipse'in güzel özelliklerinlerinin bazılarına kısaca değinmek istedim. Çünkü Eclipse'i gerçekten çok kullanışlı buluyorum ve bütün Java geliştiricilerinin kullanması gerektiğini düşünüyorum. Yazı içerisinde başka yazı konusu olarak not aldığım noktalar hakkında başka yazılar da eklemeyi düşünüyorum. Bu yüzden arada bir bu sayfayı kontrol etmenizi ya da RSS beslemelerine üye olmanızı tavsiye ederim.

Tankut

Java Teknolojileri ve Programcıları Derneği

Türkiye'deki Java programcıları
için iyi bir kaynak ve paylaşım ortamı olabileceğini düşündüğüm bu derneğe ve forum sayfalarına mutlaka bakın. Ayrıca İstanbul'da ücretsiz eğitimlerde vermekteler.

http://www.jtpd.org