有没有像Python的交互式REPL模式,但对于Java?

有没有像Python的交互式REPL模式,但对于Java? 所以,我可以,例如,在窗口中键入InetAddress.getAllByName( localHostName ) ,并立即获得结果,没有所有这个公共静态void nightmare()的东西?

您也可以使用Groovy控制台 。 这是一个交互式控制台,你可以做你想做的事情。 由于Groovy也包含了来自Java核心平台的类,所以你也可以使用这些类。

编辑

它看起来像这样:

Groovy的屏幕截图

Eclipse有这个function,虽然它不是一个循环。 这就是所谓的“剪贴簿页面”。 我想这个比喻应该是你有一个剪贴簿,你收集一些代码片段。

无论如何,为了使它工作,在Eclipse中打开一个项目(你的剪贴簿页面将与一个项目相关 – 当项目拥有的东西时,Eclipse喜欢它)。

然后:

  1. 在项目导航器窗口中,select一个文件夹存在于你的项目中的某个地方。
  2. select菜单File – > New – > Other,或点击Control-N。
  3. selectJava – > Java运行/debugging – >剪贴簿页面。
  4. 点击“下一步”,然后给它一个文件名,然后点击“完成”。

现在你有一个剪贴簿页面。 键入一些代码,也许这样:

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

然后用鼠标select文本,然后点击Control-U或从上下文菜单中select“Execute”。 代码将运行,输出将显示在控制台上。

您还可以键入expression式,select它并从上下文菜单中select“显示”。 它会评估expression式并打印它的types。 例如,在1 + 2上运行显示将打印(int) 3

BeanShell是一个小型,免费,可embedded的Java源解释器,具有对象脚本语言function,用Java编写。 BeanShelldynamic地执行标准的Java语法,并通过普通的脚本方便的方式来扩展它,比如松散的types,命令,和像Perl和JavaScript那样的方法闭包。 您可以交互使用BeanShell进行Java实验和debugging,并以新的方式扩展您的应用程序。 脚本Java适用于各种各样的应用程序,包括快速原型,用户脚本扩展,规则引擎,configuration,testing,dynamic部署,embedded式系统甚至Java教育。

http://www.beanshell.org/

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

您可以使用Eclipse Scrapbook页面。

在Eclipse中创build一个剪贴簿页面。 在你的项目中,新build – >其他 – >剪贴簿页面。

在文件中,input一些文本,select它,然后按Ctrl-U,然后你就可以开始了。

要pipe理您的导入,请右键单击页面,然后select设置导入,您可以在其中select导入包或单个类。 这是持久的,并保存在页面中。

老问题,但现在有更好的答案(2013年5月) – java-REPL! 它在github上可用,也可以在java-repl网站上进行快速一次性testing。

如果您抓住git hub代码并运行ant来生成工件,则可以使用以下小脚本来轻松使用它:

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

自从find这个项目我可能每天使用它5次。 请享用!

似乎没有人提到Java(6,7)发布了一个名为jrunscript的REPL控制台。 这是语言不可知的(所以可以使用Jython,JRuby等)。 它默认为默认捆绑的JavaScript(Rhino),和其他语言一样,您可以访问类path中可用的所有包/对象。

作为Groovy的替代方法,请尝试Beanshell: http : //www.beanshell.org/

它更像Java,允许您直接使用Java语法。

Jython是一个python实现,它可以让你检查Java对象并与之交互。

 >>> 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。

Albert Latacz的 Java-REPL运行良好。

您可以直接从您的浏览器尝试它: http : //www.javarepl.com/console.html

源代码在这里可用,它有一个体面的Intelli-J插件。

https://github.com/albertlatacz/java-repl

Groovy控制台可以让你做到这一点。 它实际上是试图testinggroovy代码,但由于groovy是Java的超集,所以它也允许纯Java的东西。

我刚刚进入控制台:

 InetAddress.getAllByName('localhost') 

并按CTRL-R,然后返回:

 groovy> InetAddress.getAllByName('localhost') Result: [localhost/127.0.0.1] 

斯卡拉还提供了一个交互式控制台。 我可以通过完全限定InetAddress来使用它来获得expression式的结果,如下所示:

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

这是OpenJDK 9的一部分!

一个名为JShell的REPL(由Oracle开发)已经作为JDK 9的一部分发布。

只需下载JDK 9,然后启动bin/jshell

JShell的屏幕截图

资源

  • blogs.oracle.com:JShell内部
  • DZone:Java 9(Part 2):JShell分步
  • OpenJDK项目Kulla
  • Java增强build议, JEP 222:jshell:Java Shell(Read-Eval-Print Loop)

虽然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 – input评估,你会得到

 {<<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的教程。

如果您已经知道Groovy(我假设您这么做了,因为您提到了Groovy控制台),那么只需使用Groovy发行版中包含的groovysh或groovyConsole即可。 如果您有要导入的自定义JAR,则可以编写一个启动groovysh / groovyConsole的batch file以及添加到类path的batch file。 你也可以做到这一点

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

从壳内加载其他jar子。

我几年前曾经使用过Jython来做你正在问的问题。 作为我的构build脚本的一部分,我生成了一个自定义jython.bat和.py文件,其中包含我正在处理的项目的完整类path。 这样,当我开始Jython的时候,它将拥有所有可用的代码,并且它会引起Spring让我在实际的系统中缠住东西。 你可以用Groovy,JRuby,BeanShell等做同样的事情

是的,有: http : //www.scravy.de/blog/2012-02-27/a-read-eval-print-loop-for-java.htm

大多数IDE都有一个名为“即时模式”的窗口,它允许您即时评估Java代码。

您可以看看BlueJ ,它是一个交互式Java开发环境,用于教授OOP,而不是象Eclipse或NetBeans这样的完整IDE。 无论如何,玩这个游戏真好玩。

您可以通过一系列Java教程在YouTube上看到它。

DrJava是包含REPL窗格的教育IDE。

还有一个Eclipse插件,但它并没有为我工作。 我认为它只是一段时间没有更新。 所以我通常会做一个DrJava窗口,为“如果我这样做会发生什么”问题开放。

EclipseShell可能也不错,但我还没有使用它。

Beanshell 2

有一个叫DrJava的简单的IDE,它有一个Interactions控制台。 它工作正如我所料。 只需加载一个文件,并开始与其中的对象进行交互。

有一个在线REPL: http : //www.javarepl.com/console.html

键入更多以达到字符限制…

对于Java 8,有nudge4j。 请参阅https://github.com/lorenzoongithub/nudge4j

nudge4j java repl

…和美是你可以试用你的应用程序从browte

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> 

倾销collections,列表,地图等也是很明智的,并允许将它们呈现为表格或图表:

在这里输入图像说明

Java 9提供了JShell。

 jshell> println( "Print me!") jshell> Print me! 

Jython,JRuby的JIRB ,Groovy(groovyconsole等)和Beanshell都是可行的select。

我已经使用InteractiveConsole进行Jython,它在应用程序中确实很好地工作。