क्या अजगर के इंटरएक्टिव REPL मोड जैसा कुछ है, लेकिन जावा के लिए?


92

क्या अजगर के इंटरएक्टिव REPL मोड जैसा कुछ है, लेकिन जावा के लिए? इसलिए कि मैं, उदाहरण के लिए, InetAddress.getAllByName( localHostName )एक विंडो में टाइप कर सकता हूं , और तुरंत परिणाम प्राप्त कर सकता हूं , यह सब सार्वजनिक स्थिर दुःस्वप्न () चीज के बिना?



जवाबों:


64

जावा 9 के बाद से संपादित करें JShell है

मूल उत्तर इस प्रकार है

आप ग्रोवी कंसोल का उपयोग भी कर सकते हैं । यह एक इंटरेक्टिव कंसोल है, जहाँ आप वह कर सकते हैं जो आप चाहते हैं। चूंकि ग्रूवी में कोर जावा प्लेटफॉर्म से कक्षाएं भी शामिल हैं, इसलिए आप उन कक्षाओं का भी उपयोग कर पाएंगे।

यह इस तरह दिख रहा है:

ग्रूवी का स्क्रीनशॉट


स्क्रीनशॉट अब imageshack पर मौजूद नहीं है।

ग्रूवी कंसोल के बारे में विशेष रूप से अच्छा है कि बहुत अधिक पैकेज डिफ़ॉल्ट रूप से आयात किए जाते हैं (जैसे java.util। *), इसलिए आपको इतने सारे आयात विवरण लिखने की आवश्यकता नहीं है
Dónal

2
उन लोगों के लिए जो ग्रूवी स्थापित करने के लिए बहुत आलसी हैं, इस कंसोल का ऑनलाइन संस्करण यहां उपलब्ध है: groovyconsole.appspot.com । JDK के कुछ कार्य अनुपलब्ध हैं (उदाहरण I / O और System.exit()) लेकिन अधिकांश उद्देश्यों के लिए यह पर्याप्त होना चाहिए।
डौनल

यह वर्गों को स्वीकार नहीं करता है कि सामान्य है? class test{public static void test(){System.out.println('test')}}
चूना

52

ग्रहण में ऐसा करने की सुविधा है, हालांकि यह एक लूप नहीं है। इसे "स्क्रैपबुक पेज" कहा जाता है। मुझे लगता है कि सादृश्य यह माना जाता है कि आपके पास एक स्क्रैपबुक है जहां आप कोड के छोटे स्निपेट एकत्र करते हैं।

वैसे भी, इसे काम करने के लिए, एक्लिप्स में एक परियोजना खोलें (आपका स्क्रैपबुक पेज एक परियोजना के साथ जुड़ा होने जा रहा है - ग्रहण तब पसंद करता है जब परियोजनाएं खुद की चीजें होती हैं)।

फिर:

  1. प्रोजेक्ट नेविगेटर विंडो में, एक फ़ोल्डर चुनें जो आपके प्रोजेक्ट में कहीं मौजूद है।
  2. या तो मेनू फ़ाइल चुनें -> नया -> अन्य, या कंट्रोल-एन हिट करें।
  3. जावा -> जावा रन / डिबग -> स्क्रैपबुक पेज चुनें।
  4. हिट "अगला", फिर इसे एक फ़ाइल नाम दें, फिर "फिनिश" पर हिट करें।

अब आपके पास स्क्रैपबुक पेज है। कुछ कोड टाइप करें, जैसे शायद यह:

System.out.println(System.getProperties());

फिर माउस के साथ पाठ का चयन करें, और कंट्रोल-यू को हिट करें या संदर्भ मेनू से "निष्पादित करें" चुनें। कोड चलेगा और कंसोल पर आउटपुट दिखाई देगा।

आप एक अभिव्यक्ति भी टाइप कर सकते हैं, इसे चुन सकते हैं और संदर्भ मेनू से प्रदर्शन का चयन कर सकते हैं। यह अभिव्यक्ति का मूल्यांकन करेगा और इसके प्रकार को प्रिंट करेगा। उदाहरण के लिए, रनिंग डिस्प्ले 1 + 2प्रिंट होगा (int) 3


1
उसके लिए धन्यवाद। Beanshell मेरे लिए छप पर समय निकाल रहा था, लेकिन यह पूरी तरह से काम करता है।
बेयर्ड रैंडेल सेप

3
मैं इतने लंबे समय से ग्रहण का उपयोग कर रहा हूं, लेकिन इसके बारे में नहीं पता था, धन्यवाद!
टोबोल्ड

28

बीनशेल एक छोटा, मुफ्त, एम्बेड करने योग्य जावा स्रोत इंटरप्रिटर है जो ऑब्जेक्ट स्क्रिप्टिंग लैंग्वेज फीचर्स के साथ जावा में लिखा गया है। बीनशेल गतिशील जावा सिंटैक्स को गतिशील रूप से निष्पादित करता है और इसे सामान्य स्क्रिप्टिंग उपयुक्तता के साथ विस्तारित करता है जैसे कि ढीले प्रकार, कमांड और विधि क्लोजल जैसे पर्ल और जावास्क्रिप्ट में। आप जावा प्रयोग और डिबगिंग के साथ-साथ नए तरीकों से अपने अनुप्रयोगों का विस्तार करने के लिए बीनशेल इंटरेक्टिव रूप से उपयोग कर सकते हैं। स्क्रिप्टिंग जावा तेजी से प्रोटोटाइप, उपयोगकर्ता स्क्रिप्टिंग एक्सटेंशन, नियम इंजन, कॉन्फ़िगरेशन, परीक्षण, गतिशील तैनाती, एम्बेडेड सिस्टम और यहां तक ​​कि जावा शिक्षा सहित अनुप्रयोगों की एक विस्तृत विविधता के लिए उधार देता है।

http://www.beanshell.org/

http://www.beanshell.org/manual/syntax.html#Standard_Java_Syntax


कम क्रिया सिंटैक्स के लिए जाइथन और जेरी जॉबी इंटरैक्टिव गोले भी हैं।
बक्कल

1
बीनशेल को सक्रिय रूप से बीहेल 2 के रूप में बनाए रखा गया है - code.google.com/p/beanshell2
hshib

कमांड लाइन से सेमशेल चलाने का एक सरल उदाहरण यहां पाया जा सकता है
ब्रैड पार्क्स

@hshib: यह पर अब Github और पिछले प्रतिबद्ध है कि 2013 से है नहीं "सक्रिय रूप से बनाए रखा।"
मार्टिन श्रोडर

@ MartinSchröder, जो 2013 में WAS टिप्पणी करते हैं :-)
hshib

19

आप ग्रहण स्क्रैपबुक पृष्ठों का उपयोग कर सकते हैं।

ग्रहण में एक स्क्रैपबुक पृष्ठ बनाएँ। आपके प्रोजेक्ट में, नया-> अन्य-> स्क्रैपबुक पेज।

फ़ाइल में, कुछ टेक्स्ट दर्ज करें, इसे चुनें और ctrl-U को हिट करें, और वहां आप जाएं।

अपने आयातों को प्रबंधित करने के लिए, पृष्ठ में राइट क्लिक करें और सेट इम्पोर्ट्स का चयन करें, जहाँ आप पैकेज या एकल वर्ग का आयात करना चुन सकते हैं। यह लगातार है, और पृष्ठ के साथ सहेजा जाता है।


3
उपयोगी के रूप में यह हो सकता है, एक स्क्रैपबुक पेज एक निरंतर सत्र नहीं है, इसलिए वास्तव में REPL के रूप में बहुत अच्छी तरह से काम नहीं करता है।
MHarris

19

पुराना सवाल है, लेकिन अब (मई 2013) एक बेहतर जवाब है - जावा-आरईपीएल! यह जीथब पर उपलब्ध है और क्विक वन-ऑफ टेस्टिंग के लिए जावा-रिप्लाई वेबसाइट पर भी उपलब्ध है ।

यदि आप git हब कोड को पकड़ लेते हैं और antकलाकृतियों को बनाने के लिए चलाते हैं , तो आप एक छोटी स्क्रिप्ट के साथ उपयोग करना आसान बना सकते हैं:

#!/bin/sh
java -jar /home/rdahlgren/scripts/javarepl-dev.build.jar

इस परियोजना को खोजने के बाद से मैं शायद दिन में 5 बार इसका उपयोग करता हूं। का आनंद लें!


अब ऑनलाइन उत्तर के लिए लिंक javarepl.com/term.html प्रतीत होता है , पुराना लिंक सिर्फ जावा त्रुटियों को दर्शाता है।
टोनी

13

ऐसा लगता है कि जावा (6, 7) नामक एक REPL कंसोल नामक जहाज को अभी तक किसी ने नहीं देखा है jrunscript। यह भाषा अज्ञेयवादी है (इसलिए इसका उपयोग ज्यथॉन, जे रूबी आदि के साथ किया जा सकता है)। यह जावास्क्रिप्ट (राइनो) में चूक करता है जिसे डिफ़ॉल्ट रूप से भी बंडल किया जाता है, और अन्य भाषाओं की तरह आप क्लासपैथ पर उपलब्ध सभी पैकेज / ऑब्जेक्ट तक पहुंच सकते हैं।


12

यह OpenJDK 9 का हिस्सा है!

JSPL नामक एक REPL (Oracle द्वारा विकसित) JDK 9 के भाग के रूप में जारी किया गया है।

बस JDK 9 डाउनलोड करें, और लॉन्च करें bin/jshell

JShell का स्क्रीन शॉट

साधन


11

ग्रूवी के विकल्प के रूप में, बीन्सशेल आज़माएं: http://www.beanshell.org/

यह अधिक जावा जैसा है और आपको सीधे जावा-सिंटैक्स का उपयोग करने की अनुमति देता है।


क्या अब बीसेशेल को बनाए रखा गया है?
रोज़रपैक

1
बीनशेल को सक्रिय रूप से बीहेल 2 के रूप में बनाए रखा जाता है - code.google.com/p/beanshell2
hshib

@ शशि: नहीं। जीथुब पर आखिरी प्रतिबद्ध 2013 से है।
मार्टिन श्रोडर

11

जाइथन एक पायथन कार्यान्वयन है जो आपको जावा ऑब्जेक्ट के साथ निरीक्षण और बातचीत करने देता है।

>>> from java.net import *
>>> InetAddress.getAllByName("google.com")
array(java.net.InetAddress,[google.com/209.85.171.100, 
                            google.com/74.125.45.100,
                            google.com/74.125.67.100])

9

अल्बर्ट लताज़ द्वारा जावा-आरईपीएल अच्छी तरह से काम करता है।

आप इसे अपने ब्राउज़र से सीधे यहाँ आज़मा सकते हैं: http://www.javarepl.com/term.html

स्रोत कोड यहां उपलब्ध है, और इसमें एक अच्छा इंटेली-जे प्लगइन है।

https://github.com/albertlatacz/java-repl



7

ग्रूवी सांत्वना आप ऐसा कर सकते हैं। यह वास्तव में कोशिश करने और ग्रूवी कोड का परीक्षण करने के लिए था, लेकिन चूंकि ग्रूवी जावा का सुपरसेट है, इसलिए यह सादे जावा सामान को भी अनुमति देता है।

मैंने इसे कंसोल में दर्ज किया है:

InetAddress.getAllByName('localhost')

और CTRL-R मारा, फिर वापस आ गया:

groovy> InetAddress.getAllByName('localhost')

Result: [localhost/127.0.0.1]

7

स्काला एक इंटरैक्टिव कंसोल भी प्रदान करता है। मैं पूरी तरह से InetAddress को अर्हता प्राप्त करके आपके प्रश्न में अभिव्यक्ति के लिए इसका उपयोग करने में सक्षम था, जैसे कि:

java.net.InetAddress.getAllByName("localhost")

6

जबकि JRuby , BeanShell , जूलियन फ्लेशर के आरईपीएल देखते हैं अल्बर्ट Latacz के आरईपीएल नवीनतम और सक्रिय हो रहा है।

एक साधारण वर्ग की परिभाषा के साथ, ठीक काम करता है।

$ java -jar javarepl.jar
Welcome to JavaREPL version 56 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_17)
Type in expression to evaluate.
Type :help for more options.

java> public class Test {
    | public static void execute(String [] s) {
    |  System.out.println(54353 + s[0]);
    | }}

java> Test.execute(new String [] {"234343"});
54353234343

java> System.exit(0);

3

Mathematica की पहुंच वाले लोगों के लिए, JLink आपको Mathematica कोड के साथ जावा और स्क्रिप्ट का उपयोग करने देता है:

Needs["JLink`"]
LoadJavaClass["java.net.InetAddress"]
InetAddress`getAllByName["localhost"]

मूल्यांकन करने के लिए Shift-Enter दबाएं, और आप प्राप्त करें

{<<JavaObject[java.net.Inet4Address>>}

फिर आप toStringलौटे हुए ऑब्जेक्ट पर कॉल करने के लिए Mathematica के मैप फ़ंक्शन का उपयोग कर सकते हैं :

#@toString[]& /@ %

परिणाम प्राप्त करने के लिए (या कम अस्पष्ट सिंटैक्स का उपयोग करने के लिए Map[Function[obj, obj@toString[]], %]):

{"localhost/127.0.0.1"}

यदि आप इससे गंभीर होने लगते हैं, तो आप http://reference.wolfram.com/mathematica/JLink/tutorial/Overview.html पर टॉड गेले के ट्यूटोरियल को पढ़ना चाहेंगे ।


2

यदि आप पहले से ही ग्रूवी को जानते हैं (जो मैं आपको मानता हूं, चूंकि आपने ग्रूवी कंसोल का उल्लेख किया है), तो बस ग्रूवीश या ग्रूवीकोनसोल का उपयोग करें, जो ग्रूवी डिस्ट्रो में शामिल हैं। यदि आपके पास कस्टम जार है जिसे आप आयात करना चाहते हैं, तो आप या तो एक बैच फ़ाइल लिख सकते हैं, जो क्लासपाथ में जोड़े गए लोगों के साथ groovysh / groovyConsole शुरू करता है। आप यह भी कर सकते हैं

this.class.classLoader.rootLoader.addURL(new URL("file:///path to file"))

खोल के भीतर से अन्य जार लोड करने के लिए।

मैंने कई साल पहले Jython का उपयोग सिर्फ वही करने के लिए किया था जो आप पूछ रहे हैं। मेरी बिल्ड स्क्रिप्ट के एक हिस्से के रूप में, मैंने एक कस्टम jython.bat और .py फ़ाइल बनाई, जिसमें मैं जिस प्रोजेक्ट पर काम कर रहा था, उसके लिए पूरी क्लासपैथ शामिल थी। इस तरह जब मैंने Jython शुरू किया, तो इसमें सभी कोड उपलब्ध होंगे, और यह स्प्रिंग को लाइव सिस्टम में मुझे ट्वीड करने के लिए लाएगा। आप ग्रूवी, रूबी, बीनशेल, आदि के साथ एक ही काम कर सकते हैं।


मुझे पता है कि मैं ग्रूवी शेल का उपयोग कर सकता हूं, लेकिन ग्रूवी के पास जावा के समान शब्दार्थ नहीं है, और किसी भी प्रकार की जांच नहीं है। इसलिए यह संभव है कि मुझे संकलन त्रुटियों, या जावा कोड के एक टुकड़े के साथ अलग-अलग रनटाइम व्यवहार मिल सकता है जो ग्रूवी शेल में काम करने के लिए लग रहा था।
डोनल

groovy भी ~ / .groovy / lib में सभी परिवादों को लोड करेगा, आप या तो सामान को कॉपी कर सकते हैं या सहानुभूति का उपयोग कर सकते हैं
जेसन



1

अधिकांश IDE की विंडो में "तत्काल मोड" जैसी कोई चीज होती है जो आपको मक्खी पर जावा कोड का मूल्यांकन करने की अनुमति देगा।


ग्रहण में "प्रदर्शन" दृश्य होता है, जो मैं चाहता हूं के करीब है। समस्या यह है, यह चल रहे आवेदन के संदर्भ में होना चाहिए। मुझे एक ऐप चलाना है, ब्रेकपॉइंट पर रुकना है और उसके बाद ही मैं वह लिख सकता हूं जो मैं चाहता हूं।
योनी रोत

@YoniRoit IMHO मुझे कमांड लाइन REPL से बेहतर "डिस्प्ले" + डिबग मोड पसंद है। मैं बहुत पहले REPL w / पायथन का उपयोग करता था इसलिए मैंने दोनों किया है। मुझे लगता है कि यूनिट टेस्ट लिखने और ब्रेक पॉइंट लगाने के लिए इसका बहुत बेहतर है और यूनिट टेस्ट में जो भी कोड काम करता है उसे चिपकाते हुए वांछित संदर्भ के साथ खेलना चाहिए। एक यूनिट टेस्ट की तुलना में एक सादे REPL में सटीक संदर्भ प्राप्त करना बहुत कठिन है।
एडम जेंट

1

आप ब्लूज पर एक नज़र डाल सकते हैं जो कि एक इंटरैक्टिव जावा डेवलपमेंट एनवायरनमेंट है, जो कि पूर्ण आईडीई जैसे कि ग्रहण या नेटबीन्स के बजाय ओओपी सिखाने के लिए है। यह वैसे भी खेलने के लिए मजेदार है।

आप इसे जावा ट्यूटोरियल की एक श्रृंखला में YouTube पर कार्रवाई में देख सकते हैं ।


यह दिलचस्प है। ब्लूज एक सेशन रिप्लाई की तरह है। उन चीजों के लिए जो आपके लिए वर्तमान में उत्तर का उपयोग करने के लिए वास्तव में उपयोगी नहीं हैं, लेकिन आप इसका उपयोग अपने ओओ डिज़ाइन को प्रोटोटाइप करने के लिए कर सकते हैं क्योंकि आप किसी विधि का प्रोटोटाइप बनाने के लिए उत्तर का उपयोग करेंगे।
बिल के

1

DrJava एक शैक्षिक आईडीई है जिसमें REPL फलक शामिल है।

एक ग्रहण प्लगइन के रूप में अच्छी तरह से है, लेकिन यह मेरे लिए काम नहीं किया है। मुझे लगता है कि अभी कुछ समय में इसे अपडेट नहीं किया गया है। तो मैं आमतौर पर क्या करते हैं एक DrJava खिड़की खुला रखने के लिए "क्या होता है अगर मैं ऐसा करता हूँ" सवाल।

EclipseShell अच्छा भी हो सकता है, लेकिन मैंने अभी तक इसका उपयोग नहीं किया है।



1

DrJava नामक एक साधारण IDE है जिसमें एक इंटरैक्शन कंसोल है। यह ठीक वैसा ही काम करता है जैसा मैं उम्मीद करता हूं। बस एक फ़ाइल लोड करें और उसमें वस्तुओं के साथ बातचीत करना शुरू करें।



1

जावा 8 के लिए, nudge4j है। देख https://github.com/lorenzoongithub/nudge4j

nudge4j जावा उत्तर

... और सुंदरता यह है कि आप अपने एप्लिकेशन को ब्राउज़र से पायलट कर सकते हैं


1

जेपीएड एक जावा स्क्रैडपैड है जिसमें बिल्ट आरईपीएल है:

C:\>jpad
       _ _____          _
      | |  __ \        | |
      | | |__) |_ _  __| |
  _   | |  ___/ _` |/ _` |
 | |__| | |  | (_| | (_| |
  \____/|_|   \__,_|\__,_|



Anything you type is evaluated as java.
The code is continuously appended until you call \clear.
Other Available Commands:
\exit - exit
\clear (n) - clear past java statements
\history - display all past java statements
\help - display this help

j>2+2
4
j>Math.sin(100.1)
-0.4177477
j>

यह संग्रह, सूचियों, मानचित्रों आदि को डंप करने के बारे में भी स्मार्ट है और उन्हें तालिका या चार्ट के रूप में प्रस्तुत करने की अनुमति देता है:

यहां छवि विवरण दर्ज करें



0

Jython, JIRB for JRuby, Groovy (groovyconsole et al) और Beanshell सभी व्यवहार्य विकल्प हैं।

मैंने InteractiveConsoleJython के लिए उपयोग किया है , यह वास्तव में ऐप में अच्छी तरह से काम करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.