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 |