PythonのインタラクティブREPLモードのようなものはありますが、Java用ですか?


92

PythonのインタラクティブREPLモードのようなものはありますが、Java用ですか?たとえば、InetAddress.getAllByName( localHostName )ウィンドウに入力してすぐに結果を取得できるように、この静的なvoidのナイトメア()の静的なことは何もありませんか?



回答:


64

編集 Java 9以降はJShellがあります

元の答えは次のとおりです

Groovyコンソールを使用することもできます。それはあなたがやりたいことができるインタラクティブなコンソールです。GroovyにはコアJavaプラットフォームのクラスも含まれているため、それらのクラスも使用できます。

次のようになります。

Groovyのスクリーンショット


このスクリーンショットは、imageshackには存在しません。

どのようなグルーヴィーコンソールについて特に素敵なのは、より多くのパッケージがデフォルトでインポートされていることである、あなたは非常に多くのimport文を記述する必要はありませんので(例えばjava.utilの*。)
ドナル・

2
面倒すぎてGroovyをインストールできない場合は、このコンソールのオンラインバージョンがgroovyconsole.appspot.comにあります。一部のJDKライブラリは使用できません(I / Oやなど System.exit())が、ほとんどの目的にはそれで十分です。
ドナル・

これはクラスを受け入れませんそれは正常ですか?class test{public static void test(){System.out.println('test')}}
ライム

52

Eclipseにはこれを行う機能がありますが、ループではありません。「スクラップブックページ」と呼ばれています。たとえは、コードの小さな断片を集めるスクラップブックを持っていることだと思います。

とにかく、それを機能させるために、Eclipseでプロジェクトを開きます(Scrapbookページはプロジェクトに関連付けられます-プロジェクトが物を所有する場合、Eclipseはそれを好みます)。

次に:

  1. プロジェクトナビゲーターウィンドウで、プロジェクトのどこかに存在するフォルダーを選択します。
  2. メニューの「ファイル」->「新規」->「その他」を選択するか、Control-Nを押します。
  3. Java-> Java Run / Debug-> Scrapbook Pageを選択します。
  4. 「次へ」を押して、ファイル名を入力し、「完了」を押します。

これでスクラップブックのページができました。次のようなコードを入力します。

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

次に、マウスでテキストを選択し、Ctrl-Uキーを押すか、コンテキストメニューから[実行]を選択します。コードが実行され、出力がコンソールに表示されます。

式を入力して選択し、コンテキストメニューから[表示]を選択することもできます。式を評価し、その型を出力します。たとえば、Display on 1 + 2を実行すると、が印刷されます(int) 3


1
それをありがとう。Beanshellはスプラッシュでタイムアウトになりましたが、これは完全に機能します。
Bayard Randel

3
私は長い間Eclipseを使用してきましたが、これについては知りませんでした。ありがとう!
Tobold

28

BeanShellは、Javaで記述された、オブジェクトスクリプト言語機能を備えた、小さな無料の埋め込み可能なJavaソースインタープリターです。BeanShellは標準のJava構文を動的に実行し、PerlやJavaScriptのようなルーズタイプ、コマンド、メソッドクロージャなどの一般的なスクリプトの便利さで拡張します。BeanShellをインタラクティブに使用して、Javaの実験とデバッグを行ったり、アプリケーションを新しい方法で拡張したりできます。Javaのスクリプトは、ラピッドプロトタイピング、ユーザースクリプト拡張、ルールエンジン、構成、テスト、動的展開、組み込みシステム、さらにはJava教育など、さまざまなアプリケーションに適しています。

http://www.beanshell.org/

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


冗長性の低い構文のためのJythonおよびJRuby対話型シェルもあります。
bakkal 2010

1
BeanShellはアクティブにbeanshell 2として維持されています-code.google.com/p/beanshell2 – hshib '30
10/30

コマンドラインからbeanshellを実行する簡単な例は、ここにあります
Brad Parks

@hshib:現在Githubにあり、最後のコミットは2013年からです。これ「アクティブに維持」されていません
MartinSchröder

@MartinSchröder、そのコメントは2013年にWAS
でした

19

Eclipse Scrapbookページを使用できます。

EclipseでScrapbookページを作成します。プロジェクトで、「新規」->「その他」->「スクラップブック」ページ。

ファイルにテキストを入力して選択し、ctrl-Uを押してください。

インポートを管理するには、ページを右クリックして[インポートの設定]を選択します。ここで、パッケージまたは単一のクラスをインポートすることを選択できます。これは永続的であり、ページとともに保存されます。


3
便利かもしれませんが、スクラップブックページは永続的なセッションではないため、REPLとしてはあまり機能しません。
MHarris

19

古い質問ですが、今より良い答えがあります(2013年5月)-java-REPL!これはgithubから入手でき、java-repl Webサイトからライブで入手して、1回限りのテストをすばやく行うこともできます。

gitハブコードを取得して実行antし、アーティファクトを生成すると、次のような小さなスクリプトで簡単に使用できるようになります。

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

このプロジェクトを見つけて以来、おそらく1日に5回使用しています。楽しい!


オンラインreplのリンクはjavarepl.com/term.htmlのようになり、古いリンクはJavaエラーを表示するだけです。
Tony

13

Java(6、7)にはREPLコンソールと呼ばれるが付属しているとのことjrunscriptです。これは言語に依存しません(したがって、Jython、JRubyなどで使用できます)。デフォルトではJavaScript(Rhino)がデフォルトでバンドルされており、他の言語と同様に、クラスパスで利用可能なすべてのパッケージ/オブジェクトにアクセスできます。



11

Groovyの代わりに、Beanshellを試してください:http : //www.beanshell.org/

これはJavaに似ており、Java構文を直接使用できます。


beanshellはもう保守されていますか?
rogerdpack

1
BeanShellはbeanshell 2としてアクティブに維持されています-code.google.com/p/beanshell2 – hshib '30
10/30

@hshib:いいえ、最後のgithubの上でコミット2013年からである
マーティン・シュローダー

11

Jythonは、Javaオブジェクトを検査および操作できるPython実装です。

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



7

グルーヴィーコンソールは、あなたがそれを行うことができます。これは実際にはgroovyコードを試してテストすることを目的としていましたが、groovyはJavaのスーパーセットであるため、プレーンJavaのものも使用できます。

これをコンソールに入力しました:

InetAddress.getAllByName('localhost')

CTRL-Rを押すと、次のように戻りました。

groovy> InetAddress.getAllByName('localhost')

Result: [localhost/127.0.0.1]

7

Scalaはインタラクティブコンソールも提供しています。次のように、InetAddressを完全に修飾することで、質問の式の結果を取得するために使用できました。

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

6

一方でJRubyのBeanShellのジュリアン・フライシャーのREPLがあるアルバートLataczのREPLは最新かつ有効であるように思われます。

簡単なクラス定義で試してみましたが、うまくいきました。

$ 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コードでJavaとスクリプトにアクセスできるようにします:

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

Shift-Enterを押して評価すると、

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

次に、MathematicaのMap関数を使っtoStringて返されたオブジェクトを呼び出すことができます:

#@toString[]& /@ %

結果を取得するには(またはあまり明確でない構文を使用するには、Map[Function[obj, obj@toString[]], %]):

{"localhost/127.0.0.1"}

これに真剣に取り組むようになったら、http: //reference.wolfram.com/mathematica/JLink/tutorial/Overview.htmlにあるTodd Gayleyのチュートリアルを読むことをお勧めします。


2

Groovy(Groovy Consoleについて触れたので知っていると思います)をすでに知っている場合は、Groovyディストリビューションに含まれているgroovyshまたはgroovyConsoleを使用してください。インポートしたいカスタムjarがある場合は、クラスパスに追加されたgroovysh / groovyConsoleを起動するバッチファイルを書き込むことができます。これもできます

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

シェル内から他のjarをロードします。

私は数年前にJythonを使用して、あなたが求めていることだけを行いました。ビルドスクリプトの一部として、作業中のプロジェクトの完全なクラスパスを含むカスタムjython.batおよび.pyファイルを生成しました。そうすれば、Jythonを起動したときに、すべてのコードが利用可能になり、Springが起動してライブシステムの機能をいじることができます。Groovy、JRuby、BeanShellなどでも同じことができます。


groovyシェルを使用できることはわかっていますが、GroovyにはJavaとまったく同じセマンティクスがなく、型チェックもありません。したがって、Groovyシェルで機能しているように見えるJavaコードの一部を使用して、コンパイルエラーや異なる実行時の動作が発生する可能性があります。
ドナル

また、groovyはすべてのlibを〜/ .groovy / libにロードします。そこにコンテンツをコピーするか、シンボリックリンクを使用することができます
Jason



1

ほとんどのIDEには、「即時モード」のようなウィンドウがあり、その場でJavaコードを評価できます。


Eclipseには、私が望むものに近い「表示」ビューがあります。問題は、実行中のアプリケーションのコンテキストにある必要があることです。アプリを実行し、ブレークポイントで停止する必要があります。そうしないと、必要なものを入力できません。
Yoni Roit

@YoniRoit IMHOコマンドラインREPLよりも「表示」+デバッグモードのほうが好きです。私は昔、REPL w / Pythonを使用していたので、両方を実行しました。ユニットテストを記述してブレークポイントを設定し、ユニットテストに機能するコードを貼り付けながら、目的のコンテキストでプレイする方がはるかに良いと思います。単純なREPLで正確なコンテキストを取得することは、単体テストと言うよりもはるかに困難です。
アダム・ゲント

1

EclipseやNetBeansのような完全なIDEではなく、OOPを教えることを目的としたインタラクティブなJava開発環境であるBlueJご覧ください。とにかく遊んでいて楽しいです。

YouTubeの一連のJavaチュートリアルで、実際の動作を確認できます。


これは面白い。Bluejはop replのようなものです。replを使用してメソッドのプロトタイプを作成するのと同じように、現在replを使用しているものにはあまり役立ちませんが、ooデザインのプロトタイプを作成するために使用できます。
Bill K

1

DrJavaは、REPLペインを含む教育用IDEです。

Eclipseプラグインもありますが、私にはうまくいきませんでした。しばらく更新されていないようです。したがって、私が通常行うことは、「これを実行するとどうなるか」という質問に対してDrJavaウィンドウを開いたままにすることです。

EclipseShellも良いかもしれませんが、まだ使用していません。



1

インタラクションコンソールを備えたDrJavaと呼ばれるシンプルなIDEがあります。それは私が期待するとおり正確に機能します。ファイルをロードして、その中のオブジェクトとの対話を開始するだけです。




1

JPadは、REPLが組み込まれたJavaスクラッチパッドです。

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、JRubyのJIRB、Groovy(groovyconsoleなど)、およびBeanshellはすべて実行可能なオプションです。

私はInteractiveConsoleJythonのを使用しましたが、アプリで本当にうまくいきました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.