資源
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

浙公網安備 33010602011771號