7 Kasım 2007 Çarşamba

Java Sanal Makinesi başlangıcı ve Classpath ayarları

**Bu yazı daha önce wordpressteki blogumda idi kapanma hadisesinden sonra yararlı gördüğüm için buraya aldım.

Java, Java Sanal Makinesi (JVM) ve bu makinenin içine alınan kütüphanelerden (bizim kodlarımız ve ana kütüphaneler vs.) oluşur. Java Sanal Makinesi (JVM) java kütüphaneleri 3 adımda bulur ve sanal makine içine alır.

1. Bootstrap classes (başlangıç sınıfları) : bu kütüphaneler Java Sanal Makinesinin ana kütüphaneleridir. Bu tür kütüphaneler bizim en temel olarak kullandığımız sınıfları barındırır (mesela java.lang.Object, java.lang.String vs vs). Genellikle jre_dizini/lib içinde yer alan jarlar bu tür kütüphanelerdir. En temel kütüphane rt.jar’dır. java.lang.Object sınıfı bu kütüphane içinde yer alıyor.
2 . Extension classes (Uzatılmış sınıflar) : bu kütüphaneler bizim 3.parti kütüphane olarak kullandığımız kütüphanelerdir. Genellikle jre_dizini/lib/ext klasörü içinde yer alan jar’lardır.
3. User classes (Kullanıcı sınıfları) : Bu tür kütüphaneler bizim kendi yazdığımız ve java programına yerlerini parametre olarak aktardığımız kütüphanelerdir. Eğer bir java programı yazdıysanız ve bu program 2 jardan oluşuyorsa ve 2 jarın içinde de birbirine ihtiyaç duyan sınıflar var ise bizim java programına bu jar’ların yerlerini başlangıçta parametre olarak belirtmemiz lazım ki java programı bu classları bulabilsin.

Java Sanal Makinesi başlarken İlk olarak ilk 2 adımdaki sınıf yüklemelerini gerçekleştirdikten sonra varsa bizim parametre ile yollarını belirttiğimiz sınıflar yüklenir.

JVM ‘ye kendi kütüphanelerimizin yolunu -classpath parametresi ile belirtiyoruz. Bunu bir örnekle daha iyi anlatabiliriz : /home/tayfun/javaTest klasörü içinde test.jar ve aynı dizinde çalıştırmak istediğim Test.class sınıfı yer alsın. Test.class sınıfı test.jar içindeki sınıflara ihtiyaç duyuyor olsun. Test.class’ı konsoldan çalıştırmak için şu komutu vermeliyiz : java -classpath /home/tayfun/javaTest/test.jar:. Test . Bu şekilde test.jar ve Test.class’ın yollarını JVM’ye belirtmiş oluyoruz ve JVM bu sınıflara ihtiyaç duyduğunda yükleyebilir.

Eğer yazdığınız kodlar bir klasör içinde yer alıyorsa o kodların başlangıç klasörünün yolunu göstermeliyiz. mesela kodlarınız /home/tayfun/javaTest/classlar altında yer alıyor olsun ve o klasörün içinde de com/mytest/… diye giden kodlarınız yer alsın bu durumda java -classpath /home/tayfun/javaTest/classlar:. Test şeklinde ana klasörün yolunu göstermeniz yeterlidir.

Bu classpath karmaşası ile uğraşmamak isterseniz 2.adımdaki yükleme aşamasını kullanabilirsiniz. oluşturduğunuz jarı jre_dizini/lib/ext klasörü içine atın ve çalıştırmak istediğiniz class’ı direkt çalıştırın. bir önceki örnekteki test.jar’ı bu şekilde 2.adımda bakılan klasörün içine atmış olsaydık java -classpath . Test komutunu vermemiz yeterli olurdu.

Daha ayrıntılı bilgi için :
Java.exe parametreleri
Finding Classes

Hiç yorum yok: