Java Paketleri

Java kütüphanesinde çok sayıda metot ve değişken tanımları vardır. Metotların ve değişkenlerin her biri  bir sınıf içindedir. Metotları ve değişkenleri içeren sınıfların sayıları da çok fazladır. Erişimi kolaylaştırmak için sınıflar gruplara ayrılmışlardır. Birbirleriyle ya da aynı konuyla ilişkili olan sınıflar bir grup içinde toplanır. Bu grupların her birine bir paket (package) diyoruz. Başka bir deyişle, bir paket birbirleriyle ilişkili sınıfları içeren bir ambardır (dizin). Örneğin giriş/çıkış ile ilgili olan bütün sınıflar java.io paketi içindedir. Bir pakette aynı adı taşıyan iki sınıf olamaz. Ama farklı paketler içinde aynı adı taşıyan sınıflar olabilir. Paket adları sınıfların karışmasını önler.

İleride programlarımızın sayısı arttıkça, sınıf adlarının birbirleriyle karışmasını önlemek için birbirleriyle ilgili sınıfları aynı pakete koymayı öğreneceksiniz.

Bütün Java paketlerini

http://www.oracle.com/technetwork/java/javase/documentation/api-jsp-136079.html

web adresinden görebilirsiniz. Burada çok kullanacağımız birkaç tanesini kısaca açıklamakla yetineceğiz.

java.lang  Paketi

Java sınıf paketleri arasında en önemlilerinden birisidir. import deyimi yazmaya gerek kalmaksızın, her java programına kendiliğinden (automatic) girer. Java dilinin özünü oluşturan sınıfları içerir.

java.io  Paketi

Giriş-çıkış işlemlerini yapan sınıfları içerir.

Bir program koşarken, sistemin dış çevre birimlerinden veri alması ya da onlara veri göndermesi gerekebilir. Kullanıcının bilgisayarla etkileşim içinde olabilmesi için, onunla iletişim kurabilmelidir. Bunun tek yolu, bilgisayara girdi (input) göndermek ve ondan çıktı (output) almaktır. Hemen her dil bu iş için çeşitli yöntemlere sahiptir. Giriş/çıkış birimleri dediğimiz birimler bu işe yarar. Örneğin, klavye, dosya, uzaktaki bilgisayar, ağ gibi araçlar bilgisayara girdi yapabilirler. Ekran, yazıcı, dosya, ses-aygıtları, ağ gibi araçlarla bilgisayardan çıktı alınabilir. Her gün sayısı ve niteliği değişen bu giriş-çıkış aygıtlarını kullanmakta Java çok hünerlidir. Onları ilerideki derslerde yeri geldikçe ele alacağız. Ama ilk derslerde çok kullanacağımız bazı  kavramları tanımamız gerekiyor.

Bu paketin içerdiği iki önemli sınıf

InputStream

OutputStream

sınıflarıdır. Stream (akım) sözcüğü sisteme giren ya da sistemdan çıkan karakter dizileridir. Bütün veriler birer karakter dizisi olarak sisteme girer veya sistemden çıkarlar. InputStream sınıfı girişleri, OutputStream sınıfı çıkışları düzenler.  

Her türlü giriş-çıkış işlemlerinin yapılabilmesi için, her iki sınıfın alt sınıfları ve onların çok sayıda metotları tanımlıdır. Bazılarını bu ders boyunca kullanacağız. Tam listeyi görmek için

http://www.oracle.com/technetwork/java/javase/documentation/api-jsp-136079.html

web adresindeki API’lere bakınız. 

OutputStream Sınıfının alt sınıfları

InputStream Sınıfının alt sınıfları

 

System Sınıfı

java.lang
Class System

java.lang.Object
  extended by java.lang.System

 

standard output,

standard error,

standard input

akımlarını yönetir. Başka bir deyişle, standart giriş-çıkış işlemlerini yapan ve hata iletilerini veren bir sınıftır. Genel olarak, sistemin dışarıyla olan ilişkilerini yönetir. Çevre değişkenlerine erişir, veri ve dosya girdi-çıktısından sorumludur. Bunları yapabilmesi için, java.io paketi içindeki InputStream ve OutputStream sınıflarını kullanır (implement).

G/Ç  Akım yolları (I/O streams)

Bir java uygulaması başladığında, Sytem sınıfı kendiliğinden şu üç giriş/çıkış akım-yolunu açar:

in

out

error

Kullanacağımız Windows işletim sisteminde standart giriş yolu klavye, standart çıkış yolu ekrandır. İstenirse bunlar değiştirilebilir. Örneğin klavyeden giriş yerine bir dosyadan giriş yapılabilir. Benzer olarak, ekran yerine  yazıcıya veya bir dosyaya çıkış yapılabilir.  Ama biz bu ders boyunca standart giriş birimi olarak klavyeyi, standart çıkış birimi olarak ekranı kullanacağız. Giriş in, çıkış out ve hata error  akım-yollarıyla temsil edilir. Bunlar System sınıfında girdi, çıktı ve hata 'yı tutan değişkenlerdir. Bu değişkenlere nesne yönelimli programlama dillerinde, değişken demek yerine, gendeğer (property) denilir. Bazı kaynaklar “özellik” sözcüğünü kullanır. Bu kitapta gendeğer sözcüğünü tercih edeceğiz.

Yukarıdaki üç gendeğerin değerlerinin nasıl oluştuğunun ayrıntısına girmeden, konuyu basitleştirmek için şunu söyleyebiliriz. Bir java uygulaması başlayınca, kullanıcının klavye ile yazdıkları in akım-yoluna atanan değerdir. Sistem bu girdiyi algılar. Sistemin çıktıları out akım-yoluna atanan değerdir. O değer ekrana yazılır ve kullanıcıya iletilmiş olur. Bu işlemler sırasında bir hata oluşursa, o hata error akım-yoluna atanır ve  otomatik olarak ekrana yazılır.

Girdi/Çıktı için Metotlar

Java dilinde girdi/çıktı işlemleri için InputStream ve OutputStream sınıflarının alt sınıflarına ait olan aşağıdaki  metotları (fonksiyon)  çok kullanacağız. O nedenle, onlar hakkında basit temel bilgileri edinmemiz gerekiyor.

Nesne Yönelimli Programlama dillerinde, fonksiyon kavramı matematikteki fonksiyon kavramından biraz daha geneldir. O nedenle, fonksiyon terimi yerine metot terimi kullanılır.

print()

java.io -> OutputStream -> FilterOutputStream -> PrintStream alt sınıfı içinde bir metottur (fonksiyon). Standart çıkışa (ekran) çıktı gönderir. Sözdizimi şöyledir:

System.out.print(parametre);

println()

PrintStream alt sınıfı içinde bir metottur (fonksiyon). print() metodu ile aynı işi yapar, ancak çıktıyı gönderdikten sonra ayrıca satırbaşı yapar (\r\n). Sözdizimi:

System.out.println(parametre);

printf()

PrintStream alt sınıfı içinde bir metottur (fonksiyon). Konsola biçemli (formatlı) çıktı gönderir.

System.out.printf(parametre);

Write()

PrintStream alt sınıfı içinde bir metottur (fonksiyon). Standart çıkışa (ekran) çıktı gönderir. Sözdizimi:

System.out.Write(parametre);

Bu metot parametre olarak Java dilindeki her veri tipini kabul eder.

Read()

InputStream sınıfı içinde bir metottur . Kalıtım özeliği nedeniyle, bütn alt sınıfları bu metoda sahiptir. Byte (karakter) ya da byte arraylaerini farklı giriş birimlerinden okur. İleride bu metodu daha ayrıntılı inceleyeceğiz.

Parametre

public int f(int x; double y)

{

     int a;

     double b;

    

}

Yukarıdaki f metodunda () parantezi içindeki değişkenlere parametre {} gövdesi içindekilere yerel değişken denilir. Bunun nedeni, fonksiyonun bağlı olduğu değişkenleri öteki yerel değişkenlerden ayırmak içindir. Matematikte f(x,y) fonksiyonu için x, y değişkenleri ne anlam taşıyorsa, bilgisayar fonksiyonları için parametreler aynı anlamı taşır.

java.text

Metinleri işleyen sınıflardan oluşur. Farklı dil ve kültürlere göre tarih, sayı ve iletilerin yazılmasını sağlar.

java.math

Duyarlı matematiksel işlemler yapmak için gerekli  sınıfları içerir. Matematikte kullanılan standart fonksiyonların hepsini bu sınıfta bulabilirsiniz.

java.awt

Kullanıcı arayüzü (UI-user interface) tasarımı ve olay-yönlendirici (event-handler) için gerekli standart öğeleri içerir.

javax

Java dilinin genişlemesini sağlayan sınıfları içerir.

java.applet

Java appletleri yaratmak için gerekli sınıfları içerir.

java.beans

Java bean’leri yaratmak için gerekli sınıfları içerir.

java.sql, javax.sql

JDBC API yardımıyla veri tabanlarına erişimini ve veri işlemeyi sağlayan sınıfları içerirler.

java.rmi

Java bean’leri yaratmak için gerekli sınıfları içerir.

java.net

Ağ (network) uygulamaları yaratmak için gerekli sınıfları içerir.

java.security

Kriptografik güvenlik için gerekli sınıfları içerir.