资源
JShell(Java Shell)
参考资料:
以下大部分内容均来自该官方的JShell User Guide。
1.功能
Java 9引入了JShell。JShell是一个Read-Eval-Print Loop (REPL)。Javaer终于可以不用羡慕Pythoner了。无需再为实验一些API、程序小片段而启动庞大的IDE。
只需执行jshell
,即可在控制台下进行实验。
2.启动
Windows下只要在path
变量中加入Java安装路径,如C:\Program Files\Java\jdk-9\bin
,即可在控制台下直接运行。换句话说只要在控制台下能执行Java 9的javac.exe
,java.exe
,就可在控制台下执行jshell.exe
。
3.基本使用
- 行尾的分号是可以省略的。
/list
为列出输入命令的列表,也可直接输入/l
。/2
表示执行列表上第2条语句。/edit 3
或/ed 3
,可编辑列表第3条命令。/help
,帮助。Ctrl+D
或/exit
,退出JShell。/Tab
,补全。例子,"test".subString(<Tab>
,查看方法签名、再按查看文档。Shift+Tab i
,导入相应的类。如,输入new JFrame
然后按Shift+Tab i
(先按Shitf+Tab,松开后再按i))即可跳出菜单询问如何处理。Shift+Tab v
,补全表达式。如,输入new JFrame("demo")
然后按Shift+Tab v
即可补全表达式。/open
, 打开文件
4.脚本(jsh)
官方文档中这样定义
A JShell script is a sequence of snippets and JShell commands in a file。
我觉得主要的好处就是:执行一个包含了java代码的脚本程序,不需要先编译然后再调用java
命令去执行。
4.1 建立脚本文件(.jsh)的方式
- 将当前在jshell中敲入的命令,直接保存。使用
/save test.jsh
- 直接用记事本新建一个
test.jsh
比如将下列代码放入test.jsh
文件:
String line = "c:/temp"
Path path = Paths.get(line);
if (Files.exists(path, LinkOption.NOFOLLOW_LINKS)){
Stream<Path> list = Files.list(path);
System.out.println("目录 "+ path+" 中的文件总数为 "+list.count());
}else{
System.out.println("目录 "+ path+ " 不存在!");
}
/exit
可以看到代码中不仅有Java代码还有jshell命令/exit
。
4.2 执行脚本
假设已定位到test.jsh
所在目录。
有两种执行脚本的方式:
- jshell下执行
/open test.jsh
- 在命令行下执行
jshell test.jsh
运行截图如下:
注意:实验过程中,发现脚本文件似乎不能在控制台下进行交互。即不能在脚本中使用Scanner sc = new Scanner(System.in);
处理输入。
最后
吐槽一下JShell。Java语言命令啥的都太长啦,JShell下的Content Assist又不够强大,真心不太适合写脚本。
Modular JDK
参考资料:
jigsaw