1.6 JDK9新增的jshell工具
1.6 JDK9新增的jshell具
JDK9
工具的一大改进就是提供了jshell
工具,它是一个REPL(Read-Eval-Print Loop)
工具,该工具是一个交互式的命令行界面,可用于执行Java
语言的变量声明、语句和表达式,而且可以立即看到执行结果。因此,我们可以使用该工具来快速学习Java
或测试Java
的新API
。
在没有jshell
时,开发者想要测试某个新功能或新API
,通常要先打开IDE
工具,然后新建一个测试项目,再新建一个类,最后才可以开始写代码来测试新功能或新API
。这显得很麻烦,而jshell
的出现解决了这个痛点。
jshell
位于JDK
安装目录的bin
路径下,如果读者按前面介绍的方式配置了PATH
环境变量,那么输入shell
命令应该即可进入shell
交互模式;如果系统提示找不到jshell
命令,那么肯定是环境变量配置错误。
查看jshell帮助信息
进入shell
交互模式后,可执行/help
来查看帮助信息:
1 | jshell> /help |
退出jshell
也可执行/exit
退出jshell
执行你希望测试的Java
代码,比如执行System.out.println("HelloWorld")
,jshell
不要求以分号结尾。
jshell常用命令
/list
:列出用户输入的所有源代码。/edit
:编辑用户输入的第几条源代码。比如/edit2
表示编辑用户输入的第2条源代码。jshell
会启动一个文本编辑界面让用户来编辑第2条源代码/drop
:删除用户输入的第几条源代码。/save
:保存用户输入的源代码。/vars
:列出用户定义的所有变量。/methods
:列出用户定义的全部方法/types
:列出用户定义的全部类型。
测试jshell
在jshell
界面中输入如下语句:
定义变量
1 | int a = 20 |
上面语句用于定义一个变量。接下来输入/vars
命令,即可看到shell
列出了用户定义的全部变量。系统生成如下输出:
查看变量
1 | jshell> /vars |
输出语句
在shell
界面中输入如下语句:
1 | System.out.println("HelloWorld!") |
运行效果如下:
1 | jshell> System.out.println("HelloWorld!") |
显示所有代码
1 | /list |
1 | jshell> /list |
这个输出结果又两个,前面的数字是id
,这个id是自增的,新增的命令或者修改的命令都会加1
修改之前的代码
1 | /edit id |
这里的id例如修改第2行
1 | /edit 2 |
jshell会启动一个图形化的编辑器让你来编辑这一行,如下图所示:
在这个弹出的编辑器中,将上面的代码
1 | System.out.println("HelloWorld!") |
修改为:
1 | System.out.println(a); |
然后点击Accept
按钮,然后点击Exit
退出.可以看到如下运行结果:
1 | jshell> /edit 2 |
删除某行代码
1 | /drop id |
例如删除上面的第二行代码:
1 | /drop 2 |
运行结果:
1 | jshell> /drop 2 |
可以看到,现在第二行代码,已经被删除掉了,但是前面的id不会
执行某行代码
1 | /id |
例如
cmd中临时使用JDK9
需求
我在使用旧版本的java8,但是如果我想使用Java9的新特性,例如jshell.
使用set命令设置临时的path环境变量
cmd
中的set
命令用于设置临时的环境变量,所以在path
环境变量的前面添加JDK9
安装路径下的bin
路径即可使用jshell
:
1 | set path=E:\java\java9\jdk-9\bin;%path% |
效果如下:
1 | G:\Desktop>echo %path% |
这样就可以在当前cmd中使用jshell,设置成功效果:
1 | G:\Desktop>jshell |