জাভা ৯-এ একটি নতুন ফিচার হিসেবে REPL (Read-Evaluate-Print-Loop) নামে JShell معرفی করা হয়েছে। এটি একটি কমांड-লাইন প্রম্পট টুল যা সম্পূর্ণ প্রোগ্রাম লিখতে না পারেও জাভা কোড ইভ্যালুয়েট করতে দেয়।
যখন আমরা JShell-এ কোড বা ইন্টারনাল কমান্ড লিখি, তখন সেটি বর্তমান সেশনের জন্য থাকে। JShell বন্ধ করে আবার লগ-ইন করলে আগে লিখা সব কোড হারিয়ে যায়। সেশনের दौरान লিখা সকল কোড ফাইলে সংরক্ষণ করার জন্য "/save" ইন্টারনাল কমান্ড বাস্তবায়ন করা হয়েছে।
/ save [file-path] / save -all [file-path] / save -history [file-path] / save -start [file-path]
- /save [file-path]: আর্গুমেন্ট ছাড়া এই কমান্ড সেশন aikana লিখা সকল সক্রিয় কোডকে দ্বিতীয় আর্গুমেন্ট হিসেবে দেওয়া ফাইলে সংরক্ষণ করে। মনে রাখবেন, ভুলভাবে লিখা কোড এবং ইন্টারনাল কমান্ডগুলো ফাইলে সংরক্ষিত হয় না।
- /save -all [file-path]: সেশন aikana লিখা সকল সক্রিয় কোড, ভুল কোড এবং স্টার্টআপ কোড دوم্বা আর্গুমেন্ট হিসেবে দেওয়া ফাইলে সংরক্ষণ করে। ইন্টারনাল কমান্ডগুলো রেকর্ড হয় না।
- /save -history [file-path]: সেশন중에 লিখা সকল কোড ও কমান্ড دوم্বা আর্গুমেন্টের ফাইলে সংরক্ষণ করে। ইন্টারনাল কমান্ডগুলোও ফাইলে সংরক্ষিত হয়।
- /save -start: JShell শুরু হলে যা লঞ্চ হয় সেগুলো সংরক্ষণ করে।
নিচের কোড স্নিপেটে, JShell-এ লিখা কোড "/save" কমান্ডের পরের অপশন অনুযায়ী ভিন্ন ফাইলে সংরক্ষিত হয়েছে। আমাদের ".jsh" এক্সটেনশন সহ একটি ডিরেক্টরিতে সেগুলো সংরক্ষণ করতে হবে।
C:\Users\User>jshell
| Welcome to JShell -- Version 9.0.4
| For an introduction type: /help intro
jshell> int x = 20
x ==> 20
jshell> double y = 30
y ==> 30.0
jshell> public int sum(int a, int b) {
...> return a + b;
...> }
| created method sum(int,int)
jshell> String str = "TutorialsPoint"
str ==> "TutorialsPoint"
jshell> /list
1 : int x = 20;
2 : double y = 30;
3 : public int sum(int a, int b) {
return a + b;
}
4 : String str = "TutorialsPoint";
jshell> int var = "error"
| Error:
| incompatible types: java.lang.String cannot be converted to int
| int var = "error";
| ^-----^
jshell> /save C:\Users\User\save.jsh
jshell> /save -all C:\Users\User\saveAll.jsh
jshell> /save -history C:\Users\User\saveHistory.jsh
jshell> /save -start C:\Users\User\saveStart.jsh