Java Türkçe kitaplarında sıklıkla karşılaşılan bir hata vardır. Bean kelimesini fasulye diye tercüme eder çoğu kitap. Fakat bean aslında kahve çekirdeğidir. Hani öğütülünce güzel güzel kokan kahve çekirdeğidir "bean" diye bahsedilen. Bu çekirdekler gereğinde Enterprise Java Beans olur. Gereğinde Netbeans olur.
İşte birbirinden farklı kabuk şekilleri :
import java.io.*;
public class JavaKabuk {
public static void main(String[] args) {
System.out.println("Java Standart Kütüphaneleri ile Basit Kabuk Oluşturma");
try {
BufferedReader okuyucu = new BufferedReader(new InputStreamReader(System.in));
String satir;
while (true) {
System.out.print("kabuk> ");
// Mevcut satır okunuyor.
satir = okuyucu.readLine().trim();
// Okunan metin tekrar uçbirime yazılıyor.
System.out.println(satir);
// Kabuktan çıkmak için "cikis" ifadesini kullanabiliriz
if (satir.equals("cikis")) break;
}
} catch (IOException ex) {
System.out.println("okuma hatası!");
} catch (NullPointerException ex) {
// Ctrl + D gibi çıkış ifadelerini tutmak için
// NullPointerException kullanıyoruz.
}
}
}
Yukarıdaki Standart Java Kütüphanelerini kullanan kabuk kodu, basit bir komut uçbirimi sağlayacaktır. Fakat klavyedeki yön tuşlarımız satır üzerinde imleç görevi görmeyecektir. Gıpta ettiğimiz bash tarzı kabuk yaklaşımı için standart Java kütüphanelerinden daha fazlasına ihtiyacımız bulunmakta. UNIX sistemlerde çalışan çoğu kabuk, GNU Readline kütüphanesini veya BSD EditLine kütüphanesini tercih etmekteler. Bu yoğun ilgiden dolayıdır ki bu kütüphaneler bir çok programlama diline tercüme edilmiştir. Java - Readline kütüphanesi ise Javanın bu hazineden nasiplenmesi olabilirdi..
Fakat işler sanıldığı gibi değildir. Java Readline kütüphanesi Java kadar platformlar arası geçiş esnekliğine sahip değil. Bunun en büyük nedeni ise Readline'ın JNI'den dolayı platform bağımlı kodlara sahip olmasıdır. JNI'i kullanıp ta Macintosh, Windows, Linux üçlemesini destekleyen bir çok Java projesi mevcutken Java - Readline, yalnızca Linux ve Macintosh'u desteklemektedir. Hal böyle olunca da Jython gibi büyük bir projede de kullanılan bu kütüphane, daha sonraları eklenti olarak kullanılmaya başlanmıştır. Java Readline, Groovy gibi yeni JVM betik dillerinde de kullanım bulamamıştır.
Şimdiler ise daha işlevsel bir yaklaşıma sahip Platform bağımlı (Native) öğeler içermeyen JLine daha geniş kullanım buluyor. JLine sayesinde daha esnek kabuklar yapabiliriz. Basit bir JLine Kabuğu şu şekilde olabilir:
import jline.*;
import java.io.*;
public class JLineKabuk {
public static void main(String[] args) {
System.out.println("basit kabuk kullanımı");
try {
ConsoleReader okuyucu = new ConsoleReader();
String satir;
while ((satir = okuyucu.readLine("kabuk> ")) != null) {
System.out.println(satir);
}
} catch (IOException ex) {
System.out.println("okuma hatası!");
}
}
}
JLine ile artık rahatlıkla girdi yaparken ok tuşlarını, Home, Edit gibi yardımcı tuşları kullanabiliriz. Dahası kod tamamlama bile yapabiliriz. Aşağıdaki kod sayesinde yazdığımız harflerin akabinde sekme (tab) tuşu kullandığımızda "ali", "ayşe", "veli" önermeleri yapılacaktır.
import jline.*;
import java.io.*;
import java.util.*;
public class JLineKabuk2 {
public static void main(String[] args) {
System.out.println("basit kabuk kullanımı");
try {
ConsoleReader okuyucu = new ConsoleReader();
List tamamlayicilar = new LinkedList();
tamamlayicilar.add(
new SimpleCompletor(
new String[] {"ali", "veli", "ayse"}
)
);
okuyucu.addCompletor(new ArgumentCompletor(tamamlayicilar));
String satir;
while ((satir = okuyucu.Readline("kabuk> ")) != null) {
System.out.println(satir);
}
} catch (IOException ex) {
System.out.println("okuma hatası!");
}
}
}
Varın siz karar verin: "kahve çekirdeğinin kabuğu oluyor mu?" diye.
|