Java kurulum ve yazilim gelistirme
Bu yazi dizisi ile sifirdan bir java yazilim gelistirme ortami kurup temel modern bir java projesinin nasil olusturulacagini anlatmaya calisacagim.
Java SDK kurulumu
Java kaynak kodunu derlemek ve java dil kutuphanelerinden yararlanmak icin Java SDK (Software Development Kit ) ya ihtiyaciniz vardir. Java SDK sadece Sun degil farkli uretici sirketler tarafindan gelistirilmektedir. Bilinen Java SDK'lari arasinda Sun IBM ve Linux'a ozel BlackDown sayilabilir. Bu yazida java'nin ana gelistiricisi olan Sun'in yazilim gelistirme kiti goz onune alinacaktir. Bunun icin gerekli adimlar sunlardir. Isletim sistemi olarak is yerinde kullandigim Windows XP Professionel'i sectim ama ilerde Linux altinda ne gibi farklar olabilecegini de yazacagim.
1- Java SDK'nin indirilmesi. Kisaca: www.java.sun.com adresinden yaklasik 50MB'lik J2SE SDK'yi indirin.
Uzun Aciklama: Java'nin kaynak sitesi olan http://www.java.sun.com (veya yeni site adiyla http://developers.sun.com) Sayfanin sag tarafindaki "Related Links" yazili kutudan J2SE SDK 1.4.2 baglantisina tiklayin. (ya da dogrudan http://java.sun.com/j2se/1.4.2/download.html baglantisina da gidebilirsiniz ama ileriki surumler icin bu baglanti degisecektir.) Gelen sayfada cesitli secenekler mevcut. Sun isteyenlere SDK'yi NetBeans asi verilen grafik arayuzlu bir Java gelistirme yazilimi ile birlikte sunuyor ama biz simdilik saf SDK istedigimizden alt bolumdeki "Download J2SE v 1.4.2_03" baslikli bolumdeki "32-bit/64-bit for Windows/Linux/Solaris SPARC 32-bit for Solaris x86 " satirindaki "SDK" baglantisini seciyoruz. Gelen yazilim anlasmasindan " accept kabul " secenegini secerek asil indirme sayfasina erisiyoruz. Burada cesitli platformlar icin SDK'lar mevcut (Windows Solaris Linux Linux itanium gibi) 48MB'lik Windows off-line installation secenegini secerek indirmeye baslayabiliriz. Sayfada Mac OSX icin bir baglanti yok bunu http://www.apple.com/java/ adresinden indirebilirsiniz. Linux'a ozel tamamen ayri gelistirilen Blackdown ise http://blackdown.org/ adresinden indirilebilir. BlackDown su an icin AMD 64bit destegi veren tek JavaSDK'si ve oldukca hizli olmasi ile taniniyor.
Guncelleme: Yeni JavaSDK 1.5'in bu bahar cikmasi bekleniyor. Pek cok yeniligi beraberinde getirecek olan 1.5 surumu AMD 64 sistemlere 64 bitdestegi de verecek. (32 bit Java destegi zaten var)
2- Java SDK'nin kurulumu. Kisaca: Yazilimi sihirbaz'i izleyerek kurun.
Indirme islemi tamamlandiktan sonra kurma islemine exe dosyayi cift tiklayarak baslayabiliriz. Kurulum oldukca kolay adim adim ilerlemeniz yeterli. Yazilim eger her seyi "next" diyerek ilerlerseniz kendisini C:\j2sdk1.4.2_03\ dizinine kuruyor. isterseniz kurulum sirasinda ismi biraz kisaltip baska sabit diske de kurabilirsiniz. (kurulduktan sonra klasor isimlerini degistirmeyin!)
Asagidaki bilesenler sisteme kurulur.
- Java yazilim gelistirme araclari derleyici kutuphaneler vs.
- Sadece SDK'nin kullanimina acik Java sanal makinesi JRE. Bu .SDK klasoru\jre altina kuruluyor.
- Cesitli demo uygulamalar
- Muhtelif java kutuphanelerinin kaynak kodu
- Genel kullanima acik Java sanal makinesi. Bu C:\Program Files\Java\j2re1.4.2_03 klasorune kuruluyor. Bu JRE hem java yazilimlari hem de icindeki plug-inler ile birlikte internet tarayicilari tarafindan kullaniliyor.
Ilk java yaziliminin calistirilmasi
1- Kodun yazilmasi. Kisaca: herhangi bir editore asagidaki kodu kopyalayin.
Yazilimi yazmak icin editor olarak baslangicta notepad bedava kucuk ve guclu Crimson Edit (http://www.crimsoneditor.com/) alismasi zor olan ama cok guclu konsol editoru vim (www.vim.org) ticari UltraEdit ya da benim sahsi favorim java ile gelistirilmis son derece guclu ama biraz iyi bilgisayar isteyen Jedit'i (www.jedit.org) kullanabilirsiniz. Normalde hazir Gorsel java gelistirme yazilimlarinin kendi guclu editorleri de var ve klasik genel amacli editorlerin sunmadigi pek cok yazilim kolayligi da sagliyorlar ama biz simdilik onlarla ilgilenmeyecegiz.
Ornek kod:
public class TestSinifi {
public static void main(String[] args) {
System.out.println("Merhaba Dunya naber java?");
}
}
2- Kodun saklanmasi. Kisaca: kodu "TestSinifi.java" olarak belirli bir yere kaydedin.
Java kodlari .java uzantili dosyalarda saklanir. Dosyanin adinin public sinif adi ile ayni olmasi sarttir. Editore yazmis oldugunuz kodu adi ve uzantisi "TestSinif.java" olacak sekilde ornegin C:\jproje\test\ klasoru altina kopyalayin. Bu klasor java projelerimizin tutuldugu yer olacak. ilk projemiz test projesi.
3- Kod yazma kurali: Kisaca: Standart java kod yazma kuralini takip edin
Java kodunu yazarken gereken temel iki tane java kodlama kuralini soyleyeyim. Bu kurallar mecburi degildir ama mevcut yazilimlarin cogu bu notasyonu kullandigindan kullanilmasi siddetle tavsiye edilir.
- Sinif isimlerinde her kelimenin bas harfi buyuk kelimeler bitisik yazilir ( Ornek: TestSinifi BenimSinifim Mesaj StringToXml gibi.)
- Sinif uye degisken isimleri ilk kelimenin bas harfi kucuk diger kelimelerin bas harfi buyuk ve bitisik olacak sekilde yazilir. Bu yazilim sekline sanirim "deve tipi" ismi verilmis ( benBirKucukDeveyim ilkDeger model enKucuk gibi. )
Ayrintili kod yazma kurallarina suradan erisebilirsiniz. Ama kendinizi bazi konularda cok zorlamayin. ornegin {} isaretlerinin baslangic ve bitisi tab kullanimi ve satir baslarindaki bosluk sayisi kavramlari yazilimcidan yazilimciya degisebilir. Sahsen ben hic tab kullanmadan "{" isaretini satir sonuna koyarak ve uc bosluk iceri yazarak kodlamayi tercih ediyorum ama ustam "{" isaretinin bir satir asagi koyulmasini istiyor o yuzden ona uyacagim. (bazi baska usta yazilimcilarin onerisi de bu yondehttp://www.javaranch.com/style.jsp) Isin iyi yani guclu editorlerin bir kismi otomatik yazim kurali destegi veriyor. yani siz yazim kuralini seciyorsunuz tum kod bir anda duzenleniyor . O nedenle bu konu o kadar da buyutulecek bir sey degil sadece yukaridaki iki kurala sadik kalmak uzere herkesin uzlastigi ortak bir stilde anlasin yeter.
4- Kodun derlenmesi. Kisaca: Konsoldan "javac TestSinifi.java" yazarak kodu derleyin
Java kodu'nun calisabilmesi icin kodun derlenmesi gerekir. Derleme islemi kurmus oldugumuz SDK icerisindeki javac yazilimi ile gerceklestirilir. Bildiginiz gibi bu yazida hazir java yazilim araclari (Ayrintili liste icin suraya bakin) ile degil konsoldan calisacagiz. Windows'ta konsolu calistirmak icin Start menusunden Run secenegini secin bosluga cmd yazip Enter tusuna basin. Eski dos gunlerini andiran siyah bir ekran gelecek. (Not: Linux'un konsolu Windows'tan cok daha kolay kullanisli ve gucludur. ama idare edecegiz ). Onerim yazi tipini ve boyunu kucultup ekrani ve buffer boyunu biraz buyutun. Daha sonra java kodumuzu kaydettigimiz C:\jproje\test\ klasorune gidin (burada bir ipucuWindows XP'de bir klasor ya da dosyanin adini hatirlayamazsaniz herhangi bir harf ya da hic bir sey yazmadan tab tusuna basarak var olan klasor ve dosyalarin otomatik olarak gelmesini saglayabilirsiniz. unix'tan gelme bir sey.) ve "javac TestSinifi.java" yazarak enter'e basin. Eger hic bir sey soylemeden yeni komut satirina gecerse derleme basarilmis demektir. "dir" komutu ile dosyalari incelediginizde ayni klasorde "TestSinifi.class" dosyasinin olustugunu goreceksiniz. Eger sistem asagidaki gibi bir mesaj verirse bu yazilimin kaynak kodunda hata var demektir. derleyici hatanin yerini gosterir. Ornegin asagidaki mesaj koddaki 4. satirdaki System.out. satirinin sonundaki ");" isaretinin silinmesi ile olusur.
TestSinifi.java:4: ')' expected
}
^
1 error
Eger sistem
'javac' is not recognized as an internal or external commandoperable program or batch file.
seklinde bir mesaj verirse bu durumda javac yazilimina bulundugumuz klasorden erisilemedigini anlariz. Bu hatayi ortadan kaldirmak icin iki yol onerilebilir. Birincisi ve en garantili yol javac.exe yaziliminin bulundugu SDK klasorundeki "\bin" alt klasorunu PATH bilgisine eklemektir. Windows XP'de her acilista bu bilginin eklenmesi icin asagidaki yontem izlenir.
- Masaustundeki "My computer" ikonuna sag tiklayin ve properties secin.
- Advanced tabini secin oradan da alt taraftaki Environment Variables dugmesine tiklayin.
- Cikan ekrnin alt bolumundeki System Variables listesinden "path" degerini bulun. Daha sonra "edit" dugmesine basin.
- Satirin sonuna ";c:\jdk1.4.2_03\bin" bilgisini ekleyin (noktali virgulu unutmadan).
- Tamam ya da apply ile o pencereyi kapatin.
Simdi tekrar ayni komutu vererek calistirmayi deneyin. bazen komut window'u yeni path bilgisini algilayamayabiliyor komut ekranini kapatip acmaniz gerekebilir.
Ikinci yol ise komut satirindan sunu yazmaktir:
path = %PATH%;c:\jdk1.4.2_03\bin
Bu sekilde varolan path bilgisine JAva SDK dizini de eklenmis olur. Ancak bunu her sistem acilisinda tekrar etmeniz gerekebilir. Bazen bu komutu bir bat dosyasina yazmak isinizi kolaylastirabilir (ikinci yazida bu konuya aciklik getirecegim umarim)
Eger sadece javac yazip enter tusuna basarsaniz java derleme seceneklerine iliskin bilgiler goruntulenir. Bunlar arasinda ilginc olanlar
eger javac -d C:\jproje\test\out TestSinifi.java
yazarsaniz olusan class dosyasi test\out klasoru icine atilir. Genellikle class dosyalarinin \out adinda ayri bir dizinde saklanmasi saglanir.
Ayrica java derleyicisinin sahnenin gerisinde neler cevirdigini merak ediyorsaniz javac -verbose TestSinifi.java yazabilirsiniz. Asagidaki gibi ilginc seyler gorebilirsiniz bu sekilde. (benim kullandigim sistemde JSDK'nin yeri farkli yerde)
C:\jproje\test>javac -verbose TestSinifi.java
[parsing started TestSinifi.java]
[parsing completed 70ms]
[loading c:\usr\jdk1.4.2\jre\lib\rt.jar(java/lang/Object.class)]
[loading c:\usr\jdk1.4.2\jre\lib\rt.jar(java/lang/String.class)]
[checking TestSinifi]
[loading c:\usr\jdk1.4.2\jre\lib\rt.jar(java/lang/System.class)]
[loading c:\usr\jdk1.4.2\jre\lib\rt.jar(java/io/PrintStream.class)]
[loading c:\usr\jdk1.4.2\jre\lib\rt.jar(java/io/FilterOutputStream.class)]
[loading c:\usr\jdk1.4.2\jre\lib\rt.jar(java/io/OutputStream.class)]
[wrote TestSinifi.class]
[total 521ms]
Peki birden fazla dosya derlemek istersek ne yapacagiz? Bu durumda javac TestSinifi.java Blah.java Hello.java seklinde ardi ardina java dosyalarini ekleyebilirsiniz. ya da o anki dizindeki tum java dosyalarini derlemek icin javac *.java yazilabilir. Eger alt dizinlerde yer alan java dosyalarini da derlemek istiyorsaniz kaynak dosyalarin kokunu derleyiciye soylemeniz gerekir. javac -sourcepath C:\jproje\test *.java
5- Derlenen kodun calistirilmasi: Kisaca: "java -cp C:\jproje\test TestSinifi.class" ile kodu calistirin.
Derleme sonrasinda gene konsoldan "java -classpath C:\jproje\test TestSinifi" yazin. Eger bir sorun yoksa sistem calisacaktir ve ekrana "Merhaba Dunya naber java?" yazisi cikacaktir. classpath bilgisi ile java'ya class dosyalarinin yani siniflarin yerini gostermis oluyoru. Bu konuda ikinci yazida aciklik getirmeye calisacaim. Ilk calistirma sirasinda bir iki saniyelik bir gecikme olabilir bunun nedeni bellekte bir Java sanal makinesinin olusturulmasidir. Eger asagidaki mesaj cikarsa tipki derleme asamasinda oldugu gibi sistem "java" yazilimini bulamiyor demektir.
'java' is not recognized as an internal or external commandoperable program or batch file.
Bunun icin en guzeli su islemi gerceklestirin: Gene onceki asamadaki sistem degiskenleri ekraninda System variables icinde "JAVA_HOME" degiskeni varmi diye bakin eger yoksa onu da ekleyin. Bunun icin new dugmesine basip Variable name bolumune "JAVA_HOME" Variable value bolumune ise "C:\Program Files\Java\j2re1.4.2_03" bilgisini girip tamam tusuna baisn. (ya da tam olarak JRE hangi klasore kurulmussa ona gore hata yapma olasiligi her zaman var iyice kontrol edin.). Ayrica path icerisine ";%JAVA_HOME%\bin" (tirnak isaretleri haric tabi) ekleyin. Artik yazilimin calismasi gerekir.
Eger derleyip calistirmaya calistiginiz java sinifinda public static void main(String[] args) {} metodu yoksa asagidaki hata mesaji ile karsilasirsiniz.
Exception in thread "main" java.lang.NoSuchMethodError: main
Eger sistem icinde main metodunu barindiran soz konusu sinifi bulamazsa asagidaki hatayi verir. Bu hatayi olusturmak icin "java -cp C:\jproje TestSinifi" yazin. java belirtilen dizin icinde TestSinifi.class dosyasini bulamadigindan asagidaki hatayi verecektir.
Exception in thread "main" java.lang.NoClassDefFoundError: TestSinifi
Burada iki not bu ornek icin -classpath C:\jproje\tmp yazmaya gerek olmayabilirdi. .class dosyasinin oldugu yerde dogrudan java TestSinifi yazmak yazilimi calistirmak icin yeterli olabilirdi. Ancak aliskanlik kazanmak icin classpath bilgisini her zaman yazmayi tercih edin. Ayrica -classpath kelimesi yerine -cp yazmak yeterli olur.
6- Neden main metodu? Kisaca: main java'ya yazilima baslangic noktasi gosterir.
main metodu ozeldir. derlenen java siniflarini calistirabilmek icin java'nin bir baslangic noktasina ihtiyaci vardir. main metodu bu baslangic noktasini tamsil eder. main metodun baslangic noktasi ozelligine sahip olabilmesi icin public static void main(String[] args) yapisinda olmasi gerekir. args kelimesi bile "args" olarak kullanilmalidir. Her java sinifi icerisinde bu sekilde main metodu barindirabilir. Bu su anlama gelir bir java yaziliminin farkli baslangic noktalari olabilir.
Alıntı