BeanShell

BeanShell
Paradigması Nesne yönelimli, [betik dili], [JSM dili]
İlk çıkışı 2000
Tasarımcı JCP
Kararlı sürüm 1.3.0
Tip sistemi dinamik
Etkilendikleri Java
Platformu JSM
İşletim sistemi Çapraz platform
Lisans LGPL
Olağan dosya uzantıları .bsh
Web sitesi http://www.beanshell.org/

Java platformu dillerinden olan BeanShell, kendi sözdiziminin yanı sıra Java programlama dili sözdiziminin büyük bir bölümünü desteklemesi nedeniyle, Java programlama dilinin komut kabuğu olarak da görülebilir. BeanShell'in bu özelliği, küçük Java kod parçalarının denenmesinde ve Java platformu için yazılmış sınıf dosyalarının yüklenip, birim sınamalarının yapılmasında, düzenle-derle-çalıştır döngüsünü kısaltması sayesinde, büyük kolaylık sağlar.

Birinci kullanım amacını anlamak için aşağıda verilen kod parçası yardımcı olacaktır. BeanShell yorumlayıcısının başlatılmasının[1] ardından, yorumlayıcının Java programlama dili komutlarını Java derleyicisi kadar sıkı denetlemesini mümkün kılmak amacıyla, yegâne argümanında true geçirilerek setStrictJava komutu kullanılıyor. Takip eden satırda, tıpkı bir Java programında olduğu gibi, f1 ve f2 adlı iki değişken tanımlanıyor. Son iki satırda ise, iki farklı şekilde karşılaştırma yapmak suretiyle, matematikte ayrı addedilen değerlerin float veri türünün kısıtlamaları nedeniyle bellekte aynı biçimde temsil edilebileceği ve bunun sonucunda da Java tarafından aynı addedilebileceği görülüyor.

  $ java bsh.Interpreter
  BeanShell 2.0b4 - by Pat Niemeyer ([email protected])
  bsh % strictJava(true);
  bsh % float f1 = 1.0000000, f2 = 0.99999999;
  bsh % print(f1 > f2);
  false
  bsh % print(f1 == f2);
  true

print komutunun sürekli kullanılıp görüntüyü kirletmesindense, show komutundan yararlanarak işlem sonuçlarının standart çıktıya—değiştirilmediği takdirde ekran—yansıtılması otomatiğe bağlanabilir. Ancak, şu noktaya dikkat edilmelidir: show komutu, bir bayrak değişkenin değerini değilleyerek işini görür. Dolayısıyla, söz konusu komutun yorumlayıcıya çift sayıda verilmesi çıktının yansıtılmasını engelleyecektir.

show komutunun kullanımını aşağıdaki örnekten görülebilir. java.util paketindeki Arrays sınıfını görünür hale getiren import bildirimi[2] ve intDz adlı dizinin 6 elemana sahip olacak şekilde yaratılmasının ardından, dizinin istenildiği gibi oluşturulup oluşturulmadığını görmek için Arrays.toString metodunun kullanılmasına karşın yorumlayıcı hiçbir şey basmadan geri dönüyor. Bunun sebebi, Arrays.toString komutunun işini değerleri ekrana basmak yerine dönüş değerinde döndürerek yapmasında yatıyor. Dolayısıyla, sonucun standart çıktıya basılması isteniyorsa, örnekte olduğu gibi show komutunun kullanılması veya döndürülen sonucun print komutu ile yazılması gerekir.

  bsh % import java.util.Arrays; // Aslında gerekli değil!
  bsh % int[] intDz = new int[]{1, 35, -10, 4, 22, 8};
  bsh % Arrays.toString(intDz);
  bsh % show();
  bsh % Arrays.sort(intDz);
  bsh % Arrays.toString(intDz);
  <[-10, 1, 4, 8, 22, 35]>
  bsh % exit();
  $

Yukarıdaki örnek aynı zamanda BeanShell'in birim sınama amacıyla kullanılmasına örnek oluşturuyor. Buna göre, sınanmak istenen sınıf öncelikle görünür hale getiriliyor ve sınıf tarafından sağlanan metotlar kullanılıyor.

BeanShell'in Java programlama dilinin komut kabuğu olarak kullanılması sırasında kimi özelliklerin Java kaynak kodundaki gibi kullanılamayacağı unutulmamalıdır. Aşağıdaki kod parçasının ilk satırında geçen < ve > karakterlerine yapılan itiraz bu kısıtlamalardan belki de en belirginidir. Soysallık desteğinden yararlanan türleri sınamayı olanaksız hale getiren bu durumun sebebi, BeanShell yorumlayıcısının işini Java kaynak kodunu değil, derleme sırasında tür parametresi bilgisinin silinmesi nedeniyle soysallıkla ilgili hiçbir bilgi içermeyen sınıf dosyasını yükleyerek görmesinde yatar.

  bsh % Vector<Integer> intVec = new Vector<Integer>();
  // Error: Parser Error: Parse error at line 1, column 24. Encountered: =
  bsh % // Error: Parser Error: Parse error at line 1, column 11. Encountered: <
  bsh % // Error: Parser Error: Parse error at line 1, column 9. Encountered: )
  bsh % Vector intVec = new Vector(); // Tamam.
  bsh %

print, setStrictJava ve show dışındaki bazı BeanShell komutları aşağıda verilmiştir. Bu komutlara sağlanan dizin veya dosya adlarının göreceli olması durumunda, söz konusu komut tarafından kullanılacak mutlak konumun göreceli değerin çalışma dizinine bitiştirilmesi ile bulunduğu unutulmamalıdır.

Notlar

  1. BeanShell yorumlayıcısı, kimi ortamlarda bsh komutunun kullanılmasıyla da başlatılabilir.
  2. Aslında java.util paketinin görünür hale getirilmesine gerek yok. Çünkü, BeanShell yorumlayıcısı, başlatılması sırasında java.lang paketine ek olarak şu paketleri de otomatikman görünür hale getirir: java.awt, java.awt.net, java.io, java.net, java.util, javax.swing, javax.swing.event.

Ayrıca bakınız

Dış bağlantılar

This article is issued from Vikipedi - version of the 2/5/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.