10

I went through a couple of tutorials for JShell and I still do not understand the most important part: why would I even use JShell?

Here what Oracle says:

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

Yes, great, but for all those things I can just use an IDE. I do understand, that REPL should make code evaluation faster. However, testing a snippet of code in IDE in a dummy Hello World project with Sysout is for sure not slower?

In fact, IDEs provide autocomplete, detect errors early and I can checkout an implementation of a method/class with a mouse click. This all should make code testing in IDE faster than in JShell?

What am I missing? Can someone give me a couple of use cases, where using JShell is better then using IDE? How do you guys use JShell?

4

1 回答 1

8

虽然我真的鼓励你继续阅读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 中添加所有这些 (^^) 代码,但您自己会注意到最终实现不可变映射静态工厂方法的所有这些特性所需的时间。

PS

  • Robert 在这里介绍了 Jshell,详细介绍了 JShell 如何发挥作用。

  • 当您执行上述所有操作时,请记住,Jshell 的目标不是成为 IDE。

  • 通常,所有这些都通过绕过“代码 -> 编译 -> 执行”循环的编译阶段来对一种语言进行简单的实验。

于 2017-10-28T01:54:29.110 回答