Netbeans: O da ne?

25 08 2008


Netbeans da ne oluyor? Adın sıkça duyuyor, kerametlerini işitiyorsunuz. Ancak Netbeans nedir diye soramıyorsunuz? Netbeans ile ilgili binlerce yazının yazılıp çizildiği Google Cehenneminde eminim kimse size Netbeans’ın tam olarak ne olduğunu açıklamıyor. Sanki herkes sırrı saklamak için paylaşmış gibi.
İşte sırların cevabı:


Netbeans Nedir?
Netbeans bir IDE’dir. Yani yazılım geliştirme ortamıdır. Bu yönü ile daha evvel duyma ihtimaliniz olan Eclipse, JBuilder, Oracle JDeveloper, Visual Studio gibi geliştirme ortamlarının meslektaşıdır:) [ Benzeridir diyemeyeceğim çünkü Netbeans IDE'lerin piridir.]
Eğer Java ileyazılım geliştirme ile uğraşıyorsanız belki de Notepad ile kodlarınızı yazıp, windows’un sevimsiz konsoünde “cavaj” ön komutu ile derleme yapıyor daha sonra da “hatasız kod olmaz” diyerek hatalarınızı düzelttikten sonra programınızı son bir kez daha derleyip “java” yada “javaw” ön komutu ile çalıştırıyordunuz.
Belki bunların hiç birini yapmıyor, ya hu kodlarımı nasıl “compile” ederim diyordunuz.
İşte Netbeans bunların hepsini sizin yerinize yapıyor. Bu en basit özelliği.

Mobil geliştirme ortamından görünüm.

İşte diğer özellikleri:

  • GUI olarak tesmiye edilen, grafiksel yani düğmeli, textfieldli, adamakıllı programlar için sürükle bırak tekniği ile hızlıca arayüz oluşturma imkanı
  • GUI’lerdeki düğme vb. objelerin tıklanması gibi özel olaylarda programın ne yapacağını belirleyen kodların çerçevesini özel olarak oluşturma
  • Java ile (JSP,JSF) Web programcılığı için neredeyse tamamen sürükle bırak tekniği ile çalışma imkanı
  • Sürükle bırak yöntemi ağırlıklı ve üstün özelliklere sahip, hızlı ve esnek mobil programcılık ortamı (cep telefonları,PDA’LAR). Bu programları ilgili ortama anında yükleyebilme imkanı. (Örneğin derlediğiniz mobil programınızı direkt netbeans üzerinen cep telefonunuza atabiliyorsunuz (6.1+))
  • Binlerce özel eklenti ile farklı yazılım geliştirme seçenekleri. (Örneğin Mozilla Eklentisi geliştirmek için yazılmış Netbeans modülü ile Mozilla Browser’inize eklenti yazabiliyorsunuz)
  • Netbeans için kendi özel eklentilerinizi yazabilme imkanı
  • Java dışında C, Ruby, ve 6.1 versiyondan sonra PHP ve Javascript için de özel geliştirme ortamı
  • Web servisleri geliştirme ortamı

Eh dostlar, gelin de böyle bir IDE’yi kullanmayın. Ben 4.1 versiyonundan beri yani 2004′ten beri kullanıyorum.
Netbeans ile yaptığım örnek bir proje için:
http://code.google.com/p/mocawa/

adresinden (Google Kod barındırma hizmeti) programı inceleyebilirsiniz.

Bilenler, bilmeyenlere anlatsın.





PlanetNetBeans’ta Blogum Yayınlandı

25 08 2008

Eh…! bir blog yazarını gurulandıracak bir husus.
Dün gece gelen mail ile Blog’umun Netbeans etiketlerini içeren kısmının PlanetNetbeans’ta yayınlandığını bildiren bir eposta aldım.
Benim blogum dışında da güzel bloglar var.
Elbette bu “kutsal sitede” blogumun yayınlanması ile Netbeans için daha fazla çalışacağım.

Saygılarımla…





Netbeans’de Persistence Kullanımı ve önemli ipuçları

25 04 2008

Java Netbeans Desktop Database App.
(Resim:1 Netbeans resmi sitesinden persistence uygulaması örneği)

Ücretsiz Java Program Geliştirme Ortamı olan Netbeans IDE’nin 6.0 ve üstü sürümlerinde masaüstü programlar için desteklediği Persistence teknolojisi sayesinde veritabanı programcılığının rahatlığının .NET ile boy ölçüşür düzeye geldiği bilinmektedir.
Ancak bu teknolojinin yeni olması itibari ile internette ingilizce kaynak bile bulmakta sıkıntı çekilmektedir.
Persistence teknolojisinin en temel kullanımı hakkında Netbans’ın resmi sitesindeki:
http://www.netbeans.org/kb/60/java/gui-db.html
adresli makale inclenebilir. Bu makalede varolan bir veritabanından CRUD uygulaması ya da CREATE,UPDATE,DELETE uygulamasının yani Türkçesi ile; Veri ekleme, Veri güncelleme, Veri Silme uygulamasının yapılışı anlatılmaktadır. Buna bir de listeleme özelliği eklemek gerekir nitekip program listeleme özelliğini de otomatik olarak oluşturuyor.
Buraya kadar sorun yok;
Ancak Netbeans’ta sözkonusu makalede geçen veritabanından ya da kendinzize ait özel veriabanından spesifik sorgulama yapmak istediğinizde sofistike sql sorgusu rahatlığında işi gerçekleştiremiyorsunuz.
Bunun için geçirdiğim iki uykuz geceden sonra ortaya çıkardığım metodu sizlerle paylaşayım:

Netbeans\'de persistence kullanımı

(Resim2: Suat ATAN tarafından yazılan bir uygulanada Netbeans IDE’nin Inspector ekranı)

Gerek Netbeans’ın Desktop Database Project seçeneği ile otomatikmen oluşturulan projelerinde gerekse sizin program içinde herhangi bir component’e sağ tıklayıp data bindirmek için “bind” ibaresini tıklamanızda ekran kesitinde görüldüğü gibi kırmızı ve yeşil şeritle işaretlediğim componentler ortaya çıkar. Bu componentleri sağ tıklayıp properties (özellikleri) incelenince sorgunun:

SELECT t FROM Teklıfler t

gibi ilginç ve sql’den bozma olduğu görülür. Bu sorguyu maalesef WHERE, ORDER BY gibi taglarla zenginleştiremezsiniz. Bunun için yapmanız gereken işlem biraz uzun,şöyle ki;
Spesifik hale getirmek istediğiniz query’i (bundan böyle kırmızı şeritle işraretli comonenti ifade için böyle diyeceğim) seçip yine sağ tıklayarak “customize code” diyeceksiniz. Daha sonra kod bloğuna örneğin şöyle bir sorgu ekleyebilirsiniz:

Orjinalinde parantez içinde geçen sorgu SELECT t FROM Teklıflerlıstesı t iken siz şöyle yazabilirsiniz:

teklıflıstesıQuery = mocawaPUEntityManager.createQuery(“SELECT t FROM Teklıflıstesı t WHERE t.teklıfno =’”+SECILEN_TEKLIF_NO_STRING+”‘”);

Bu sorgu vasıtasıyla sorgumuzu filitreliyoruz. Gördüğünüz gibi biraz uzun ve sorgu dış parametre kabul etmiyor. Bu yüzden sorgu stringini değişken hale getiriyoruz. Durun daha bitmedi:
Bu hali ile herhangi bir yerden SECILEN_TEKLIF_NO_STRING değişkenini alarak veri dökümünü yapmaya çalışırsanız sonuçta yine veri dönmez. Bunun nedeni ise veri döküm listesinin örneğin bir tabloya ya da combobox’a bindirme işleminin Netbeans’ın standart programı içinde initComponents() metodu içinde kalması ya da bir kereye mahsus program başında çalıştırılması işidir.
Bu derdi de aşmak için verilerin ilgili component’e bir daha bindirilmesi gerekir. Bunu sağşamak için ise Netbeans’ın initComponents() metodu altındaki standart veri bindirme kodlarını kopyalayıp, sorgu filtre parameteresi ortaya çıktıktan sonraki olayla tekrar tetiklemektir.
Yani mesela bir buton tıklamasında bu kodları butonun tıklanma metodu altına tekrar yapıştırmaktır.

Aşağıda bunun güncel bir örneği var: (Kendi programımdan)

private void BT_TEKLIF_DETAYMouseClicked(java.awt.event.MouseEvent evt) {
// FİLTRE PARAMETERESİNİ BİR TEXTFİELDDEN ALIP DEĞİŞKENİMİZE YÜKLEDİK
SECILEN_TEKLIF_NO_STRING=SECILEN_TEKLIF_NO.getText();

//SORGUYU ENTITY MANAGER ILE TEKRAR İŞLEDİK
mocawaPUEntityManager = javax.persistence.Persistence.createEntityManagerFactory(“mocawaPU”).createEntityManager();

teklıflıstesıQuery = mocawaPUEntityManager.createQuery(“SELECT t FROM Teklıflıstesı t WHERE t.teklıfno =’”+SECILEN_TEKLIF_NO_STRING+”‘”);
teklıflıstesıList = teklıflıstesıQuery.getResultList();

//ŞİMDİ SONUÇLARI TABLOYA YENİDEN İŞLİYORUZ
org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, teklıflıstesıList, TABLO2);
org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(“${teklıfno}”));
columnBinding.setColumnName(“Teklıfno”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(“${boy}”));
columnBinding.setColumnName(“Boy”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(“${bırımfıyat}”));
columnBinding.setColumnName(“Bırımfıyat”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(“${dalga}”));
columnBinding.setColumnName(“Dalga”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(“${ebatSerıNo}”));
columnBinding.setColumnName(“Ebat Serı No”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(“${en}”));
columnBinding.setColumnName(“En”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(“${fıyatsafıaenı}”));
columnBinding.setColumnName(“Fıyatsafıaenı”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(“${kalıte}”));
columnBinding.setColumnName(“Kalıte”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(“${safıaboyu}”));
columnBinding.setColumnName(“Safıaboyu”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(“${safıaenı}”));
columnBinding.setColumnName(“Safıaenı”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(“${yukseklık}”));
columnBinding.setColumnName(“Yukseklık”);
columnBinding.setColumnClass(String.class);
bindingGroup.addBinding(jTableBinding);
jTableBinding.bind();

TEKLIF_DETAYLARI.setSize(600, 600);
TEKLIFLER_EKRANI.setVisible(false);
TEKLIF_DETAYLARI.setVisible(true);
TEKLIF_DETAYLARI.setTitle(“TEKLİF DETAYI: “+SECILI_FIRMA.getText());
}

Evet yukarıdan da anlaşılacağı üzere püf noktamız;

  1. Sorgumuzu yenilemek
  2. Ortaya çıkan sonuçları ilgili componentimize tekrar yüklemek
  3. Sorgularımızı alışılmış SQL tarzında değil, biraz daha özel bir formda string olarak kurmak

Değerli arkadaşlar;

Bu makalenin faydalı olacağına inanıyorum. Her türlü soru ve sorunlarınız için bana ulaşabilirsiniz.
Bu makaleyi de kaynak göstermek kaydı ile istediğiniz gibi kullanma hakkınız var.

Sevgi ve Java ile…





Netbeans Visual Web Pack ile veritabanı işlemlerinde sıkça karşılaşılan bir sorun hakkında

1 05 2007

Netbeans Visual Web Pack ile Veritabanı işlemlerinde; herhangi bir veritabanını kullanmak için malum olduğu üzere önce veritabanı bağlantısı Runtime penceresi altından kurulup istenen tablo sürükle-bırak yöntemi ile sayfa içine çekilir.
Daha sonra istenen bir form elemanına sağ tıklanıp “Bind to Data” diyilerek veriler bu form elemanına bindirilir.
Bu yöntemi tutoriallerde uzun uzadıya anlatırlar. Ancak hep es geçilen önemli bir sorun vardır.
MySQL veritabanı bağlantısı kurulurken bu işlemde “Bind to Data” işleminden sonra Netbeans tablo sütün adlarını okuyamaz ve adamı illet eder.
Bu durumdan kurtulmanın yolu şudur:
Netbeansa entegre Tomcat sunucusna ait klasörlere ulaşılıp bunun altındaki “common” klasörü altındaki lib klasörüne MySQL bağdaştırıcsına ait jar dosyası konulur.
Mesela ben MySQL resmi sitesinden indirdiğim: mysql-connector-java-5.0.5-bin.jar dosyasını
C:\Program Files\netbeans-5.5_withJDK1.6.0\enterprise3\apache-tomcat-5.5.17\common\lib

dizinine yerleştirdim. Bunun yanında Netbeans’ta project menüsünden de library altına da aynı jar dosyasını ekledim.
Bu illet de böylece çözülmüş oldu.
Bu sorunun çözümünü esasen Java Üstadım ve kardeşim Bahadır ŞAYLAN yaptı.
(Bu sorunu bu minval üzerine halleylen her kişi üstat ruhuna bir fatiha okuya, gaflet olunmaya:)





Netbeans’ta JSlider(Slider) Kullanımı

21 03 2007


Java programcılığı yaparken son kullanıcı için özellikle hızlı biçimde herhangi bir değer değişikliği yapmak istenildiğinde Slider’ler kullanılır. Resimde örneği görülen JSlider 0 ila 30 arasında saniyede değişecek kare hızını değiştiriyor.

Sizler de Netbeans içinde JSlider kullanarak benzer ve kullanışlı şeyler geliştirebilirsiniz.

JSlider’in Netbeansta kullanımı çok kolaydır.

Aşağıdaki yönergeleri takip ederek resimde görülen JSlider benzeri bir amaca hizmet eden bir obje yaratabilirsiniz.

  1. Öncelikle Netbeans Palette menüsünden Swing alt menüsü içerisinden (jbuton, jtextfield gibi objelerin seçildiği alan) JSlideri seçiyoruz.
  2. Bu obje seçili durumda iken properties menüsünden Max Value ve Min Value yazan yerlere Max Value(en büyük değer) olarak 30 Min Value (En küçük değer olarak) 0 yazıyoruz. Bunun anlamı JSliderimiz her sürüklendiğinde 0 ila 30 arasında değişecek.
  3. Şimdi Netbeans klasiği olarak yine Jslider objesi seçili iken sağ tıklayıp events menüsünden change alt menüsünü oradan da StateChanged tıklayıp JSlider sürüklendiğinde yapılacak işlemi tanımlamaya başlıyoruz.
  4. Aşağıdaki kod 3. maddede anlatılan ve JSliderin sürüklenmesi ile dinamik olarak değerin nasıl alınıp kullanılacağını göstermektedir: ——————-
    public void stateChanged(ChangeEvent e) {    JSlider dinamikdeger= (JSlider)e.getSource();    if (!source.getValueIsAdjusting()) {        int fps = (int)dinamikdeger.getValue();        if (fps == 0) {            if (!frozen) stopAnimation();        } else {            delay = 1000 / fps;            timer.setDelay(delay);            timer.setInitialDelay(delay * 10);            if (frozen) startAnimation();        }    }}
    
    ---------
  5. Yeşil ile yazılan kısımlara dikkat edilecek olursa öncelikle dinamikdeger adlı bir JSlider objesi yaratılıyor. Bunu her seferinde siz de yapacaksınız.
  6. Daha sonra bu deger .getValue() metodu ile alınıyor. Bu metot sonucunda ortaya çıkan Integer değer JSliderin sürüklenip bırakıldığı andaki 0 ile 30 arasındaki (tabi bizim uygulamamız içinde) değerdir.
  7. Bu değer yukarıdaki programda fps adlı değişkene yüklenip program içinde animasyon hızı olarak kullanılıyor.
  8. Max ve Min Value değerleri eksi işaretli de olabili söz gelimi -250 ila +250 arasında da JSlider yapılabilir.

İşte JSlider bu kadar basit ve kullanışlı bir objedir. Bu objeyi kullanırken oluşan problemler için mesajlarınızı bekliyoruz.