İçeriğe atla

BeanShell

BeanShell
ParadigmasıNesne yönelimli, betik dili, JSM dili
İlk çıkışı2000
TasarımcıJCP
Kararlı sürüm2.1.1 (2 Aralık 2022)
EtkilendikleriJava
PlatformuJSM
İşletim sistemiÇapraz platform
LisansLGPL
Olağan dosya uzantıları.bsh
Web sitesihttp://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 (pat@pat.net)
  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 17 Mart 2011 tarihinde Wayback Machine sitesinde arşivlendi. 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.

  • cat(dosya adı): Argümanda sağlanan dosyanın içeriğini ekrana basar.
  • cd(yeni dizinin adı): Çalışma dizinini argümanda sağlanan değer olacak şekilde değiştirir.
  • dir(dizin adı), dir(): Argümansız kullanılması durumunda çalışma dizinini listeler. Aksi takdirde argümanda sağlanan dizinin içeriğini listeler.
  • mv(dosya adı, yeni konum): İlk argümanda sağlanan dosyayı ikinci argümanda sağlanan konuma taşır.
  • pwd(): O anki çalışma dizinini döndürür.
  • rm(dosya adı): Argümanda sağlanan addaki dosyayı siler.

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

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

<span class="mw-page-title-main">JavaScript</span> programlama dili

JavaScript, HTML ve CSS ile birlikte World Wide Web'in temel teknolojilerinden biri olan programlama dilidir. Web sitelerinin %97'sinden fazlası, web sayfası hareketleri için istemci tarafında JavaScript kullanırlar ve kullanılan kodlar genellikle üçüncü taraf kitaplıkları içerir. Tüm büyük web tarayıcılarında, kaynak kodunu kullanıcıların cihazlarında yürütebilmek için özel bir JavaScript motoru bulunur.

<span class="mw-page-title-main">C++</span> bir programlama dili

C++, Bjarne Stroustrup tarafından 1979 yılında Bell Laboratuvarları'nda geliştirilmeye başlanmış, C'yi kapsayan ve çok paradigmalı, yaygın olarak kullanılan, genel amaçlı bir programlama dilidir.

<span class="mw-page-title-main">Java</span> açık kaynak kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen bir programlama dili

Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kaynak kodlu, nesneye yönelik, platform bağımsız, yüksek verimli, çok işlevli, yüksek seviye, hem yorumlanan hem de derlenen bir dildir.

<span class="mw-page-title-main">PHP</span> bir programlama dili

PHP: Hypertext Preprocessor, internet için üretilmiş, sunucu taraflı, çok geniş kullanımlı, genel amaçlı, içerisine HTML gömülebilen betik ve programlama dilidir. İlk kez 1995 yılında Rasmus Lerdorf tarafından yaratılan PHP'nin geliştirilmesi bugün PHP topluluğu tarafından sürdürülmektedir. Ocak 2013 itibarıyla 244 milyondan fazla web sitesi PHP ile çalışırken 2.1 milyon web sunucusunda PHP kurulumu bulunmaktadır.

Bilgisayar programlamada dinamik iletim, altyordam çağrılarının ilişkin altyordam başlangıç adresine dinamik olarak bağlanmasıdır. Bir diğer deyişle, dinamik iletim program metnindeki bir çağrı ile işletilen altyordamın programın çalışması sırasında birbirine bağlanması durumudur. Geri çağrı ve çokbiçimliliğin realize edilmesinde kullanılan bu bağlama yöntemi, yordamsal programlama dillerinde altyordam göstericileriyle gerçekleştirilirken, nesne yönelimli dillerde kalıtlama ve gerçekleştirme ilişkilerinin kullanılmasıyla otomatikman sağlanır. Altyordamların birinci sınıf dil öğesi olarak ele alındığı fonksiyonel programlama dillerinde ise, aynı işlevsellik altyordamların argüman olarak geçirilmesi ile sağlanabilir.

Nesne yönelimli programlama dillerinde arayüz, değişik sınıflardan nesnelerin kategorize edilmesini sağlayan bir soyut tür çeşitidir. Tanımlanmakta olan kategorinin birbirleriyle alakasız sınıfları ortak bir çatı altında toplaması nedeniyle, arayüz tanımları, soyut sınıfların aksine, listeledikleri iletilerin gerçekleştirim ayrıntısı olan herhangi bir bilgi içeremezler. Dolayısıyla, bir arayüz tanımı iletilere karşılık gelen bir altyordam gövdesi veya altalan tanımı içeremez. Bir başka açıdan bakarsak, arayüz tanımında yer alan programlama öğelerinin zaman içinde değişme olasılığı düşük öğeler olması gerekir. Buna göre, arayüz tanımları gerçekleştirimci ile kullanıcının paylaştığı ve sabit olma özelliği bulunan altyordam imzaları ile simgesel sabit tanımlarını barındırabilir.

<span class="mw-page-title-main">Windows 10</span> 2015te piyasaya sürülen Windows sürümü

Windows 10, Microsoft tarafından geliştirilen, Windows NT ailesinden bir işletim sistemidir. Windows 8.1'in devamı olarak 15 Temmuz 2015'te üretime sunuldu ve genel olarak 29 Temmuz 2015'te piyasaya sürüldü. Windows 10, MSDN ve Technet aracılığıyla indirilebildi ve Windows 8.1 ve Windows 7 kullanıcıları için ücretsiz yükseltme teklifi olarak sunuldu. Windows 10, Windows Insider'lar tarafından kullanılabilen Windows 10 test yapılarına ek olarak, kullanıcılara hiçbir ek ücret ödemeden mevcut olan yeni kararlı yapıları sürekli olarak alır. Kurumsal ortamlardaki aygıtlar bu güncelleştirmeleri daha yavaş alabilir veya on yıllık uzatılmış destek ömrü boyunca yalnızca güvenlik düzeltme ekleri gibi kritik güncelleştirmeleri alan LTSC sürümleri kullanabilir.

Dart, ilk kez Google tarafından geliştirilen ve daha sonraları ECMA tarafından standart (ECMA-408) haline getirilen açık kaynaklı ve genel-amaçlı bir programlama dilidir. Dart dili kullanılarak web, sunucu, mobil uygulamalar ve IoT cihazları geliştirilebilir.

Kod enjeksiyonu, geçersiz verilerin işlenmesinden kaynaklanan bilgisayar hatasından yararlanmadır. Enjeksiyon, saldırgan tarafından savunmasız bir bilgisayar programına kod enjekte etmek ve yürütmenin seyrini değiştirmek için kullanılır. Başarılı kod eklemenin sonucu felaket olabilir. Örneğin, bilgisayar virüslerinin ya da solucanların yayılmasına izin verilebilir.

<span class="mw-page-title-main">Tcsh</span>

tcsh C kabuğuna (csh) temelli ve geriye dönük uyumlu bir Unix kabuğudur.

Büyüktür işareti, bir matematiksel semboldür. Büyüktür işareti, bir sayının bir başka sayıdan büyük olduğunu göstermek için kullanılır. Büyüktür işareti ">" olarak yazılır. Örnekler: 8 > 3, 9 > 6, 14 > 10 ve 12 > 9

YAML ; insan tarafından okunabilir Programlama dilidir. Genellikle konfigürasyon dosyaları için ve verilerin saklandığı veya iletildiği uygulamalarda kullanılır. YAML, Genişletilebilir İşaretleme Dili (XML) gibi birçok iletişim uygulamasını hedefler ancak Standart Genelleştirilmiş İşaretleme Dili (SGML) ile bilinçli olarak farklı bir minimal sözdizimi kullanır. Yerleşim belirlemek için Python tarzı girinti kullanır ve çoğu dize değeri etrafında alıntı işareti gerektirmez ve aynı dosyada JSON tarzı ​[...]​ ve } de desteklemektedir.