JShell Java 9 में पेश किया गया है और एक कमांड-लाइन टूल है जो हमें main() मेथड के बिना सरल स्टेटमेंट्स, एक्सप्रेशन्स, मेथड्स और क्लासेस दर्ज करने की अनुमति देता है।
जब हम JShell में कोड दर्ज करते हैं, तो कोड को एक यूनिक ID असाइन किया जाता है। यह ID 1 से शुरू होता है और JShell में दर्ज प्रत्येक कमांड के लिए बढ़ाया जाता है। लाइब्रेरीज के लिए भी यही सच है जो स्टार्टअप पर लोड होती हैं। इनमें से प्रत्येक इम्पोर्ट के लिए एक यूनिक ID असाइन किया गया है। यह $1 से शुरू होता है और लोड किए गए प्रत्येक कोड के लिए बढ़ाया जाता है ($2, $3 आदि)। सत्र के दौरान लोड किए गए और दर्ज किए गए सभी कोड को सूचीबद्ध करने के लिए एक आंतरिक कमांड है, फिर "/list" कमांड का उपयोग करें।
/list /list [ID] /list [Code_Name] /list -start /list -all
- /list: यह कमांड वर्तमान सत्र में दर्ज सभी सक्रिय कोड प्रदर्शित करता है (JShell शुरू होने पर लोड किए गए कोड को छोड़कर)।
- /list [ID]: यह कमांड दर्ज ID से संबंधित स्रोत कोड प्रदर्शित करता है।
- /list [Code_Name]: दर्ज नाम से संबंधित स्रोत कोड प्रदर्शित करता है।
- /list -start: यह कमांड JShell शुरू होने पर लोड किए गए सभी कोड को प्रदर्शित करता है। सत्र शुरू करते समय, डिफ़ॉल्ट रूप से प्रीलोड किए गए सभी इम्पोर्ट प्रदर्शित होंगे, और संभवतः वह कोड जो आप स्वयं प्रीलोड करना चाहते थे (इस बिंदु को तीसरे भाग में समझाया जाएगा, JShell की शुरुआत को कस्टमाइज़ करने के अध्याय में)।
- /list -all: यह कमांड JShell सत्र के दौरान दर्ज सभी सक्रिय, निष्क्रिय, त्रुटि में और प्रीलोडेड कोड को सूचीबद्ध करता है।
नीचे दिए गए कोड स्निपेट में, हम "/list -all" कमांड का उपयोग करके दर्ज सभी इम्पोर्ट्स, एक्सप्रेशन्स आदि को सूचीबद्ध कर सकते हैं।
jshell> /imports | import java.io.* | import java.math.* | import java.net.* | import java.nio.file.* | import java.util.* | import java.util.concurrent.* | import java.util.function.* | import java.util.prefs.* | import java.util.regex.* | import java.util.stream.* jshell> LocalDate localDate = LocalDate.of(2020, 04, 10) | Error: | cannot find symbol | symbol: class LocalDate | LocalDate localDate = LocalDate.of(2020, 04, 10); | ^-------^ | Error: | cannot find symbol | symbol: variable LocalDate | LocalDate localDate = LocalDate.of(2020, 04, 10); | ^-------^ jshell> int x = 10 x ==> 10 jshell> public enum Operate { ...> ADDITION, ...> DIVISION; ...> } | created enum Operate jshell> /list -all s1 : import java.io.*; s2 : import java.math.*; s3 : import java.net.*; s4 : import java.nio.file.*; s5 : import java.util.*; s6 : import java.util.concurrent.*; s7 : import java.util.function.*; s8 : import java.util.prefs.*; s9 : import java.util.regex.*; s10 : import java.util.stream.*; e1 : LocalDate localDate = LocalDate.of(2020, 04, 10); 1 : int x = 10; 2 : public enum Operate { ADDITION, DIVISION; }
नीचे दिए गए कोड स्निपेट में, हम एक वेरिएबल, एक मेथड, या यहां तक कि एक ही नाम के साथ एक प्रकार को नाम दे सकते हैं। फिर, हम "/list" कमांड का उपयोग कर सकते हैं जो संबंधित प्रकार के साथ इस नाम की विभिन्न घटनाओं को प्रदर्शित करता है।
jshell> int x = 10 x ==> 10 jshell> public int x(int y) { ...> return y; ...> } | created method x(int) jshell> public long x(long y, long z) { ...> return y + z; ...> } | created method x(long,long) jshell> /list x 1 : int x = 10; 2 : public int x(int y) { return y; } 3 : public long x(long y, long z) { return y + z; }