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):交互式解析器,一種命令行工具。它允許你無需使用類或者方法包裝來執(zhí)行Java語句。

  • 像Python和Scala之類的語言早就有交互式編程環(huán)境REPL了,以交互式的方式對語句和表達(dá)式進(jìn)行求值。開發(fā)者只需要輸入一些代碼,就可以在編譯前獲得對程序的反饋。而之前的Java版本要想執(zhí)行代碼,必須創(chuàng)建文件、聲明類、提供測試方法方可實現(xiàn)。

JShell的理念

即寫即得,快速運行

JShell的目標(biāo)

  • Java9中終于擁有了REPL工具:jShell。利用jShell在沒有創(chuàng)建類
    的情況下直接聲明變量,計算表達(dá)式,執(zhí)行語句。即開發(fā)時可以
    在命令行里直接運行java的代碼,而無需創(chuàng)建Java文件,無需跟
    人解釋”public static void main(String[] args)”這句廢話。
  • jShell也可以從文件中加載語句或者將語句保存到文件中。
  • jShell也可以是tab鍵進(jìn)行自動補全和自動添加分號。

JShell使用舉例

  • 進(jìn)入JShell:


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


    幫助
  • 基本使用:


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


    Java表達(dá)式
  • 分號對于純語句是可選的:


    分號對于純語句可選
  • 導(dǎo)入指定的包


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

  • Tab鍵自動補全代碼


    Tab鍵自動補全代碼
  • REPL網(wǎng)絡(luò)
    使用JShell時,我們不會受限于機器和網(wǎng)絡(luò)訪問,這帶來了一些有趣的機會。例如,想想把它當(dāng)做一個終端來與服務(wù)器交流,遠(yuǎn)程連接到服務(wù)器并且從外面控制一些參數(shù)。另一個選擇是查詢數(shù)據(jù)庫,這里真的是有無限可能。


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

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


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


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


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

/edit add
  • 從外部文件加載源代碼
/open xxx.java
  • 沒有受檢異常/編譯時異常


    沒有受檢異常

如果你一直擔(dān)心受檢異常會毀掉你的REPL經(jīng)歷,無需再擔(dān)心,JShell在后臺為你隱藏好了

  • 退出shell
/exit
  • JShell API

JShell除了可以作為單獨的JDK工具,還可以提供一個API,它能對外部調(diào)用開放所有的功能

  • 在運行中修改定義

你可以重新聲明變量、方法或者類,而無需擔(dān)心原始的聲明。一旦你這樣操作了,就會收到一個信息提示你發(fā)生了什么,但除此之外一切照舊。

怎么樣?是不是心動了?趕緊試試吧~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容