javascript
repl java9_Java 9抢先体验:与JShell进行动手实践– Java REPL
repl java9
從今天開始,如何開始使用Java 9的最酷功能之一?
上周末,我終于開始嘗試使用Java 9的早期訪問版本。第一站是JShell,它也被稱為Project Kulla。 首先讓我鼓起勇氣嘗試早期訪問Java版本的原因。
那就對了。 Java 9的正式發布日期當前設置為2016年9月,但是早期訪問版本已經具有功能完整的JShell版本。 它仍在開發中,并且有一些古怪之處,但這從來沒有阻止過我們。
新話題:9的Java早期訪問:一個動手的Session JShell -該#Java REPL http://t.co/F8cQ9X5dQM pic.twitter.com/JoWR6i8PSz
— Takipi(@takipid) 2015年7月7日
有趣的事實1: Kulla項目是開發JShell的團隊的內部名稱。 庫拉(Kulla)是美索不達米亞神話中的建筑神的名字,他在建筑工作完成后被驅逐。 暗示Kulla用例是一種學習工具嗎?
那么,JShell是什么呢?
JShell / Project Kulla是第一個正式的Java REPL(Read-Eval-Print-Loop),這是一個命令行工具,使您可以自己運行Java語句,而不必將它們包裝在類或方法中。 與Python的解釋器或其他本機支持REPL的其他JVM語言(例如Scala和Groovy)類似。 在Java 9即將發布的功能中,它絕對是更有趣的功能之一。 要查看您附近的JDK即將推出的更多激動人心的功能(除了Project Jigsaw!),您可以閱讀有關Java 9的前5個功能的前一篇文章, 這些內容將改變您的編碼方式 。 到目前為止,如果您想使用Java進行REPL,則可以使用諸如repl.it之類的替代方法 ,它具有多語言支持或非官方的Java REPL項目。 但是,在Java 9中,REPL與langtools軟件包一起捆綁在JDK中。
有趣的事實2: 另一個帶有神話名稱的OpenJDK項目是Valhalla項目。 針對Java 9以外的產品,并致力于諸如值類型和統一泛型的功能。 絕對是壞蛋。
但是,夠了,讓我們啟動它,看看它能做什么。 在下面的簡短終端編碼中,我們將使用JShell v0.61進行快速測試(OSX 10.10.3的一個已知問題是提示與某些輸出混合在一起,所以請不要介意,它將可能很快就會解決):
啟動并使用JShell
回顧一下我們剛剛看到的內容:JShell的一些最有趣的功能
** [8/7/2015]更新:使用Oracle Java語言架構師Brian Goetz的注釋進行編輯
1.在裸露的語句上分號是可選的
您好JShell! 憑借REPL的快速和靈活特性,我們可以放輕松一點,而不必在聲明的末尾添加分號:
不,這里沒有分號
實際上,這是我們圍繞未來的Java功能進行的一項調查中的一個受歡迎的回答。 當然,分號可以作為終止符或分隔符保留在這里。 REPL允許一次輸入一個空的表達式和語句,因此分號對于Jshell上的終止符用例而言是可選的。
2. REPL網絡
使用JShell,我們不僅限于機器 ,還可以訪問網絡,這帶來了一些有趣的機會。 例如,考慮將其用作與服務器通信的終端,遠程連接到服務器并從外部控制某些參數。 另一個選擇是查詢您的數據庫,這里的可能性確實是無限的。
顯示通過JShell獲取HTTP標頭的簡單示例
3.幫助! 保存和加載工作區
除了運行和評估Java語句外,JShell還支持一系列命令來幫助您了解和瀏覽REPL環境。 您可以保存和加載工作區(哪種類型的Java使Java類似于腳本語言),然后在執行所有代碼后返回命令提示符(實際上您可以在終端記錄中看到我提到的OS X錯誤)。 。
其他有用的命令包括列出所有當前可用的變量和方法,查看所有命令歷史記錄以及列出到目前為止所編寫的所有代碼(有時仍然有些怪異)。
這是當前可用命令的完整列表:
JShell的/幫助
4.沒有檢查過的異常
如果您擔心被檢查的異常會破壞您的REPL體驗–不用擔心,JShell會在后臺為您包裝這些異常。 在下面的示例中,迫使我們捕獲IOException的原因沒有引起注意。 在這里,我們在不處理IOException的情況下讀取和打印文件:
我們確實看到彈出一個檢查異常的情況是,當我們嘗試運行線程并在其中使用Thread.sleep()時。 由于它是一個完整的方法,而不是一個裸語句,因此它必須是完全有效的Java:
繼續進行一些其他未在終端錄制中使用的功能:
5. Java表達式
關于JShell終端的另一件事是,它還可以在其上評估Java表達式。 字符串連接,方法調用,算術等。 基本上,您可以在System.out.println(/ *此處* /)中包裝的所有內容。 正如您可能已經在其他評估中注意到的那樣,它將立即將結果放入其自己的變量中并打印出來:
6.轉發參考
JShell對正向引用非常漂亮,因此您可以定義引用其他方法或變量的函數,這些方法或變量只會在以后定義。 這是AdoptOpenJDK的REPL教程中的示例:
7. JShell API
除了用作獨立的JDK工具外,JShell還將提供一個API,可將其所有功能開放給外部使用。 這意味著外部工具可以連接并使用JShell的功能,突然間出現了一些有趣的可能性,例如將其包含在Eclipse,IntelliJ或Netbeans等IDE中。 該API更具創造性的用例可能包括使用它來擴展靜態分析功能,自動測試甚至可能掛接到實時JVM的工具。
8.隨時更改定義
您可以重新聲明變量,方法和類,而不必擔心原始聲明。 完成此操作后,系統會提示您一條消息,讓您知道發生了什么,但除此之外–一切照舊。
獎勵:您需要的只是愛
如果您深入研究/ repl / samples文件夾,則會發現這個可愛的示例,它將使用Swing吸引您3個小小的心:
Java
如何獨自上手?
首先,請查看倫敦Java社區(LJC)的“ 采用OpenJDK:入門工具包”中的說明。 以下是對幫助您起步的步驟的簡要概述,尤其是如果您以前從未嘗試過早期訪問JDK版本時:
對于OS X用戶的重要說明:在運行compile.sh和run.sh之前,請編輯腳本并將#!/ usr / bin / sh更改為#!/ bin / sh 。
如果您對此過程有任何疑問,請在下面的評論部分中發布它們,我們將竭盡所能。
結論
令人興奮的是,庫拉項目(Project Kulla)即將走向成熟,它將具有功能完善的狀態。 JShell有廣泛的用例,但最重要的是,它將幫助新老開發人員快速測試他們的新技能。 無論是基本的Java還是新的庫,您都剛剛開始動手。 而且,JShell使Java與具有這些功能的語言相提并論已有一段時間了,甚至還可以通過正式的API和流暢的命令行體驗進一步推動Java的發展。
翻譯自: https://www.javacodegeeks.com/2015/07/java-9-early-access-a-hands-on-session-with-jshell-the-java-repl.html
repl java9
總結
以上是生活随笔為你收集整理的repl java9_Java 9抢先体验:与JShell进行动手实践– Java REPL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 总工程师备案管理办法(总工程师备案)
- 下一篇: 同步助手安卓可以同步苹果吗(同步助手安卓