Java 的交互式 shell 类似于 ipython。

43

我对Java还比较陌生,希望能够像我用IPython学Python一样使用交互式shell来学习Java。

我尝试了几个交互式shell,如beanshell、jython、jythonconsole和JyConsole等,但大部分都没有像IPython那样的选项补全功能。是否有类似于IPython适用于Java的工具呢?


4
+1 是因为我不确定是否存在这样的 shell,但这会很有用。在阅读第二段之前,我差点就发布了 BeanShell。 - Michael Myers
JShell是自Java 9以来JDK的标准组件。尝试在终端上运行$jshell - Gayan Weerakutti
9个回答

10

groovysh:

http://groovy.codehaus.org/Groovy+Shell

  • JLine提供了丰富的跨平台编辑行编辑、历史和自动补全功能。
  • ANSI颜色(提示符、异常跟踪等)。
  • 简单而强大的命令系统,具有在线帮助、用户别名支持等功能。
  • 用户配置文件支持。

9
如果你想要一个与Java一起使用的交互式选项,可以尝试使用Dr Java或JGrasp,它们都提供与IDLE for Python相同的交互式选项,并且是基于IDE的调试器。我更喜欢JGrasp而不是Dr Java。它们还有一个Dr Python,所以如果你习惯了Dr Java,也可以用它来编写Python代码。
此外,Dr Java还有一个功能,可以选择初学者、中级、高级和完整版Java,以限制在学习过程中可以做什么。我从来不使用这个功能,因为我认为限制语言部分没有意义,但我猜有些老师会在教学时利用它。

8

你可能不会经常使用交互式的java,因为该语言强烈倾向于编译。最好的方法可能就是获取一个好的集成开发环境(IDE),如eclipse,并开始使用断点和调试器。


5
我经常使用Beanshell,最近是Beanshell 2(http://code.google.com/p/beanshell2/)。然而,我还没有找到带有代码自动补全功能的版本。 - Matthew Flaschen
1
公平地说,Python 也是一种面向对象的语言,iPython(等等)工作得很好。我同意不需要始终指定类型(如在 iJava 中)会更方便,但这并不是交互式 shell 无法工作的原因。 - Oli
你应该用IntelliJ代替Eclipse。 - Bruno Gustav Lanevik
@Bruno:我对IDE不太感兴趣,我的最爱是从不使用IDE。因此,我并没有真正推荐任何一个IDE。 - SingleNegationElimination
最好的方法可能就是使用像Eclipse这样的优秀IDE,通过断点和调试器开始工作。在什么情况下不推荐使用Eclipse? - Bruno Gustav Lanevik
显示剩余2条评论

3

Gayan Weerakutti在评论中已经提到了我的想法,这也应该是正确的答案: JShell从版本9开始是JDK的一部分。 在您的终端上尝试jshell命令。 查看来自Oracle的文档以获取更多信息。


3

你使用了哪个BeanShell?是旧版本吗? 看一下this,他们声称提供自动完成功能。


我现在使用Eclipse而不是Netbean,因为我还编写其他语言,如Python和C ++。 我只是从http://www.beanshell.org/使用BeanShell。 - Ross

2

我认为我找到了一个足够好的替代品: JPype。JPype允许Python程序完全访问Java类库。使用JPype和IPython,我可以在导入类之后使用所有Java函数,并且对于Java类具有非常好的制表符完成功能。


1

虽然我同意 TokenMacGuy 的说法:

最好的方法可能就是使用一个好的 IDE,比如 Eclipse。
但是我也来自一个交互式 shell 工具必不可少的环境。所以我也建议你直接使用像 ipython 这样的工具,从 jython/JPype 中直接使用。

这可以通过使用 JPype(由 i-freaker 建议)或通过 jython 实现:

  1. 获取 jython(检查它是否运行正常:jython -c 'import os; print "Python meets %s" % os.name'
  2. 获取 readline(如果是 Mac,执行命令:sudo port install readline
  3. 按照 这篇博客 或者 jython 文档 的步骤来让 java-readline 正常工作
  4. 现在你已经拥有了带有 readlinejython(在 jython 中按下 Ctrl+R 可以得到类似于 shell 的 reverse-i-search)。为了获得像在 ipython 中一样的 tab 补全功能,请按照 这篇博客 的步骤操作
  5. 就是这样!如果你需要 ipython 0.10 的补丁,可以从 这里 获取。

0

IntelliJ IDEA带有具有选项卡完成的Groovy控制台。

打开它:工具 -> Groovy控制台...


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接