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