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 :-)

Antworten:


53

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


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.


ein bisschen synthetisch, aber das ist die Antwort, die ich bevorzuge!
Mariotomo


9

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


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


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 .


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




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


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.