Gibt es eine Python-ähnliche interaktive Konsole für Java?

75

Ich habe in letzter Zeit viel Zeit mit Programmieren in Java verbracht, und eine Sache, die ich bei Skriptsprachen vermisse, war die Möglichkeit, sie in einer Konsole zu testen.

Um ein Java-Programm schnell zu testen, muss ich eine Datei bearbeiten, sie dann in Bytecode umwandeln und ausführen. Selbst mit einer IDE verliert sie nach dem 372. Mal ihren Spaß.

Ich würde gerne wissen, ob es ein Produkt gibt, das so etwas wie eine interaktive Konsole (ich wette, Sie benötigen einen JIT-Compiler) und eine automatische Vervollständigung (mit Relexivität, ich nehme an, es ist möglich) bietet.

Vielleicht ist das etwas sehr Häufiges, von dem ich einfach nichts weiß oder etwas völlig Unmögliches, aber es ist die schlimmste Frage :-)

e-satis
quelle

Antworten:

53

Ja; jshell , und davor sind einige enge Annäherungen Groovy , Clojure , Scala und die Bohnenschale .

Charlie Martin
quelle
1
Einverstanden. Ich verwende BeanShell über JDE in Emacs. Es ist alles andere als perfekt, bietet jedoch eine interaktive Konsole und eine angemessene Unterstützung für die Fertigstellung, sowohl in der Konsole als auch beim Bearbeiten Ihrer regulären Java-Dateien.
Julian Squires
In der Tat ist es sehr primitiv, aber viel besser als nichts. Danke an dich und danke an die Leute, die es codiert haben :-)
e-satis
3
Auch Scala mit Eclipse IDE-Plugin verfügt über eine interaktive Konsole für die Ausführung im REPL-Stil. Siehe scala-ide.org
Hendy Irawan
@ JulianSquires: Gibt es irgendwo eine Schritt-für-Schritt-Anleitung?
serv-inc
Ich habe dieses BeanShell-Setup seit vielen Jahren nicht mehr verwendet. Ich würde von emacswiki.org/emacs/JavaDevelopmentEnvironment ausgehen, wenn ich versuchen würde, es erneut einzurichten.
Julian Squires
13

Lustigerweise erhalten Sie eine interaktive Konsole mit Jython ! Sie erhalten nicht viel mehr Python-like.

Brian Agnew
quelle
ein bisschen synthetisch, aber das ist die Antwort, die ich bevorzuge!
Mariotomo
9

Probieren Sie das "Interaktionsfenster" von Dr. Java aus .

Harry
quelle
Ja, ich vermisse es wirklich. Jetzt wechsle ich zu Eclipse, weiß aber nicht, wie ich ein Interaktionsfenster in Eclipse erhalten soll.
Tony Chen
7

JShell ist jetzt Standard in Java 9. JShell-Einführung

user2144406
quelle
Dies ist jetzt (seit November) eine viel bessere Antwort als es aus den Abstimmungen hervorgeht, vielleicht sollte sie sogar bei e-satis akzeptiert werden.
TGar
Wie rufe ich jshell auf?
soMuchToLearn
5

Ein Ansatz, den ich bis zu einem gewissen Grad erfolgreich verwendet habe, ist das Debuggen in Eclipse und die Verwendung der Anzeigeansicht. Die Anzeigeansicht bietet Ihnen die Möglichkeit, den derzeit in der JVM ausgeführten Code durch Ausführen von Java-Anweisungen zu bearbeiten. Jedes Objekt, das an dem bestimmten Haltepunkt verfügbar ist, an dem Sie angehalten werden, befindet sich im Bereich der Anzeigeansicht. Dies ist zwar nicht genau das, wonach Sie suchen, bietet jedoch einige der Funktionen, die eine REPL für andere Programmierumgebungen bietet. Weitere Informationen finden Sie unter Debuggen mit der Eclipse-Plattform .

laz
quelle
Ich bevorzuge immer noch das Scala IDE Eclipse-Plugin. Wenn es jedoch nicht wünschenswert ist, ein Plugin zu installieren, ist der Debug-Ansatz dem REPL-Interpreter am nächsten, der in Eclipse JDT als "Funktion" integriert ist. :)
Hendy Irawan
Wie wird der Wert eines Ausdrucks in der Anzeigeansicht angezeigt? Wenn ich zum Beispiel etwas schreibe wie: String s = "Hello World", s1 = s.substring (3, 5); Woher weiß man den Wert von s1? Ich kann keinen Weg finden
zakmck
Sie können s1das Kontextmenü markieren und dann aufrufen. Dort befindet sich ein Eintrag mit der Bezeichnung Display, der das tut, was Sie wollen.
Laz
4

Sie können auch den interaktiven Scala-Interpreter ausführen.

stepancheg
quelle
2

Sie könnten an Groovy interessiert sein .

Patrick McDaniel
quelle
1

Jgrasp IDE hat eine interaktive Konsole, in der Sie testen können, ich benutze sie häufig, und es gibt auch eine Debug-Ansicht, die Variablen usw. anzeigt, nachdem Sie sie deklare haben.

Es ist OpenSoruce und Sie können eine Kopie unter http://www.jgrasp.org/ erhalten.

// Anders

Anders
quelle
Ich sah mich in JGrasp um, konnte aber keine interaktive Konsole finden
Casebash
0

Ich bin gelegentlich auf dasselbe Problem gestoßen und habe eine Teillösung. Ich behalte eine Datei (wie Charlie Martin sagte, Java benötigt seine Klassenkontexte), die kaum mehr als ein Testprogramm ist. In einem zweiten Fenster - einer Konsole - habe ich ein Skript, das ich ausführe und das die Änderungszeit der Quelldatei alle ein oder zwei Sekunden überprüft. Wenn sich die Quelle ändert, wird sie neu kompiliert (ich spiele normalerweise in C, aber ich habe dies auch mit Java gemacht) und das Ergebnis ausgeführt.

Es ist keine großartige Lösung, aber es ist eine schnelle einmalige und ich fand es sehr nützlich.

Sniggerfardimungus
quelle