Java9新特性系列(JShell)

題圖:by pixel2013 From pixabay

JShell是什麼?

引入JDK官方的Summaryjava

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語句。shell

  • 像Python和Scala之類的語言早就有交互式編程環境REPL了,以交互式的方式對語句和表達式進行求值。開發者只須要輸入一些代碼,就能夠在編譯前得到對程序的反饋。而以前的Java版本要想執行代碼,必須建立文件、聲明類、提供測試方法方可實現。數據庫

JShell的理念

即寫即得,快速運行express

JShell的目標

  • Java9中終於擁有了REPL工具:jShell。利用jShell在沒有建立類 的狀況下直接聲明變量,計算表達式,執行語句。即開發時能夠 在命令行裏直接運行java的代碼,而無需建立Java文件,無需跟 人解釋」public static void main(String[] args)」這句廢話。
  • jShell也能夠從文件中加載語句或者將語句保存到文件中。
  • jShell也能夠是tab鍵進行自動補全和自動添加分號。

JShell使用舉例

  • 進入JShell: 編程

    進入shell

  • 幫助: 服務器

    幫助

  • 基本使用: 微信

    基本使用

  • Java表達式 JShell終端還能夠本身計算Java表達式。字符串鏈接、方法回調、算法,諸如此類 網絡

    Java表達式

  • 分號對於純語句是可選的: session

    分號對於純語句可選

  • 導入指定的包

    導入指定的包

  • 向前引用 你在定義方法時能夠引用其餘方法或變量,且這些方法或變量僅會在一段時間後被定義

  • Tab鍵自動補全代碼

    Tab鍵自動補全代碼

  • REPL網絡 使用JShell時,咱們不會受限於機器和網絡訪問,這帶來了一些有趣的機會。例如,想一想把它當作一個終端來與服務器交流,遠程鏈接到服務器而且從外面控制一些參數。另外一個選擇是查詢數據庫,這裏真的是有無限可能。

    REPL網絡

  • 保存和加載工做空間

    • 列出當前session中全部有效的代碼片斷

      代碼片斷

    • 列出當前session中全部建立過的變量

      建立過的變量

    • 列出當前session中全部建立過的方法

      建立過的方法

  • 使用外部編輯器來編寫java代碼

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

若是你一直擔憂受檢異常會毀掉你的REPL經歷,無需再擔憂,JShell在後臺爲你隱藏好了

  • 退出shell
/exit
複製代碼
  • JShell API

JShell除了能夠做爲單獨的JDK工具,還能夠提供一個API,它能對外部調用開放全部的功能

  • 在運行中修改定義

你能夠從新聲明變量、方法或者類,而無需擔憂原始的聲明。一旦你這樣操做了,就會收到一個信息提示你發生了什麼,但除此以外一切照舊。

怎麼樣?是否是心動了?趕忙試試吧~

微信公衆號: 碼上論劍
請關注個人我的技術微信公衆號,訂閱更多內容
相關文章
相關標籤/搜索