25 Ocak 2012 Çarşamba

Java Proje Geliştirme


Javaproje gelistirme.. Anethaber grubunda ozellikle java'ya yeni baslayanlarin takildigi noktalardanbirisi bir java projesinin nasil olusturudugu seklinde. Bu konuda basit birreferans olmasi icin cok basit bir sekilde bir java projesinin nasil baslatilacaginianlatmaya calisacagim.
- Java projelerinizi belli bir dizinde toplayin. Mesela windows icinc:\javaproje gibi. bu konuda kafaniza gore takilabilirsiniz. Linux icin /homealtinda bir dizin acabilirsiniz. Bu ornekte c:\javaproje actigimizi varsayiyorum.
- projemiz icin bir dizin olusturalim. Projenin adi "deneme" olsun.c:\javaproje\deneme olustu. bu dizine "Kok dizini" adini veriyorum.
- Projemizin kaynak kodlarini koymak icin Kok dizini altinda "src"adinda yeni bir dizin olusturalim.
- Deneme icin bir editor acip (jedit ya da gelismis herhangi bir editor,olmazsa notepad) asagidaki basit sinifi olusturalim.

public class BenimSinif
{
    public static void main(String[] args)
    {
        System.out.println("MerhabaDunya");
    }
}


- Bu dosyayi  kaydetmeden once paket adi secimini yapalim. Sinifimizibelirli bir paketin altina koymak proje acisindan onemli cunku bu isimsayesinde sinifimiz dunyadaki ayni isimli diger siniflardan ayrilmis oluyor.paket adi "org.ff.temel" olsun. Temel java denemeleri ile ilgilisiniflari bu paket altinda toplayacagiz. Editorde henuz kaydetmedigimizyukaridaki kodun en basina

package org.ff.temel;


ekleyelim. Kaydetmeden once yapmamiz gereken sey paket ile ayni isimde dizinlerolusturmak. normalde gelismis java IDE'leri (Eclipse , IDEA gibi) bu dizinolusturma islemini otomatik yapiyor, ama biz elle yapalim simdilik. yapacagimizsey "src" dizini altinda /org/ff/temel dizinlerini olusturmak. Artikdosyayi kaydetmeye haziriz. Sinifi  BenimSinif.java   ismi ile/src/org/ff/temel dizini altina kopyaliyoruz. Dikkat, dosya adi sinifi adi ileayni olmalidir.

- sira geldi derlemeye. Derlemeden once derleme sonucunda olusacak"class" dosyalarinin ayri bir yerde yer almasini saglamak icin Kokdizininde "classes" (isterseniz "bin","out" ya dakafaniza gore bir isim secebilirsiniz) adinda bir dizin olusturalim. Dahakonsolda (Windows icin Start->run->cmd) kok dizine gidip asagidaki satiriyazalim.

javac -d classes src\org\ff\temel\*.java


Sistem bu komutun ardindan hic bir sey demeden calisacaktir (java dosyanizdahata olmadigini ve konsodan javac erisiminizin oldugunu varsayiyorum) "-dclasses" ile java derleyicisine olusan derlenmis java dosyalarinin (classuzantili) classes dizini altina yerlestirilmesini, "src\org\ff\temel\*.java"ile src\org\ff\temel dizini altindaki tum java dosyalarinin derlenmesiniistedigimizi soyluyoruz.

simdi kok dizini altindaki /classes dizinine girerseniz otomatik olarakorg/ff/temel dizinlerinin ve BenimSinif.class dosyasinin olustugunugoreceksiniz.
Simdi calistiralim. Gene kok dizine gidin once. daha sonra asagidaki komutuyazip calistirin

java -cp classes org.ff.temel.BenimSinif

Komut satirinda "Merhaba Dunya"  yazdigini goreceksiniz.Yukaridaki komutu aciklayayim "java" java programlarini calistirmakicin kullanilir. "-cp" java'ya "benim siniflarin yerinisoyleyecegim, hazir ol.." demek. "classes" ile benim siniflar"classes" dizini altinda demek. "org.ff.temel.BenimSinif"ise calistirilacak "main" metodunun hangi sinifta oldugunu isaretediyor. paket adini yazmak ve dosya sonuna "class" yazmamakgerekiyor. Eger cevre degiskenleri icinde "CLASSPATH" tanimlanmis isebazi javacilar "-cp classes" yerine "-cp .;classes" yazmayionerir ama ben acikcasi cevre degiskenleri icinde classpath tanimlamaya coksicak bakmiyorum. Bu kisisel bir secim, yani illaki oyle yapacaksiniz diye birsey yok.

Simdi baskasinin yazdigi bir java kutuphaneisnin bu projeye nasil ekleneceginiincelyelim.

Once ufak bir jar bulalim. Jar aslinda class dosyalarinin sIkistirilmis halidir.Gecenlerde gozume ilisen bir proje vardi onu kullanalim. Su adresten "simple-log.jar"dosyasini cekin. Bu kutuphane basit logging yani kayit tutma ihtiyaclari icingelistirilmis mini bir kutuphane. Boyu sadece 17KB. Jar dosyasini Kok dizinialtinda olusturacaginiz "lib" dizini altina koyun. BenimSinif.java'ya bu kutuphaneden bir ekleme yapalim. Yani kod su sekilde.

package org.ff.temel;

import org.grlea.log.SimpleLogger;
import org.grlea.log.DebugLevel;

public class BenimSinif
{
    private static final SimpleLogger log = newSimpleLogger(BenimSinif.class);
    public static void main(String[] args)
    {
       log.setDebugLevel(DebugLevel.L5_DEBUG);
        log.debug("Debugyapiyorum....");
    }
}


Daha sonra src dizini altinda "simplelog.properties" adinda bos(tamamen bos..) bir dosya olusturun ve tekrar konsoldan kok dizine gidip budefa asagidaki sekilde yazip kodu derleyelim.

javac -classpath lib/simple-log.jar -d classes src/org/ff/temel/*.java

Bunun oncekinden farki "-classpath lib/simple-log.jar" eklentisininolmasi. Eger bunu eklemezsek java kod icinde yer alan "importorg.grlea.log.SimpleLogger;"  satirinda sasirir. Cunku SimpleLoggersinifinin nerede oldugunu bilmiyor.. Bunun icin java derleyicisine "bak, lib dzini altindaki simple-log.jar dosyasini aklinda tut,derleyecegim java dosyalari o jar dosyasindaki sIkistirilmis class'larikullaniyor olabilir ona gore" diyoruz. Eger birden fazla jar dosyasiolsaydi bunu "lib/simple-log.jar;lib/kutuphane.jar" seklinde arkaarkaya ulayarak derleyiciye bildirebilirdik. Bu arada illa"-classpath" yazmak gerekiyor bundan once, kisaltilmis hali -cpburada sokmuyor.

Calistirma sirasinda da dikkatli olmamiz gerekiyor, kok dizine gidip asagidakisekilde yaziyoruz:

java -cp classes;lib/simple-log.jar org.ff.temel.BenimSinif

Gordugunuz gibi calistirirken de yazilimimizda kullanilan dis jar kutuphanesinijava'ya soyluyoruz. Cikti asagidaki gibi olabilir:

Wed 22/52/2004 10:52:04.628|   |main|BenimSinif|Debugyapiyorum....

Kayit tutma araclari yazilim gelistirmede onmeli bir yere sahiptir. Bundan cokdaha gelismis (Log4j gibi) araclar kullanilabilir ama bu konunun disinda..Sadece ornegin kucuk olmasi icin simple-log.jar secildi.

Sonucta dizin yapimiz su sekilde olustu:

C:\javaproje\deneme
               |
              src -- org - simplelog.properties
               |      |
               |     ff  
               |      |
               |     org
               |      |
               |     temel - BenimSinif.java
               |     
            classes -- org - simplelog.properties (otomatik olusur)
               |        |
               |       ff (otomatik olusur) 
               |        |
               |       org (otomatik olusur)
               |        |
               |       temel - BenimSinif.class (otomatikolusur)
               |
              lib -- simple-log.jar



Sunu belirteyim ki gelismis IDE'ler ile butun bu islemler cok daha kolayhalledilir. Ve bunu ogrendikten sonra tavsiyen Eclipse, Netbeans ya da IDEAgibi IDE'leri kullanarak ayni projeyi bu defa arayuz kullanarak olusturmayacalisin. Ne kadar fark oldugunu goreceksiniz. Kutuphanelerin eklenmesi,paketlerin olusturulmasi ya da programin calistirilmasi cok daha kolay sekildegerceklestirilebilir.
Bundan sonraki yazida ant ile bu islerin daha kolay nasil yapilabileceginianlatabilirim..

Hiç yorum yok:

Yorum Gönder