Forum: PC-Programmierung java shell für Linux gesucht


von Uhu U. (uhu)


Lesenswert?

Ich suche eine Möglichkeit, Java-Befehle in einer interaktiven Umgebung 
unter Linux auszuprobieren - so ähnlich, wie irb oder pry für Ruby.

Unter Linux Mint 17 gibt es Bean Shell (bsh und xbsh). Nur leider 
funktioniert in bsh das primitivste Editing nicht - Textkorrekturen sind 
fast unmöglich - und xbsh, die X-Version zeigt ein Startsymbol mitten 
auf dem Schirm an und das wars dann.

Kennt jemand so was ähnliches, das funktioniert?

von Michael S. (e500)


Lesenswert?

Sowas wie die JShell aus Java 9?

Wieso nicht diese nehmen?

: Bearbeitet durch User
von ui (Gast)


Lesenswert?

ich nutze zwar sowas nicht, aber kann das wirklich funktionieren? Java 
muss doch erst "kompiliert" werden, also sollte sowas doch nicht gehen. 
Auch wenn ich an das Modell (main funktion innerhalb einer Klasse) 
denke, wird das wohl nix werden.

von Uhu U. (uhu)


Lesenswert?

ui schrieb:
> kann das wirklich funktionieren?

Man kann jede compilierbare Sprache auch direkt interpretieren.

von ui (Gast)


Lesenswert?

Uhu U. schrieb:
> ui schrieb:
>> kann das wirklich funktionieren?
>
> Man kann jede compilierbare Sprache auch direkt interpretieren.

Also parsen und simulieren.

von Uhu U. (uhu)


Lesenswert?

Das gabs schon in der Computer-Urzeit bei Lisp und ist als 
eval-print-loop bekannt.

Ein interaktiver Java-Interprter hat den eval-print-loop in seiner 
eigenen main. In dieser Umgebung laufen dann die Eingaben, nachdem sie - 
in der Umgebung des Interpreters - befehlsweise compiliert wurden.

von Rolf M. (rmagnus)


Lesenswert?

Aber ist das bei Java nicht arg umständlich? Soweit ich weiß, darf Code 
doch nur in Klassen stehen. Das heißt, um irgendwas auszuführen, muss 
ich immer erstmal in der Shell on the fly eine Klasse implementieren.

von Scelumbro (Gast)


Lesenswert?

Die einzig richtige Anwort. In der ersten Anwort. Den Rest kann man 
getrost ignorieren.

Michael S. schrieb:
> Sowas wie die JShell aus Java 9?
>
> Wieso nicht diese nehmen?

von Uhu U. (uhu)


Lesenswert?

Rolf M. schrieb:
> Das heißt, um irgendwas auszuführen, muss
> ich immer erstmal in der Shell on the fly eine Klasse implementieren.

Nein, musst du nicht. Der Interpreter compiliert im Kontext des 
eval-print-Loops. Das Compilat besteht aus einen java-Befehl und wird 
anschließend im Kontext des eval-print-loops ausgeführt. Zum Schluss 
wird das Ergebnis ausgegeben und das Spiel geht von vorne los.

Das ist ein inkrementeller Compiler - der wird auch gerne in IDEs 
benutzt, weil sich damit kleine Änderungen sehr schnell compilieren 
lassen. (Der Compiler muss dann eben die geänderten Codes wieder 
"irgendwie" in den Gesamtcode rein frickeln - im Prinzip so ähnlich, wie 
man früher "Rucksäcke" in den Maschinencode gepatcht hat, um Fehler zu 
korrigieren.)

Der Preis sind die Symboltabellen, die zwischen den Compilerläufen 
aufgehoben werden müssen.

: Bearbeitet durch User
von Noch einer (Gast)


Lesenswert?

> Die einzig richtige Antwort.

Nix da! Ein echter Java Programmierer schiesst grundsätzlich mit 
Interkontinentalraketen auf Spatzen.

Nimm die Display-View aus dem Eclipse Debugger.

von Der Schwenn (Gast)


Lesenswert?

beanshell ist dein Freund.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.