Java Language
JShell
खोज…
परिचय
JShell JDK 9. में जोड़े गए जावा के लिए एक इंटरैक्टिव REPL है। यह डेवलपर्स को जावा भाषा के साथ अभिव्यक्ति, परीक्षण कक्षाओं और प्रयोग का तुरंत मूल्यांकन करने की अनुमति देता है। Jdk 9 के लिए प्रारंभिक एक्सेस से प्राप्त किया जा सकता है: http://jdk.java.net/9/
वाक्य - विन्यास
- $ jshell - JShell REPL को प्रारंभ करें
- jshell> / <कमांड> - दिए गए JShell कमांड को रन करें
- jshell> / exit - JShell से बाहर निकलें
- jshell> / help - JShell कमांड की एक सूची देखें
- jshell> <java_expression> - दिए गए जावा एक्सप्रेशन (अर्धविराम वैकल्पिक) का मूल्यांकन करें
- jshell> / vars / / methods OR / types - क्रमशः चर, विधियों, या वर्गों की एक सूची देखें।
- jshell> / open <file> - शेल के इनपुट के रूप में एक फ़ाइल पढ़ें
- jshell> / संपादित करें <पहचानकर्ता> - सेट संपादक में एक स्निपेट संपादित करें
- jshell> / सेट एडिटर <कमांड> - स्निपेट्स को एडिट / एडिट करने के लिए इस्तेमाल की जाने वाली कमांड सेट करें
- jshell> / drop <पहचानकर्ता> - एक स्निपेट हटाएं
- jshell> / reset - JVM को रीसेट करें और सभी स्निपेट को हटा दें
टिप्पणियों
JShell को Java 9 JDK की आवश्यकता है, जो वर्तमान में (मार्च 2017) jdk9.java.net से शुरुआती एक्सेस स्नैपशॉट के रूप में डाउनलोड किया जा सकता है। यदि, जब आप jshell
कमांड को चलाने की कोशिश करते हैं, तो आपको Unable to locate an executable
होने के साथ एक त्रुटि मिलती है, सुनिश्चित करें कि JAVA_HOME
सही तरीके से सेट है।
डिफ़ॉल्ट आयात
निम्नलिखित पैकेज स्वचालित रूप से आयात किए जाते हैं जब JShell शुरू होता है:
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 शुरू कर रहा है
JShell शुरू करने का प्रयास करने से पहले, अपने JAVA_HOME
पर्यावरण चर बिंदुओं को JDK 9 संस्थापन के लिए सुनिश्चित करें। JShell शुरू करने के लिए, निम्नलिखित कमांड चलाएँ:
$ jshell
यदि सब ठीक हो जाता है, तो आपको एक jshell>
प्रॉम्प्ट देखना चाहिए।
जेएसहेल से बाहर
JShell से बाहर निकलने के लिए, JShell प्रॉम्प्ट से निम्न कमांड चलाएँ:
jshell> /exit
भाव
JShell के भीतर, आप अर्धविराम के साथ या उसके बिना जावा भावों का मूल्यांकन कर सकते हैं। ये मूल भावों और कथनों से लेकर अधिक जटिल तक हो सकते हैं:
jshell> 4+2
jshell> System.out.printf("I am %d years old.\n", 421)
लूप्स और कंडीशन ठीक हैं, भी:
jshell> for (int i = 0; i<3; i++) {
...> System.out.println(i);
...> }
यह ध्यान रखना महत्वपूर्ण है कि ब्लॉकों के भीतर अभिव्यक्तियों में अर्धविराम होना चाहिए!
चर
आप JShell के भीतर स्थानीय चर घोषित कर सकते हैं:
jshell> String s = "hi"
jshell> int i = s.length
ध्यान रखें कि चर को विभिन्न प्रकारों के साथ पुन: घोषित किया जा सकता है; यह JShell में पूरी तरह से मान्य है:
jshell> String var = "hi"
jshell> int var = 3
चरों की सूची देखने के लिए, JShell प्रॉम्प्ट पर /vars
var डालें।
तरीके और कक्षाएं
आप JShell के भीतर तरीकों और कक्षाओं को परिभाषित कर सकते हैं:
jshell> void speak() {
...> System.out.println("hello");
...> }
jshell> class MyClass {
...> void doNothing() {}
...> }
कोई पहुँच संशोधक आवश्यक नहीं हैं। अन्य ब्लॉकों के साथ, विधि निकायों के अंदर अर्धविराम की आवश्यकता होती है। ध्यान रखें कि, चरों के साथ, विधियों और कक्षाओं को फिर से परिभाषित करना संभव है। विधियों या वर्गों की सूची देखने के लिए, क्रमशः JShell प्रॉम्प्ट पर /methods
या /types
दर्ज करें।
स्निपेट का संपादन
JShell द्वारा उपयोग किए गए कोड की मूल इकाई स्निपेट या स्रोत प्रविष्टि है । हर बार जब आप स्थानीय चर घोषित करते हैं या स्थानीय पद्धति या वर्ग को परिभाषित करते हैं, तो आप एक स्निपेट बनाते हैं जिसका नाम चर / विधि / वर्ग का पहचानकर्ता होता है। किसी भी समय, आप अपने द्वारा बनाए गए स्निपेट को /edit
कमांड के साथ संपादित कर सकते हैं। उदाहरण के लिए, मान लें कि मैंने एक, विधि, bar
साथ वर्ग Foo
बनाया है:
jshell> class Foo {
...> void bar() {
...> }
...> }
अब, मैं अपने तरीके के शरीर को भरना चाहता हूं। पूरी कक्षा को फिर से लिखने के बजाय, मैं इसे संपादित कर सकता हूं:
jshell> /edit Foo
डिफ़ॉल्ट रूप से, एक स्विंग एडिटर संभव सबसे बुनियादी सुविधाओं के साथ पॉप अप होगा। हालाँकि आप उस संपादक को बदल सकते हैं जो JShell उपयोग करता है:
jshell> /set editor emacs
jshell> /set editor vi
jshell> /set editor nano
jshell> /set editor -default
ध्यान दें कि यदि स्निपेट के नए संस्करण में कोई सिंटैक्स त्रुटियां हैं, तो इसे सहेजा नहीं जा सकता है। इसी तरह, एक स्निपेट केवल तभी बनाया जाता है जब मूल घोषणा / परिभाषा वाक्यविन्यास रूप से सही हो; निम्नलिखित काम नहीं करता है:
jshell> String st = String 3
//error omitted
jshell> /edit st
| No such snippet: st
हालाँकि, स्निपेट संकलित किए जा सकते हैं और इसलिए कुछ संकलन समय त्रुटियों के बावजूद संपादन योग्य हैं, जैसे बेमेल प्रकार - निम्नलिखित कार्य:
jshell> int i = "hello"
//error omitted
jshell> /edit i
अंत में, स्निपेट /drop
कमांड का उपयोग करके हटाया जा सकता है:
jshell> int i = 13
jshell> /drop i
jshell> System.out.println(i)
| Error:
| cannot find symbol
| symbol: variable i
| System.out.println(i)
|
सभी स्निपेट को हटाने के लिए, जिससे JVM की स्थिति को \reset
, \reset
उपयोग करें:
jshell> int i = 2
jshell> String s = "hi"
jshell> /reset
| Resetting state.
jshell> i
| Error:
| cannot find symbol
| symbol: variable i
| i
| ^
jshell> s
| Error:
| cannot find symbol
| symbol: variable s
| s
| ^