JAVA 1.3 Kurulumu,Derleme ve Çalıştırma

JAVA 1.3.0 versiyonunun kurulumunu hem unix hemde windows sistemlerinde nasıl yapıldığına bakalım. JAVA 1.3.0 veya daha gelişmiş versiyonlarını http://java.sun.com adresinden indirebilirsiniz.
· unix/linux kurulumu :
http://java.sun.com adresinden sisteminize uygun olan java versiyonunu seçmeniz gerekmektedir. Solaris ve Linux için değişik java versiyonları bulunmaktadır. Ama kurumları aynıdır. İşte yapılması gerekenler

İndirmiş olduğunuz java kurulum dosyasını , size uygun bir yere açın (örneğin /usr/java ) ,gunzip ve tar komutlarının örneği aşağıdaki gibidir ;

Öncelikle sıkıştırılmış dosyayı açıyoruz ;
bash# gunzip jsdk1.3.0.tar.gz
daha sonra arşivlenmiş dosyanın içeliğini /usr/java dizinine çıkartıyoruz
bash# tar xvf jsdk1.3.0.tar /usr/java


/etc/profile dosyasının içersine bazı eklemeler yapmak gerekmektedir ;Bu dosya /etc/ dizinin altındaki profile dosyası olmayabilir .

unix sistemlerde her kullanıcının kendisiine ait profile dosyaları vardır , bu yapılan işlemler o dosyaların ,içersinede yapabilirsiniz , arasında fark ise , eğer /etc/ dizinin altındaki profile dosyası tüm kullanıcıların görebildiği bir dosyadır , bu dosya üzerinde yapacağınız değişikler tüm kullanıcıları doğrudan etkiliyecektir .
öncelikle PATH değişkenini değiştirmemiz gerekli ve sonradan CLASSPATH değişkenini tanımlamamız gereklidir.JAVA yı “/usr/java” dizinine kurduğunuzu varsayıyorum.
PATH=”/usr/bin:/usr/local/bin:/usr/java/bin:.”
Sadece bold olan yeri (/usr/java/bin) yeni ekledim ; /usr/java/bin içersinde çalıştırılabilir dosyalar bulunmaktatır.Şimdi sıre CLASSPATH de
CLASSPATH=”/usr/java/src.jar:/ usr/java/lib/tools.jar:.”
javada en temel ve en önemli kütüphaneler bu iki jar dosyasının içersinde saklıdır.Daha sonradan da CLASSPATH e eklemeler yapabilirsiniz , şimdilik bu iki önemli dosyayı CLASSPATH ekleyerek işe başlıyalım . JAR dosyalarını ilerleyen bölümlerde göreceğiz ( panik yok !! ). Dikkat ettiyseniz CLASSPATH tanımlarken en sona bir nokta koyduk , bu nokta hayati bir önem taşır. Bu noktanın anlamı , bulunulan dizindeki *.class dosyalarının görülebilmesini sağlamaktadır,böylece java komutunu çalıştırırken saçma hatalar almayız.


Yaptığımız bu değişikliklerin etkili olabilmesi için aşağıdaki komutu yazıp enter tuşuna basmamız yeterli

.bash# ./etc/profile --> en baştaki noktaya dikkat .
Yaptığımız işlemlerin etkili olup olmadağını ögrenmek için , sırasıyla aşağıdaki komutları deniyebilirsiniz
bash# java -version -->
sisteminizde yüklü olan java versiyonunu öğrenmenize yarar

bash# echo PATH -->
PATH değişkeninin hangi değerler taşıdığını söyler.

bash# echo CLASSPATH -->
CLASSPATH değişkeninin hangi değerler taşıdığını söyler.

· Windows : Javanın Windows versiyonu için hazır bir kurulum dosyası bulunur. Bu dosyaya çift click yapmanız işlerin büyük bir bölümünü gerçekleştirecektir ama hala yapmamınız gereken ufak tefek işler bulunmaktadır.
Windows 95-98 için autoexec.bat dosyasında aşağıdaki değişlikleri yapmanız yeterli olucaktır.
(Aşagıdaki PATH ve CLASSPATH değişkenleri benim bilgisayarmdan alintidir)
SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\JDK1.3\BIN;C:\ultraedit;.
SET CLASSPATH=C:\JDK1.3\src.jar;C:\JDK1.3\lib\tools.jar;.
(Not : Tekrar oldu ama olsun çok önemli bir kısım : Dikkat ettiyseniz CLASSPATH tanımlarken en sona bir nokta koyduk , bu nokta hayati bir önem taşır. Bu noktanın anlamı , bulunulan dizindeki *.class dosyalarının görülebilmesini sağlamaktadır,böylece java komutunu çalıştırırken saçma hatalar almayız. )
Windows 2000 için PATH ve CLASSPATH tanımlarını Environment Variables kısmına ulaşarak yapabilirsiniz. Bu kısıma ulaşmak için Control Panel --> System --> Advanced --> Environment Variables yolunu izlemeniz yeterli.
System Variables veya User Variables bölümünde , PATH değişkenini değiştirmeniz ve "new" diyerek yeni bir CLASSPATH değişkeni tanımlamanız gerekmektedir (hiç CLASSPATH değişkeniniz olmadığını var sayıyorum) . PATH ve CLASSPATH değişkenlerini yukarıdaki gibi java ile ilgili parametreleri girerek kurulumu tamamlıyabilirsiniz .
Kurulum ilgili aklınızda daha birçok soru olabilir veya yolunda gitmeyen tanımlar olabilir , bunlar için Java ile beraber gelen kurulum hakkındaki dosyaları okumanızı şiddetle tavsiye ederim.
Derleme ve Çalıştırma :
Elimizde Selam.java (bkz) dosyasını nasıl derliyeceğiz ? Sorunun cevabı aşağıdaki komut satırında
$ javac Selam.java
Artık elimizde Selam.class dosyası var olmuş oldu , şimdi sıra geldi bu dosyayı çalıştırmaya
$ java Selam
Ekrana çıkan yazın :
Selamlar !
Ne yaptığımızı tekrarlarsak, Elimizde bulunan Selam.java kaynak dosyasını javac uygulamasını kullanarak derlenik ve Selam.class dosyamız oluşmuş oldu. Daha sonradan java uygulamasını kullanarak uygulamamızı çalıştırdık. Hepsi bu !!!! .

Nedir bu args[] , ne işe yarar ?

javanın komut satırından nasıl çalıştığını anladıktan sonra komut satırından java uygulamamıza parametere göndermeyi öğrenebiliriz.
işte ufak bir uygulama :
ör-args-1
public class ParametreUygulamasi 
{
    public static void main(String[] args) 
   {
      System.out.println("Merhaba Girdiginiz Parametre = " + args[0]);
    }
}
Daha evveldende belirtildiği gibi Java da diziler sıfır dan başlarlar (diziler ilerleyen bölümlerde detaylı olarak incelenecektir , panik yok !!) . Şimdi ParametreUygula.java kaynak dosyamızı derleyelim .
$ javac ParametreUygulamasi.java
Elimizde ParametreUygulamasi.class dosyamız oluşmuş oldu. Şimdi uygulamamızı çalıştırma zamanı ama farklı bir şekilde :P
$ java ParametreUygulamasi test
Uygulamamızı çalıştırma tarzımız değişmedi burada ki tek fark artık en sona yazdığımız test kelimesini java uygulamasına parametre olarak gönderebilmemiz . İşte programın çıktısı:
Merhaba Girdiginiz Parametre = test
Java uygulamasına birden fazlada parametre gönderebiliriz .
ör-args-2
public class ParametreUygulamasi2 
{
   public static void main(String[] args) 
   {
    System.out.println("Merhaba Girdiginiz ilk Parametre = " + args[0]);
    System.out.println("Merhaba Girdiginiz ikinci Parametre = " + args[1]);
   }
}
Uygulamamızı öncelikle derliyelim :
$ javac ParametreUygulamasi2.java
şimdi çalıştıralım :
$ java ParametreUygulamasi2 Test1 Test2

Ekran çıktısı :
Merhaba Girdiginiz ilk Parametre = Test1
   Merhaba Girdiginiz ikinci Parametre = Test2
Peki Bu uygulamaya hiç dışarıdan parametre girmeseydik ne olurdu ? deneyelim :
$ java ParametreUygulamasi
Sansürsüz şekilde karşılaştığım görüntü :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
at ParametreUygulamasi2.main(ParametreUygulamasi2.java:5)
Hımm , sorun nedir ? sorun şu , Java uygulamamız bizden kesin kez iki adet parametre girmemizi bekliyor. Beklediğini aşağıdaki kısımlarda görebiliyoruz :
gösterim-19
System.out.println("Merhaba Girdiginiz ilk Parametre = " + args[0]);
System.out.println("Merhaba Girdiginiz ikinci Parametre = " + args[1]);
args[0] ve args[1] , ancak biz dışarıdan iki adet parametre girersek bu dizinin ilk iki elemanı bilgi ile dolucaktır eğer dışarıdan parametre girmezsek dizinin birinci ve ikinci elamanları oluşmıyacaktır.Oluşmamış bir dizi elemanlarına ulaşmaya çalıştığımızda ise yukarıdaki hata ile karşılaşırız. Bu özellik diğer programla dillerinde bulunmayan bir özelliktir ve uygulamanın sağlamlığını arttırır .

Javadoc = Yorum ile dökümantasyon oluşturmak

Uygulamalar yazılırken büyük bir oranla dökümantasyon işi ikinci plana itilir veya unutulur hiç yapılmaz . Dökümantasyon kodu yazan kişiler için çok ağır işdir ( Bende bu fikri katılıyorum ). Java dökümanstasyon hazırla işini daha kolay ve sevimli bir hale getirmiştir . Bu özelliğe "JavaDoc" denir . JavaDoc olayının yaptığı iş , kodun içersine yazılmış olan yorum satırlarını alarak bunları HTML formata dönüştürmektir . Fakat yorum satırını yazarken bazı kurallara uymamamız gerekmektedir .
Sözdizimi Kuralları (syntax)
Bizim yazdığımız yorum satırlarının Javadoc tarafından dikkate alınması için
/** ile başlaması ve */ ile bitmesi gerekmektedir. Javadoc mekanızmasını kullanmanın iki etkili yolu vardir birincisi gömülü html (embedded html) , ikincisi ise doc tags .
Doc tag “@” ile başlarlar. sınıfa , metoda ve değişkenlere denk düşen üç adet yorum dökümantasyon tipi vardir.Aşağıdaki şablon örnek bunu açıklamaktadır.
gösterim-20
/** A sınıf yorumu */
public class DocTest {
  /** A değişken yorumu */
  public int i;
  /** A metod yorumu */
   public void isYap() {}
Unutulmaması gereken başka bir nokta ise Javadoc mevcut olarak(default) public ve protected olan üyelerin dökümanını üretir. private ve friendly üyelerin dökümantasyonu yapmaz , bunların sebeblerine ilerleyen konularda deyineceğiz . Eğer private üyelere ait bilgilerinde dökümante edilmesini istiyorsak o zaman komut satırından
$ javadoc a –private ……
ekini vererek bunu başarabiliriz. (daha fazla bilgi için komut satırından javadoc -help diyebilirsiniz)
Gömülü Html (embedded Html)
Javadoc mekanizmasında kendinize has HTML komutları kullanmanız mümkündür.
gösterim-21 :
/**
* <pre>
* System.out.println("Selamlar");
* </pre>
*/
gösterim-22
/**
* Çok güzel <em>hatta</em> liste bile yerleştirebilirsiniz:
* <ol>
* <li> madde bir
* <li> madde iki
* <li> Madde üç
* </ol>
*/
<h1> <hr> gibi etiketlerin (tag) kullanmayın çünkü Javadoc bunları sizin yerinize zaten yerleştirmekte.
Gömülü HTML mantığı sınıf ,değişken ve metodlar tarafından desteklenir.
Doc Tag

Ortak kullanılan yorum ekleri
@see : Başka bir sınıfın , değişkenin veya metodun dökümantasyonunu göstermek için kullanabilirsiniz.
(sınıf, değişken, ve metod) dökümantasyonlarında , @see etiketini (tag) kullanabilirsiniz.Bu etiketin anlamı , “ baska bir sınıf dökümantasyonuna gönderme yapıyorum” veya “başka bir metod dökümantasyonuna gönderme yapıyorum” veya “başka bir değişken dökümantasyonuna gönderme yapıyorum“ demekdir.
gösterim-23
@see classismi
@see classismi#metod-ismi
Javadoc gönderme yaptığınız sınıf/değişken/metod dökümantasyolarının var olup olmadığını kontrol etmez.Bunun sorumluluğu size aittir.
Sınıflara ait JavaDoc etiketleri
Sınıflara ait etiketler arayüzler(arayüzler) içinde kullanilabilir (arayüzleri ilerleyen bölümlerde göreceğiz , panik yok !!).
@version : Versiyon numaraları dökümantasyonlamada hayati bir rol aldığını düşünülecek olursa bu etiketin gerçekten önemli bir etiket olduğu anlaşılır. Version etiketinin görünmesini istiyosanız:
$ javadoc –version
parametresi ile calıştırmamız gerekmektedir . Version etiketini kodumuza yerleştirmek için
gösterim-24
@version versiyon-bilgisi 
@author : Sınıfı yazan yazar hakkında bilgi verir . author etiketi Javadoc tarafından dikkate alınmasını istiyorsanız
$ javadoc –author
parametresini koymanız gerekir. Bir sınıfa ait birden fazla author etikeni yerleştirebilirsiniz. Author etiketini kodumuza yerleştirmek için :
gösterim-25
@author author-bilgisi

@since : Java kodunun belli bir tarihden itibaren geçerli olduğunu belirtmek için kullanılır .
since etiketinikodumuza yerleştirmek için :
gösterim-26
@since 05.03.2001
Değişkenlere ait JavaDoc etiketleri
Değişkenlere ait dökümantosyonlarda sadece gömülü html (embedded html) veya @see etiketi kullanılabilir.

Metodlara ait JavaDoc etiketleri
Metod dökümantasyonunda gömülü html ( embedded html) veya @see etiketini kullanabilirsiniz.Ayrıca aşagıdaki etiketleri kullanabilirsiniz.

@param: Metodun aldığı parametrenin açıklamasını belirtir. param etiketini kodumuza yerleştirmek için :
gösterim-27
@param parametre-ismi açıklaması 
@return: Metodun döndürdüğü değerin açıklamasınıi belirtir. return etiketini kodumuza yerleştirmek için :
gösterim-28
@return aciklama
@throws: İstisnalar (exception) ileryen konularda gösterilecektir. İstisnalar kısa olarak , metodlarda hata oluşursa cağrılan objelerdir. throws etiketini kodumuza yerleştirmek için :
gösterim-29
@throws class-ismi açıklaması 
@deprecated: Önceden yazılmış fakat şimdi o metod yerine yenisi yazılmişsa eski metod deprecated olur.deprecated metodu kullandığınız zaman derleyici tarafından uyarı alırsanız.Deprecated etiketini kodumuza yerleştirmek için :
Dökümantasyon örneği
ör-javadoc-1
 /** Ilk Java Kodumuzun Dokumantasyonu
 * Ekrana Selamlar diyen bir uygulama  
 * @author Altug B. Altintas (upux@yahoo.com)
 * @version 1.0 
 * @since 09.01.2002 
*/
public class SelamDoc {
  /**sayiyi artirmak icin , degiskenler icin bir ornek*/ 
   public int sayac = 0 ;
  /** siniflarda & uygulumalarda giris noktasi olan metod
   * @param args disaradan girilen parameterler dizisi
   * @return donen deger yok   
   * @exception Hic istisna firlatilmiyor  */ 
   public static void main(String[] args) {    
        System.out.println("Selamlar !");
   }
 }
 

Oluşturmuş olduğumuz bu kaynak koduna ait döküman çıkartmak için komut satırına aşağıdaki yazıp enter tuşana basmak yeterli :
$ javadoc -d javadoc SelamDoc.java
Yukarıdaki komut sayesinde HTML dokumanları bulunduğumuz dizinin altındaki javadoc dizininin içinde oluşturulmuş oldu . Javadoc un komutları ile daha fazla bilgiyi
$ javadoc -help
yazarak ulaşabilirsiniz
Sınıf isimleri ve metod isimleri
Sınıf isimleri uzun olursa alt çizgi ile ayrılmamalıdır. Sınıf isimleri fiil cümlesi içermemelidir.
gösterim-30
public class  EnKısaYolBulmaAlgoritması {
   
}
Metodlar fiil cümlesi içermelidirler. ilk kelime küçükharf ile başlamaldır.
gösterim-son
public void   yolBul() {
   
}

Bu bölümde Javayı tanıyıp , Java ile nelerin yapılabileceğini gördük . Obje ile Sınıflar arasındaki farkdan bahsettik , Objelerin ve onlara ait referansların nelerde durduğu gördük . Javanın en önemli özelliklerinde biri çöp toplayıcısıdır bu sayade kodu yazan kişiler daha az risk üstlenir ve daha rahat ederler . Bu özellik diğer dillerde olmayan bir özelliktir fakat bu rahatlığında bir bedeli vardır , bu bedelin ne olduğunu ilerleyen bölümlerde göreceğiz .

Sorular :
1. İlkel tipler ile onlara ait sarmalıyıcı tipler arasında farkları açıklayınız .
2. Geçerlilik alanları ile ilgili birer örnek yapınız ?
3. İki adet yeni sınıf oluşturun , birinci sınıfın ismi : BankaA , digerinin ismi ise BankaB olsun.BankaA sınıfının içersinde ekrana "Selamlar Ben BankaA" basan bir statik olmayan metod yazın ve bu metodu BankaB nin içersinde Çagırın . Uygulama java BankaB diyince çalışssın .
4. örnek 4 ün statik metodlu versiyonunu yazın .( BankaA nın "Selamlar Ben BankaA" basan metodunu static yapın) . BankaA yı , BankaB nin içersinde new() ile oluşturmadan çağırın.
5. Dışarıdan 3 parametre alan bir uygulama yazın .

Yorumlar

Bu blogdaki popüler yayınlar

Soru ve Cevaplarla Kompanzasyon

Aktif Güç Nedir,Reaktif Güç Nedir

Sinusoidal AC dalga şekli, Tepe, ortalama, efektif(rms), değer tanımları...