![題圖:by pixel2013 From pixabay](https://i.iter01.com/images/f35ddb1b187e36874ba88878d7d3754f4191eeb61d72449c817cc61ee6b20c5f.jpg)
JShell是什麼?
引入JDK官方的Summary:
Provide an interactive tool to evaluate declarations, statements, and expressions of the Java programming language, together with an API so that other applications can leverage this functionality.
-
JShell是Java的REPL工具(Read-eval-print-loop):互動式解析器,一種命令列工具。它允許你無需使用類或者方法包裝來執行Java語句。
-
像Python和Scala之類的語言早就有互動式程式設計環境REPL了,以互動式的方式對語句和表示式進行求值。開發者只需要輸入一些程式碼,就可以在編譯前獲得對程式的反饋。而之前的Java版本要想執行程式碼,必須建立檔案、宣告類、提供測試方法方可實現。
JShell的理念
即寫即得,快速執行
JShell的目標
- Java9中終於擁有了REPL工具:jShell。利用jShell在沒有建立類 的情況下直接宣告變數,計算表示式,執行語句。即開發時可以 在命令列裡直接執行java的程式碼,而無需建立Java檔案,無需跟 人解釋”public static void main(String[] args)”這句廢話。
- jShell也可以從檔案中載入語句或者將語句儲存到檔案中。
- jShell也可以是tab鍵進行自動補全和自動新增分號。
JShell使用舉例
-
進入JShell:
-
幫助:
-
基本使用:
-
Java表示式 JShell終端還可以自己計算Java表示式。字串連線、方法回撥、演算法,諸如此類
-
分號對於純語句是可選的:
-
匯入指定的包
-
向前引用 你在定義方法時可以引用其他方法或變數,且這些方法或變數僅會在一段時間後被定義
-
Tab鍵自動補全程式碼
-
REPL網路 使用JShell時,我們不會受限於機器和網路訪問,這帶來了一些有趣的機會。例如,想想把它當做一個終端來與伺服器交流,遠端連線到伺服器並且從外面控制一些引數。另一個選擇是查詢資料庫,這裡真的是有無限可能。
-
儲存和載入工作空間
-
列出當前session中所有有效的程式碼片段
-
列出當前session中所有建立過的變數
-
列出當前session中所有建立過的方法
-
-
使用外部編輯器來編寫java程式碼
/edit add
複製程式碼
- 從外部檔案載入原始碼
/open xxx.java
複製程式碼
- 沒有受檢異常/編譯時異常
如果你一直擔心受檢異常會毀掉你的REPL經歷,無需再擔心,JShell在後臺為你隱藏好了
- 退出shell
/exit
複製程式碼
- JShell API
JShell除了可以作為單獨的JDK工具,還可以提供一個API,它能對外部呼叫開放所有的功能
- 在執行中修改定義
你可以重新宣告變數、方法或者類,而無需擔心原始的宣告。一旦你這樣操作了,就會收到一個資訊提示你發生了什麼,但除此之外一切照舊。
怎麼樣?是不是心動了?趕緊試試吧~
![Java9新特性系列(JShell)](https://i.iter01.com/images/f62eab539d8d2789d31e1582ab401ec47482123e3e42c4c6a542489d90500287.jpg)