为什么以及如何使用 JShell?

Why and how do you use JShell?

我看了几个 JShell 教程,但我仍然不明白最重要的部分:我为什么要使用 JShell?

这里是 Oracle 所说的:

"You can test individual statements, try out different variations of a method, and experiment with unfamiliar APIs within the JShell session".

是的,很好,但是对于所有这些我都可以使用 IDE。我明白,REPL 应该使代码评估更快。但是,使用 Sysout 在虚拟的 Hello World 项目中测试 IDE 中的一段代码肯定不会更慢吗?

事实上,IDEs 提供自动完成功能,及早检测错误,我可以通过单击鼠标检查 method/class 的实现。这一切应该使 IDE 中的代码测试比在 JShell 中更快?

我错过了什么? 有人可以给我几个用例,其中使用 JShell 比使用 IDE 更好吗? 你们是怎么使用 JShell 的?

虽然我真的会鼓励你继续阅读 The Java Shell 动机和目标。

但要稍微动手回答你的问题,我真的很高兴知道你在 IDE 上尝试这个时所花的时间和你将遵循的程序。所以,这些很少,你去吧:-

1. 我最近了解到 Java 9 为集合引入了重载的便利工厂方法,然后很好奇它们是做什么的以及我是如何制作的使用它们。

步骤

-> Type 'jshell' on command prompt (assuming JAVA_HOME is set to JDK9's bin)
-> Type 'List.o'
-> Press Tab (completes the `of`) 
-> Tab displays all signatures 
-> Tab starts reading the documentation from first

2. 坚持代码的语法怎么样?如果您在上图中注意到 List 的初始化甚至懒得关心存储它的变量、终止分号等

3. 您能多快找出您将要执行的某段代码抛出的异常?所以,这里有一个用例,我想创建一个 Map 的字符串(水果名称)到字符串(它们的颜色),然后在后期向它添加更多的水果并省略我的那些颜色不确定。最后得到所有红色水果的清单。当然,由于这些天我正在学习 Java 9,因此我会尝试使用与 Java9.

中一样多的 API

虽然您会尝试在 IDE 中添加所有这些 (^^) 代码,但您自己会注意到最终实现 [= 的所有这些特征所花费的时间16=]

PS:

  • Robert presented Jshell here 详细介绍了 JShell 如何有效。

  • 在执行上述所有操作时,请记住,成为 IDE.

  • 并不是 Jshell 的目标
  • 所有这些,一般来说,通过绕过 "code -> compile -> execute" 循环的编译阶段,用一种语言进行简单的实验。