PythonのインタラクティブなREPLモードのようなものはありますが、Java用ですか? たとえば、InetAddress.getAllByName( localHostName )
この public static void nightmare() のすべてがなくても、ウィンドウに入力してすぐに結果を取得できるようにするには?
29 に答える
edit Java 9以降、JShellがあります
元の答えは次のとおりです
Groovy Consoleも使用できます。やりたいことができるインタラクティブなコンソールです。Groovy にはコア Java プラットフォームのクラスも含まれているため、それらのクラスも使用できます。
次のようになります。
ループではありませんが、Eclipse にはこれを行う機能があります。それは「スクラップブックページ」と呼ばれています。コードの小さなスニペットを集めたスクラップブックを持っているようなものだと思います。
とにかく、それを機能させるには、Eclipse でプロジェクトを開きます (Scrapbook ページはプロジェクトに関連付けられます。Eclipse は、プロジェクトが所有するものを好んで使用します)。
それで:
- プロジェクト ナビゲーター ウィンドウで、プロジェクト内のどこかに存在するフォルダーを選択します。
- メニューの [ファイル] -> [新規] -> [その他] を選択するか、Control-N を押します。
- Java -> Java Run/Debug -> Scrapbook Page を選択します。
- [次へ] をクリックし、ファイル名を指定して [完了] をクリックします。
これでスクラップブックのページができました。次のようなコードを入力します。
System.out.println(System.getProperties());
次に、マウスでテキストを選択し、Control-U を押すか、コンテキスト メニューから [実行] を選択します。コードが実行され、出力がコンソールに表示されます。
式を入力して選択し、コンテキスト メニューから [表示] を選択することもできます。式を評価し、その型を出力します。たとえば、Display on1 + 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 Scrapbook ページを使用できます。
Eclipse で Scrapbook ページを作成します。あなたのプロジェクトでは、New->Other->Scrapbook ページ。
ファイルにテキストを入力し、それを選択して ctrl-U を押すだけです。
インポートを管理するには、ページを右クリックして [インポートの設定] を選択します。ここで、パッケージまたは単一のクラスのインポートを選択できます。これは永続的で、ページとともに保存されます。
Java (6、7) が という REPL コンソールを出荷していることについては、まだ誰も言及していないようjrunscript
です。言語に依存しません (Jython、JRuby などで使用できます)。これは、デフォルトでバンドルされている JavaScript (Rhino) にデフォルト設定され、他の言語と同様に、クラスパスで利用可能なすべてのパッケージ/オブジェクトにアクセスできます。
これは OpenJDK 9 の一部です!
JShell (Oracle が開発)と呼ばれる REPLが JDK 9 の一部としてリリースされました。
JDK 9 をダウンロードして起動するだけbin/jshell
です。
資力
- blogs.oracle.com: JShell の内部
- DZone: Java 9 (パート 2): JShell のステップ バイ ステップ
- OpenJDK プロジェクトKulla
- Java Enhancement Proposal、JEP 222: jshell: Java シェル (Read-Eval-Print ループ)
Groovyの代わりに、Beanshellを試してください:http://www.beanshell.org/
これはよりJavaに似ており、Java構文を直接使用できます。
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])
Clojure は、使用できる REPL を提供します。
Scalaはインタラクティブなコンソールも提供します。次のように、InetAddress を完全に修飾することで、質問の式の結果を取得するために使用できました。
java.net.InetAddress.getAllByName("localhost")
Groovy コンソールを使用すると、それが可能になります。実際には、groovy コードを試してテストすることを目的としていましたが、groovy は Java のスーパーセットであるため、プレーンな Java のものも許可されます。
これをコンソールに入力しました:
InetAddress.getAllByName('localhost')
CTRL-R を押すと、次のように返されました。
groovy> InetAddress.getAllByName('localhost')
Result: [localhost/127.0.0.1]
JRuby、BeanShell、Julian Fleischer の REPLがありますが、Albert 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);
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"}
これに真剣に取り組み始める場合は、Todd Gayley のチュートリアル ( http://reference.wolfram.com/mathematica/JLink/tutorial/Overview.html ) を読むことをお勧めします。
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 などでも同じことができます。
DrJavaは、REPLペインを含む教育用IDEです。
Eclipseプラグインもありますが、うまくいきませんでした。しばらく更新されていないと思います。したがって、私が一般的に行うことは、「これを行うとどうなるか」という質問に対してDrJavaウィンドウを開いたままにすることです。
EclipseShellも良いかもしれませんが、私はまだそれを使用していません。
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>
また、コレクション、リスト、マップなどのダンプについてもスマートであり、それらをテーブルまたはチャートとしてレンダリングできます。
オンライン REPL があります: http://www.javarepl.com/console.html
文字数制限に達するまでさらに入力しています...
ほとんどの IDE には、Java コードをオンザフライで評価できる「即時モード」などと呼ばれるウィンドウがあります。
Jython、 JRuby 用のJIRB、Groovy (groovyconsole など)、および Beanshell はすべて実行可能なオプションです。
私はInteractiveConsole
Jython に を使用しましたが、アプリでうまく機能しました。