是否有类似python的交互式REPL模式的功能,但适用于Java?这样一来,例如,我可以键入InetAddress.getAllByName( localHostName )
一个窗口并立即获得结果,而无需所有这些公共的static void nightmare()事情?
是否有类似python的交互式REPL模式的功能,但适用于Java?这样一来,例如,我可以键入InetAddress.getAllByName( localHostName )
一个窗口并立即获得结果,而无需所有这些公共的static void nightmare()事情?
Answers:
编辑 由于Java 9有JShell
原始答案如下
您也可以使用Groovy Console。它是一个交互式控制台,您可以在其中进行所需的操作。由于Groovy还包括来自核心Java平台的类,因此您也可以使用这些类。
看起来像这样:
System.exit()
),但对于大多数目的,它应该足够了。
class test{public static void test(){System.out.println('test')}}
Eclipse具有执行此操作的功能,尽管这不是循环。它称为“剪贴簿页面”。我以此类推,假设您有一本剪贴簿,其中收集了一些代码片段。
无论如何,要使其工作,请在Eclipse中打开一个项目(您的Scrapbook页面将与一个项目相关联-当项目拥有东西时,Eclipse会喜欢它)。
然后:
现在您有一个剪贴簿页面。输入一些代码,例如:
System.out.println(System.getProperties());
然后用鼠标选择文本,然后按Control-U或从上下文菜单中选择“执行”。代码将运行,并且输出将出现在控制台上。
您也可以键入一个表达式,选择它,然后从上下文菜单中选择“显示”。它将评估表达式并打印其类型。例如,运行Display on 1 + 2
将打印(int) 3
。
BeanShell是一个小型的,免费的,可嵌入的Java源解释器,具有使用Java编写的对象脚本语言功能。BeanShell动态执行标准Java语法,并使用常见的脚本编写便利进行扩展,例如松散类型,命令和方法闭包(如Perl和JavaScript)。您可以交互地使用BeanShell进行Java实验和调试,以及以新方式扩展应用程序。脚本Java适用于各种应用程序,包括快速原型制作,用户脚本扩展,规则引擎,配置,测试,动态部署,嵌入式系统,甚至Java教育。
http://www.beanshell.org/manual/syntax.html#Standard_Java_Syntax
您可以使用Eclipse Scrapbook页面。
在Eclipse中创建一个Scrapbook页面。在您的项目中,新建->其他->剪贴簿页面。
在文件中,输入一些文本,将其选中并按ctrl-U,然后就可以了。
要管理导入,请在页面中右键单击并选择“设置导入”,您可以在其中选择导入软件包或单个类。这是持久性的,并与页面一起保存。
旧问题,但是现在有一个更好的答案(2013年5月)-java-REPL!它可以在github上获得,也可以在java-repl网站上实时获得,以进行一次性测试。
如果获取git hub代码并运行ant
以生成工件,则可以使用以下小脚本轻松使用它:
#!/bin/sh
java -jar /home/rdahlgren/scripts/javarepl-dev.build.jar
自从找到这个项目以来,我可能每天使用5次。请享用!
作为JDK 9的一部分,发布了一个称为JShell的REPL (由Oracle开发)。
只需下载JDK 9,然后启动bin/jshell
。
作为Groovy的替代方法,请尝试Beanshell:http : //www.beanshell.org/
它更像Java,可让您直接使用Java语法。
Albert Latacz的 Java-REPL 效果很好。
您可以从以下浏览器直接尝试:http : //www.javarepl.com/term.html
源代码在这里可用,它具有不错的Intelli-J插件。
Clojure提供了您可以使用的REPL。
虽然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"}
如果您开始对此感到认真,则需要阅读位于http://reference.wolfram.com/mathematica/JLink/tutorial/Overview.html的 Todd Gayley的教程。
如果您已经了解Groovy(假设您已经提到了Groovy Console,那么我想您会知道的),那么只需使用Groovy发行版中包含的groovysh或groovyConsole。如果您有要导入的自定义jar,则可以编写一个批处理文件,以添加到类路径中的那些文件启动groovysh / groovyConsole。您也可以这样做
this.class.classLoader.rootLoader.addURL(new URL("file:///path to file"))
从壳内加载其他罐子。
几年前,我曾经使用Jython来完成您的要求。作为构建脚本的一部分,我生成了一个自定义的jython.bat和.py文件,其中包含我正在处理的项目的完整类路径。这样,当我启动Jython时,它将拥有所有可用的代码,并且它将带动Spring使我能够在实时系统中进行操作。您可以使用Groovy,JRuby,BeanShell等执行相同的操作。
您可以使用jruby http://kenai.com/projects/jruby/pages/CallingJavaFromJRuby编写Java脚本
大多数IDE都有一个称为“立即模式”的窗口,该窗口使您可以即时评估Java代码。
有一个在线REPL:http : //www.javarepl.com/console.html
输入更多内容以达到字符数限制...
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>
在转储集合,列表,地图等方面也很聪明,并允许将它们呈现为表格或图表:
Java 9提供了JShell。
jshell> println( "Print me!")
jshell> Print me!