使用 jshell 快速验证想法

364 阅读2分钟

这是我参与2022首次更文挑战的第14天,活动详情查看:2022首次更文挑战

几年前因为工作的原因,曾经做过一小段时间的 Java 编程培训讲师,教授入门新手的第一课,最重要的就是快速完成一个作品,带来成就感和学习的自信,这个作品通常是 Hello World。无论是我作为新手学习 Java 编程的时候,还是作为讲师教学生的时候,都会对 Java 语言有一个疑问:为什么为了简单地输出一行文本,我需要做这么多事?

配置开发环境、编写好几行不知道是什么作用的代码、编译代码、运行程序。对于很多新手,这一套操作还没有完成就产生挫败感了。

后来我才知道,Java 9 之后的版本都有一个叫做 jshell 的工具,jshell 的意思就是 Java Shell。它提供了一个交互式的编程环境,可以用来做一些简单的演示,或者验证一些简单的想法。

如果你已经配置了 Java 的开发环境,可以直接在命令行输入 jshell 进入:

CleanShot 2022-02-13 at 23.02.12@2x.png

进入之后,命令行窗口会被 jshell 接管。刚进入的时候,会有两行提示信息,一个是当前的 jshell 版本号,第二个是操作提示。

我们按照提示输入 /help intro,结果如下:

CleanShot 2022-02-13 at 23.03.55@2x.png

直接输入 /help 还可以得到 jshell 中可以使用的命令列表,这些命令都是以 / 开头的,比如:/exit 可以退出 jshell。

使用 jshell 也很简单,比如,要输出一个 Hello world 字符串,不需要写一个类和入口方法,直接写输出指令就可以了,如下:

jshell> System.out.println("Hello, World!");
Hello, World!

如果你的代码出现了语法错误,也会有友好的错误提示:

jshell> System.out.println("Hello, World!"");
|  错误:
|  未结束的字符串文字
|  System.out.println("Hello, World!"");
|                                    ^

jshell 中不仅可以写这样单行的指令,也可以声明变量并使用变量进行其他操作:

jshell> int x = 2;
x ==> 2

jshell> x * x
$4 ==> 4

以上的代码中,第一个指令声明了一个 int 类型的变量 x,它的值是 2,第二个指令则计算了 x 的平方,得到的值是 4。从以上可以看出,没执行一个指令,jshell 都会反馈执行的结果,这对编程初学者非常友好。

除此之外,jshell 中也支持多行代码的指令比如循环和判断:

jshell> for (int i = 0; i < 5; i++) {
   ...>     System.out.println(i);
   ...> }
0
1
2
3
4

这篇文章只是抛砖引玉,直接少了一些最简单的用法。因为我认为 jshell 最好的使用场景就是快速验证和演示,对于更高级的用法,比如加载外部的类,个人认为几乎不会使用 jshell 来做。