มีบางอย่างเช่นโหมด REPL แบบโต้ตอบของ python แต่สำหรับ Java? ตัวอย่างเช่นฉันสามารถพิมพ์InetAddress.getAllByName( localHostName )
หน้าต่างและรับผลลัพธ์ได้ทันทีโดยไม่ต้องมีสิ่งฝันร้ายที่เป็นโมฆะสาธารณะทั้งหมดนี้?
มีบางอย่างเช่นโหมด REPL แบบโต้ตอบของ python แต่สำหรับ Java? ตัวอย่างเช่นฉันสามารถพิมพ์InetAddress.getAllByName( localHostName )
หน้าต่างและรับผลลัพธ์ได้ทันทีโดยไม่ต้องมีสิ่งฝันร้ายที่เป็นโมฆะสาธารณะทั้งหมดนี้?
คำตอบ:
System.exit()
) แต่สำหรับวัตถุประสงค์ส่วนใหญ่ควรเพียงพอ
class test{public static void test(){System.out.println('test')}}
Eclipse มีคุณสมบัติในการทำเช่นนี้แม้ว่าจะไม่ใช่การวนซ้ำ เรียกว่า "หน้าสมุดภาพ" ฉันคิดว่าการเปรียบเทียบควรจะเป็นว่าคุณมีสมุดเรื่องที่สนใจที่คุณเก็บตัวอย่างโค้ดเล็กน้อย
อย่างไรก็ตามเพื่อให้ทำงานได้ให้เปิดโครงการใน Eclipse (หน้าสมุดภาพของคุณจะเชื่อมโยงกับโครงการ - Eclipse ชอบเมื่อโครงการเป็นของตัวเอง)
จากนั้น:
ตอนนี้คุณมีหน้าสมุดเรื่องที่สนใจ พิมพ์รหัสบางอย่างเช่นนี้:
System.out.println(System.getProperties());
จากนั้นเลือกข้อความด้วยเมาส์และกด Control-U หรือเลือก "Execute" จากเมนูบริบท โค้ดจะทำงานและผลลัพธ์จะปรากฏบนคอนโซล
คุณยังสามารถพิมพ์นิพจน์เลือกและเลือกแสดงจากเมนูบริบท มันจะประเมินนิพจน์และพิมพ์ประเภท ยกตัวอย่างเช่นการทำงานการแสดงผลบนจะพิมพ์1 + 2
(int) 3
BeanShell เป็นตัวแปลซอร์ส Java ขนาดเล็กฟรีที่ฝังได้พร้อมคุณสมบัติภาษาอ็อบเจ็กต์สคริปต์เขียนด้วย Java BeanShell เรียกใช้ไวยากรณ์ Java มาตรฐานแบบไดนามิกและขยายด้วยความสะดวกในการเขียนสคริปต์ทั่วไปเช่นประเภทหลวมคำสั่งและการปิดเมธอดเช่นเดียวกับใน Perl และ JavaScript คุณสามารถใช้ BeanShell แบบโต้ตอบสำหรับการทดลองและการแก้จุดบกพร่องของ Java รวมทั้งเพื่อขยายแอปพลิเคชันของคุณในรูปแบบใหม่ ๆ Scripting Java นำเสนอแอพพลิเคชั่นที่หลากหลายรวมถึงการสร้างต้นแบบอย่างรวดเร็วการขยายสคริปต์ของผู้ใช้เอ็นจินกฎการกำหนดค่าการทดสอบการปรับใช้แบบไดนามิกระบบฝังตัวและแม้แต่การศึกษา Java
http://www.beanshell.org/manual/syntax.html#Standard_Java_Syntax
คุณสามารถใช้หน้าสมุดภาพ Eclipse
ใน Eclipse ให้สร้างหน้า Scrapbook ในโครงการของคุณใหม่ -> อื่น ๆ -> หน้าสมุดภาพ
ในไฟล์ให้ป้อนข้อความเลือกและกด ctrl-U และไปที่นั่น
ในการจัดการการนำเข้าของคุณให้คลิกขวาในเพจแล้วเลือกตั้งค่าการนำเข้าซึ่งคุณสามารถเลือกที่จะนำเข้าแพ็คเกจหรือคลาสเดียว สิ่งนี้คงอยู่และถูกบันทึกด้วยเพจ
คำถามเก่า แต่มีคำตอบที่ดีกว่าตอนนี้ (พฤษภาคม 2013) - java-REPL! มีให้บริการบนgithubและยังมีอยู่ที่เว็บไซต์java-replสำหรับการทดสอบเพียงครั้งเดียวอย่างรวดเร็ว
หากคุณคว้ารหัส git hub และเรียกใช้ant
เพื่อสร้างสิ่งประดิษฐ์คุณสามารถใช้งานได้ง่ายด้วยสคริปต์ขนาดเล็กเช่น:
#!/bin/sh
java -jar /home/rdahlgren/scripts/javarepl-dev.build.jar
ตั้งแต่พบโครงการนี้ฉันอาจใช้มัน 5 ครั้งต่อวัน สนุก!
ดูเหมือนว่าไม่มีใครกล่าวถึงเลยว่า Java (6, 7) เรือคอนโซล REPL jrunscript
เรียกว่า เป็นภาษาที่ไม่เชื่อเรื่องพระเจ้า (สามารถใช้กับ Jython, JRuby เป็นต้น) โดยมีค่าเริ่มต้นเป็น JavaScript (Rhino) ซึ่งรวมอยู่ด้วยโดยค่าเริ่มต้นเช่นเดียวกับภาษาอื่น ๆ ที่คุณสามารถเข้าถึงแพ็คเกจ / วัตถุทั้งหมดที่มีอยู่ใน classpath
REPL ที่เรียกว่าJShell (พัฒนาโดย Oracle) ได้รับการเผยแพร่โดยเป็นส่วนหนึ่งของ JDK 9
เพียงดาวน์โหลด JDK ที่ 9 bin/jshell
และการเปิดตัว
เป็นอีกทางเลือกหนึ่งของ Groovy ลองใช้ Beanshell: http://www.beanshell.org/
เป็นเหมือน Java มากกว่าและช่วยให้คุณใช้ Java-syntax ได้โดยตรง
Jythonเป็นการใช้งาน python ซึ่งให้คุณตรวจสอบและโต้ตอบกับวัตถุ Java
>>> 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])
Java-REPL โดยAlbert Lataczทำงานได้ดี
คุณสามารถทดลองใช้งานได้โดยตรงจากเบราว์เซอร์ของคุณที่นี่: http://www.javarepl.com/term.html
ซอร์สโค้ดมีอยู่ที่นี่และมีปลั๊กอิน Intelli-J ที่เหมาะสม
Clojure ให้ REPL ที่คุณสามารถใช้ได้
Groovy คอนโซลช่วยให้คุณสามารถทำเช่นนั้นได้ จริงๆแล้วมันมีจุดประสงค์เพื่อทดลองและทดสอบโค้ด groovy แต่เนื่องจาก groovy เป็นส่วนเหนือของ Java จึงอนุญาตให้ใช้ Java ธรรมดาได้เช่นกัน
ฉันเพิ่งป้อนสิ่งนี้ลงในคอนโซล:
InetAddress.getAllByName('localhost')
และกด CTRL-R จากนั้นจะส่งกลับ:
groovy> InetAddress.getAllByName('localhost')
Result: [localhost/127.0.0.1]
Scalaยังมีคอนโซลแบบโต้ตอบ ฉันสามารถใช้มันเพื่อให้ได้ผลลัพธ์สำหรับนิพจน์ในคำถามของคุณโดยการกำหนด InetAddress ที่มีคุณสมบัติครบถ้วนดังใน:
java.net.InetAddress.getAllByName("localhost")
ในขณะที่JRuby , BeanShell , REPL ของ Julian Fleischerอยู่ที่นั่นREPL ของ Albert 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);
สำหรับผู้ที่สามารถเข้าถึง Mathematica JLink ช่วยให้คุณเข้าถึง Java และสคริปต์ด้วยรหัส Mathematica:
Needs["JLink`"]
LoadJavaClass["java.net.InetAddress"]
InetAddress`getAllByName["localhost"]
กด Shift-Enter เพื่อประเมินและคุณจะได้รับ
{<<JavaObject[java.net.Inet4Address>>}
จากนั้นคุณสามารถใช้ฟังก์ชันแผนที่ของ Mathematica เพื่อเรียกtoString
วัตถุที่ส่งคืน:
#@toString[]& /@ %
เพื่อให้ได้ผลลัพธ์ (หรือใช้ไวยากรณ์ที่คลุมเครือน้อยกว่าMap[Function[obj, obj@toString[]], %]
):
{"localhost/127.0.0.1"}
หากคุณเริ่มต้นที่จะได้รับอย่างจริงจังกับเรื่องนี้คุณจะต้องอ่านกวดวิชาทอดด์ Gayley ที่http://reference.wolfram.com/mathematica/JLink/tutorial/Overview.html
หากคุณรู้จัก Groovy อยู่แล้ว (ซึ่งฉันคิดว่าคุณเป็นเช่นนั้นเนื่องจากคุณพูดถึง Groovy Console) ให้ใช้ groovysh หรือ groovyConsole ซึ่งรวมอยู่ใน Groovy distro หากคุณมีไหแบบกำหนดเองที่ต้องการนำเข้าคุณสามารถเขียนไฟล์แบตช์ที่เริ่มต้น groovysh / groovyConsole พร้อมกับที่เพิ่มลงใน classpath คุณยังสามารถทำได้
this.class.classLoader.rootLoader.addURL(new URL("file:///path to file"))
จากภายในเชลล์เพื่อบรรจุขวดอื่น ๆ
ฉันเคยใช้ Jython เมื่อหลายปีก่อนเพื่อทำสิ่งที่คุณต้องการ ในฐานะส่วนหนึ่งของสคริปต์การสร้างของฉันฉันได้สร้างไฟล์ jython.bat และ. py ที่กำหนดเองซึ่งรวมคลาสพา ธ แบบเต็มสำหรับโปรเจ็กต์ที่ฉันกำลังทำงานอยู่ ด้วยวิธีนั้นเมื่อฉันเริ่ม Jython มันจะมีรหัสทั้งหมดและมันจะเปิด Spring ขึ้นมาเพื่อให้ฉันเล่นเกมในระบบถ่ายทอดสด คุณสามารถทำสิ่งเดียวกันกับ Groovy, JRuby, BeanShell และอื่น ๆ
คุณสามารถสคริปต์ java โดยใช้ jruby http://kenai.com/projects/jruby/pages/CallingJavaFromJRuby
IDE ส่วนใหญ่มีหน้าต่างที่เรียกว่า "โหมดทันที" ซึ่งจะช่วยให้คุณประเมินโค้ดจาวาได้ทันที
DrJavaเป็น IDE เพื่อการศึกษาที่มีบานหน้าต่าง REPL
มีปลั๊กอิน Eclipse ด้วย แต่มันไม่ได้ผลสำหรับฉัน ฉันคิดว่ามันยังไม่ได้รับการอัปเดตในขณะนี้ ดังนั้นสิ่งที่ฉันทำโดยทั่วไปคือเปิดหน้าต่าง DrJava ไว้สำหรับคำถาม
EclipseShell อาจดีเช่นกัน แต่ฉันยังไม่ได้ใช้
มี IDE ง่ายๆที่เรียกว่าDrJavaที่มีคอนโซลการโต้ตอบ มันทำงานได้ตามที่ฉันคาดหวัง เพียงโหลดไฟล์และเริ่มโต้ตอบกับวัตถุในนั้น
มี REPL ออนไลน์: http://www.javarepl.com/console.html
กำลังพิมพ์เพิ่มเติมเพื่อให้ครบจำนวนอักขระ ...
สำหรับ java 8 มี nudge4j ดูhttps://github.com/lorenzoongithub/nudge4j
... และความสวยงามก็คือคุณสามารถนำร่องแอปพลิเคชันของคุณจากเบราว์เซอร์
JPadเป็น Java scratchpad ที่มี REPL ในตัว:
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>
นอกจากนี้ยังฉลาดในการทิ้งคอลเลกชันรายการแผนที่ ฯลฯ และอนุญาตให้แสดงผลเป็นตารางหรือแผนภูมิ:
Java 9 ให้ JShell
jshell> println( "Print me!")
jshell> Print me!
Jython, JIRBสำหรับ JRuby, Groovy (groovyconsole et al) และ Beanshell เป็นตัวเลือกที่ใช้งานได้ทั้งหมด
ฉันใช้InteractiveConsole
สำหรับ Jython มันใช้งานได้ดีในแอพจริงๆ