Java 的交互式 shell,如 ipython

Posted

技术标签:

【中文标题】Java 的交互式 shell,如 ipython【英文标题】:Java's interactive shell like ipython 【发布时间】:2010-10-31 19:45:18 【问题描述】:

我对 Java 还是很陌生,想使用交互式 shell 学习 Java,就像我使用 IPython 学习 Python 一样。

我尝试了一些交互式 shell,例如 beanshell、jython、jythonconsole 和 JyConsole。他们中的大多数没有像 IPython 那样的制表符完成。有没有类似 IPython for java 的东西?

【问题讨论】:

+1 因为我不确定这样的外壳是否存在,但它会很有用。 (在我花点时间阅读第二段之前,我几乎发布了 BeanShell。) JShell 是自 Java 9 以来 JDK 的标准组件。尝试在终端上运行 $jshell 【参考方案1】:

你用过什么豆壳?旧的? 看this 他们声称提供完成

【讨论】:

我现在使用 eclipse 而不是 netbean,因为我也在编写其他语言,如 python 和 c++。我只是使用来自beanshell.org的beanshell 【参考方案2】:

您可能不会从交互式使用 java 中获得太多用处,因为该语言强烈地面向编译。最好的方法可能只是获得一个不错的 IDE,例如 eclipse,然后开始使用断点和调试器。

【讨论】:

我实际上经常使用 Beanshell,最近是 beanshell 2 (code.google.com/p/beanshell2)。但是,我还没有找到各种代码完成。 我并不是说交互式地使用 Java 是不可能的,甚至没有用处。我已经使用并喜欢一些 C++ 解释器来完成各种任务。但是由于这些语言在设计时并未考虑到这种用途,因此您无法获得与 Python 等更多面向交互的语言相同的实用性。 如果您尝试过 beanshell,它会将 java 扩展为更像脚本语言,您不必在其中声明变量类型。还有很多优点,比如闭包,但我刚刚开始使用它。 平心而论,Python 也是一种 OO 语言,而 iPython (et al) 可以很好地工作。我同意不需要一直指定类型会更方便(就像在 iJava 中那样),但这并不是交互式 shell 不起作用的原因。 你应该用intellij替换eclipse。【参考方案3】:

我想我找到了一个足够好的替代方案:JPype。 JPype 允许 python 程序完全访问 java 类库。使用 JPype 和 IPython,我可以使用所有 java 函数,同时为 java 类提供非常好的选项卡完成。(虽然在导入类之后)

【讨论】:

【参考方案4】:

如果您想要与 java 一起使用的交互式选项,请尝试使用 Dr Java 或 JGrasp,它们都提供与 Python 的 IDLE 相同的交互式选项,加上作为带有调试器的完全基于 IDE,我更喜欢 JGrasp 而不是 Dr Java。他们还有一个 Dr Python,所以如果你习惯了 Dr Java,你也可以将它与 Python 一起使用。

Dr Java 还有一个功能,您可以从初级、中级、高级和完整 Java 中进行选择,以限制您在学习该语言时可以做的事情。我从不使用该功能,因为我认为限制部分语言没有意义,但我猜有些老师在教学生时会使用它。

【讨论】:

【参考方案5】:

虽然我同意 TokenMacGuy 的说法:

最好的方法可能只是获得一个不错的 IDE,例如 eclipse
因为我也来自交互式 shell 等工具必不可少的环境。所以我也可以建议你直接使用ipython 之类的工具,直接来自jython/JPype。

这可以通过 jython 的 i-freaker 的建议来实现或使用JPype:

    获取jython(检查其运行情况jython -c 'import os; print "Python meets %s" % os.name') 获取readrline(如果是Mac sudo port install readline) 放弃this blog 或jython documentation 的步骤以使java-readline 工作 所以你现在已经有了jythonreadline(jython 中的Ctrl+R 得到reverse-i-search,就像你从shell 知道的那样)。为了像你所知道的那样从ipython 中获得制表符完成,请按照this blog 的步骤进行休整 应该就是这样!如果你需要 ipython 0.10 的补丁,你可以get it from here。

【讨论】:

【参考方案6】:

groovysh

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

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

【讨论】:

【参考方案7】:

看看https://github.com/Bachmann1234/java9_kernel,你可以为 IPython 安装一个 Java 内核并使用它(也可以通过笔记本)。

【讨论】:

【参考方案8】:

Gayan Weerakutti 已经在评论中提到了我认为正确的答案: JShell 从版本 9 开始就是 JDK 的一部分。 在您的终端上尝试jshell。 查看docs from Oracle about it。

【讨论】:

【参考方案9】:

IntelliJ IDEA 有一个带有 tab 补全功能的 groovy 控制台。

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

【讨论】:

以上是关于Java 的交互式 shell,如 ipython的主要内容,如果未能解决你的问题,请参考以下文章

CentOS7安装ipython

python------ipython交互工具

IPython 安装方法

IPython介绍

jupyter 和 ipython的区别

50个关于IPython的奇技淫巧?