【问题标题】:Java's interactive shell like ipythonJava 的交互式 shell,如 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

标签: java shell


【解决方案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

      1. 获取jython(检查其运行情况jython -c 'import os; print "Python meets %s" % os.name'
      2. 获取readrline(如果是Mac sudo port install readline
      3. 放弃this blogjython documentation 的步骤以使java-readline 工作
      4. 所以你现在已经有了jythonreadline(jython 中的Ctrl+R 得到reverse-i-search,就像你从shell 知道的那样)。为了像你所知道的那样从ipython 中获得制表符完成,请按照this blog 的步骤进行休整
      5. 应该就是这样!如果你需要 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 控制台...

              【讨论】:

                猜你喜欢
                • 2011-07-24
                • 2012-06-01
                • 2017-11-24
                • 1970-01-01
                • 1970-01-01
                • 2022-01-10
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多