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):交互式解析器哩簿,一種命令行工具。它允許你無(wú)需使用類或者方法包裝來(lái)執(zhí)行Java語(yǔ)句傲宜。
像Python和Scala之類的語(yǔ)言早就有交互式編程環(huán)境REPL了,以交互式的方式對(duì)語(yǔ)句和表達(dá)式進(jìn)行求值姻锁。開(kāi)發(fā)者只需要輸入一些代碼肮雨,就可以在編譯前獲得對(duì)程序的反饋。而之前的Java版本要想執(zhí)行代碼梭稚,必須創(chuàng)建文件颖低、聲明類、提供測(cè)試方法方可實(shí)現(xiàn)弧烤。
JShell的理念
即寫即得枫甲,快速運(yùn)行
JShell的目標(biāo)
- Java9中終于擁有了REPL工具:jShell。利用jShell在沒(méi)有創(chuàng)建類
的情況下直接聲明變量,計(jì)算表達(dá)式想幻,執(zhí)行語(yǔ)句粱栖。即開(kāi)發(fā)時(shí)可以
在命令行里直接運(yùn)行java的代碼,而無(wú)需創(chuàng)建Java文件脏毯,無(wú)需跟
人解釋”public static void main(String[] args)”這句廢話闹究。 - jShell也可以從文件中加載語(yǔ)句或者將語(yǔ)句保存到文件中。
- jShell也可以是tab鍵進(jìn)行自動(dòng)補(bǔ)全和自動(dòng)添加分號(hào)食店。
JShell使用舉例
-
進(jìn)入JShell:
-
幫助:
-
基本使用:
-
Java表達(dá)式
JShell終端還可以自己計(jì)算Java表達(dá)式渣淤。字符串連接、方法回調(diào)吉嫩、算法价认,諸如此類
-
分號(hào)對(duì)于純語(yǔ)句是可選的:
-
導(dǎo)入指定的包
向前引用
你在定義方法時(shí)可以引用其他方法或變量,且這些方法或變量?jī)H會(huì)在一段時(shí)間后被定義-
Tab鍵自動(dòng)補(bǔ)全代碼
-
REPL網(wǎng)絡(luò)
使用JShell時(shí)自娩,我們不會(huì)受限于機(jī)器和網(wǎng)絡(luò)訪問(wèn)用踩,這帶來(lái)了一些有趣的機(jī)會(huì)。例如忙迁,想想把它當(dāng)做一個(gè)終端來(lái)與服務(wù)器交流脐彩,遠(yuǎn)程連接到服務(wù)器并且從外面控制一些參數(shù)。另一個(gè)選擇是查詢數(shù)據(jù)庫(kù)姊扔,這里真的是有無(wú)限可能惠奸。
-
保存和加載工作空間
-
列出當(dāng)前session中所有有效的代碼片段
-
列出當(dāng)前session中所有創(chuàng)建過(guò)的變量
-
列出當(dāng)前session中所有創(chuàng)建過(guò)的方法
-
使用外部編輯器來(lái)編寫java代碼
/edit add
- 從外部文件加載源代碼
/open xxx.java
-
沒(méi)有受檢異常/編譯時(shí)異常
如果你一直擔(dān)心受檢異常會(huì)毀掉你的REPL經(jīng)歷,無(wú)需再擔(dān)心恰梢,JShell在后臺(tái)為你隱藏好了
- 退出shell
/exit
- JShell API
JShell除了可以作為單獨(dú)的JDK工具佛南,還可以提供一個(gè)API,它能對(duì)外部調(diào)用開(kāi)放所有的功能
- 在運(yùn)行中修改定義
你可以重新聲明變量嵌言、方法或者類共虑,而無(wú)需擔(dān)心原始的聲明。一旦你這樣操作了呀页,就會(huì)收到一個(gè)信息提示你發(fā)生了什么妈拌,但除此之外一切照舊。
怎么樣蓬蝶?是不是心動(dòng)了尘分?趕緊試試吧~