Java9新特性系列(JShell)

題圖:by pixel2013 From pixabay

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:


    進(jìn)入shell
  • 幫助:


    幫助
  • 基本使用:


    基本使用
  • Java表達(dá)式
    JShell終端還可以自己計(jì)算Java表達(dá)式渣淤。字符串連接、方法回調(diào)吉嫩、算法价认,諸如此類


    Java表達(dá)式
  • 分號(hào)對(duì)于純語(yǔ)句是可選的:


    分號(hào)對(duì)于純語(yǔ)句可選
  • 導(dǎo)入指定的包


    導(dǎo)入指定的包
  • 向前引用
    你在定義方法時(shí)可以引用其他方法或變量,且這些方法或變量?jī)H會(huì)在一段時(shí)間后被定義

  • Tab鍵自動(dòng)補(bǔ)全代碼


    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ú)限可能惠奸。


    REPL網(wǎng)絡(luò)
  • 保存和加載工作空間

    • 列出當(dāng)前session中所有有效的代碼片段


      代碼片段
    • 列出當(dāng)前session中所有創(chuàng)建過(guò)的變量


      創(chuàng)建過(guò)的變量
    • 列出當(dāng)前session中所有創(chuàng)建過(guò)的方法


      創(chuàng)建過(guò)的方法
  • 使用外部編輯器來(lái)編寫java代碼

/edit add
  • 從外部文件加載源代碼
/open xxx.java
  • 沒(méi)有受檢異常/編譯時(shí)異常


    沒(méi)有受檢異常

如果你一直擔(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)了尘分?趕緊試試吧~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市丸氛,隨后出現(xiàn)的幾起案子培愁,更是在濱河造成了極大的恐慌,老刑警劉巖缓窜,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件定续,死亡現(xiàn)場(chǎng)離奇詭異谍咆,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)私股,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門摹察,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人倡鲸,你說(shuō)我怎么就攤上這事供嚎。” “怎么了峭状?”我有些...
    開(kāi)封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵克滴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我优床,道長(zhǎng)劝赔,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任胆敞,我火速辦了婚禮着帽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘竿秆。我一直安慰自己启摄,他們只是感情好稿壁,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布幽钢。 她就那樣靜靜地躺著,像睡著了一般傅是。 火紅的嫁衣襯著肌膚如雪匪燕。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天喧笔,我揣著相機(jī)與錄音帽驯,去河邊找鬼。 笑死书闸,一個(gè)胖子當(dāng)著我的面吹牛尼变,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播浆劲,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼嫌术,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了牌借?” 一聲冷哼從身側(cè)響起度气,我...
    開(kāi)封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎膨报,沒(méi)想到半個(gè)月后磷籍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體适荣,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年院领,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了弛矛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡栅盲,死狀恐怖汪诉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谈秫,我是刑警寧澤扒寄,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站拟烫,受9級(jí)特大地震影響该编,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜硕淑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一课竣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧置媳,春花似錦于樟、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至寥袭,卻和暖如春路捧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背传黄。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工杰扫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人膘掰。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓章姓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親识埋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子凡伊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348