JShell Kullanımı
Merhaba, daha çok Java ağırlıklı yazılar yazmayı planladığım için ilk yazımın konusunu Java 9 ile tanıtılan JShell aracı ve bu aracın kullanımı olarak belirledim. Yazı içerisinde bu aracın ne gibi avantajlar sağladığı ve bu aracı nasıl kullanacağımız hakkında bilgi vermeye çalışacağım.
Özetlemek gerekirse JShell hızlı bir şekilde değişkenler tanıyıp bu değişkenleri kullanarak methodlar yazabileceğimiz bir araç. Bu aracı kullanmak için öncelikle platformumuzda JDK 9 veya üstü bir Java versiyonu kurulu olması gerekmektedir. Aşağıdaki komutu terminaliniz üzerinde çalıştırarak platformunuzda kurulu olan Java versiyonunu öğrenebilirsiniz.
java -version
Kurulum sonrasında kurulum dizini altında bin/jshell dosyasını terminal üzerinde çalıştırarak veya ilgili versiyon için PATH tanımı yaptıktan sonra terminaliniz üzerinde jshell komutunu çalıştırarak jshell aracına erişebilirsiniz.
Kolaylık sağlaması için kullanabileceğimiz birkaç komutu şu şekilde listeyebiliriz:
- /exit : Terminaldeki jshell session’ını kapatmamızı sağlar.
- /vars : İlgili session için tanımlanmış değişkenleri listeler.
- /methods : İlgili session için tanımlanmış methodları listeler.
- /history : İlgili session için çalıştırılmış tüm komutları listeler.
- /list : İlgili session için çalıştırılmış tüm Java ifadelerini listeler.
- /set feedback verbose : Daha açıklayıcı ifadeler sunması için kullanılır. /set feedback normal komutuyla kapatılabilir.
- /reset : İlgili session için tanımlanmış ifadeleri siler.
Yukarıdaki komutların üzerinden hızlı bir şekilde geçtikten sonra daha detaylı konulara değinebiliriz. Örneğin komut ekranında “Hello World” yazmamız yeni bir String tanımlamamız için yeterli oldu. /vars komutunu çalıştırdığımızda ise JShell’in bizim isimlendirmesini yapmadığımız değişkenler için $1'den başlamak üzere isimler atadığını görmüş olduk.
JShell’in interaktif bir yapıya sahip olması sebebiyle kullanıcıların çeşitli Exception’lar ile karşılaşması mümkün. Fakat JShell’in içerisindeki exception handling yapısı çalışmanıza devam edebilmenizi mümkün kılıyor.
JShell’in farklılaştığı bir diğer nokta ise bir değişkeni farklı bir obje türünde tanımlayıp yeni obje türüyle çalışmaya devam edebilmek. JShell üzerinde proje geliştirmek değil de daha kısa çalışmalar yapılacağını düşünürsek bunu avantaj sağlayabilecek bir özellik olarak görebiliriz.
JShell’in sağladığı avantajlardan biri de otomatik tamamlama. Komutları yazarken fark etmiş olabileceğiniz gibi aşağıdaki şekilde method tanımlayıp sonrasında methodu çağırırken de bu özelliği kullanabilirsiniz.
Tanımladığımız method içerisinde dışarıdan alması gereken bir ifade olabilir. JShell bu ifade tanımlanana kadar ilgili methodun kullanılmasına aşağıdaki örnekte olduğu gibi izin vermeyecektir.
Tanımladığımız değişkenleri ve methodları daha sonra kullanabilmek adına /save ve /open komutlarından faydalanabiliriz.
Yukarıdaki örnekte oluşan session.txt dosyası aşağıdaki gibidir:
int minusTheVal(int x){
return x - VAL;
}
minusTheVal(10)
int VAL = 5;
minusTheVal(10)
Terminal üzerinde çalıştığımız için tanımlama yaptığımız bir methodu veya classı değiştirmek istediğimizde zorlanabiliriz. Bu noktada /edit komutu devreye giriyor.
Sadece /edit yazarak kullanabileceğimiz bu komutu sonuna düzenleme yapmak istediğimiz ifadenin ismini girerek de çalıştırabiliriz.
jshell> /edit minusTheVal
JShell loop tanımları, class tanımlamak ve import etmek, classpath tanımlama, script çalıştırma gibi birçok gelişmiş özellikliği de barındırmaktadır.
Yukarıdaki çalışmaları IDE kullanmaya gerek duymadan yapabilmek JShell kullanımına teşvik eden başlıca etkenlerden. Özeti güncellemek gerekirse; JShell hızlı bir şekilde değişkenler tanıyıp bu değişkenleri kullanarak methodlar yazabileceğimiz kullanımı kolay ve gelişmiş bir araç.
/exit