jdk入门_JDK 9 REPL:入门
jdk入門(mén)
會(huì)議是聚會(huì)Java名人的好地方。 Devoxx France是與Java語(yǔ)言架構(gòu)師,前同事和老朋友Brian Goetz( @briangoetz )見(jiàn)面的一個(gè)機(jī)會(huì)。 我們談?wù)摿薐DK 9,而他全都熱衷于REPL。 他提到,盡管Java SE 9中有很多重要功能 ,例如模塊化和HTTP2客戶(hù)端 ,但該工具將是最常被談?wù)摰摹?該聲明之所以有意義,是因?yàn)樗鼘⒄嬲?jiǎn)化Java API的探索,原型開(kāi)發(fā),會(huì)議中的演示以及類(lèi)似任務(wù),并且更加簡(jiǎn)單。 這個(gè)博客來(lái)自我們?cè)谀抢锏挠懻撘约八麑?duì)REPL的強(qiáng)烈投票!
Read-Evaluate-Print-Loop在Lisp,Python,Ruby,Groovy,Clojure和其他語(yǔ)言中已經(jīng)存在了一段時(shí)間。 Unix shell是一個(gè)REPL,可以讀取shell命令,評(píng)估它們,打印輸出并返回循環(huán)以執(zhí)行相同的操作。
您可以在JEP 222中的JDK 9中閱讀有關(guān)REPL的全部信息。 JEP的摘要是:
提供一個(gè)交互式工具,該工具可以評(píng)估Java編程語(yǔ)言的聲明,語(yǔ)句和表達(dá)式:即,提供Java編程語(yǔ)言的讀取-評(píng)估-打印循環(huán)(REPL)。 另外,提供在其上構(gòu)建工具的API,從而使外部工具能夠提供此功能。 杰普222
JEP還明確闡明了動(dòng)機(jī):
沒(méi)有Foo類(lèi){public static void main(String [] args){…}}的儀式,學(xué)習(xí)和探索就變得簡(jiǎn)化了。 杰普222
JEP 222的目標(biāo)是將REPL與JDK 9一起提供,但openjdk.java.net/projects/jdk9并未將其列為“目標(biāo)”或“建議目標(biāo)”。 好像是一個(gè)文檔錯(cuò)誤:)
從JDK 9 build 61開(kāi)始,REPL未集成,需要單獨(dú)構(gòu)建。 最終,在發(fā)布JDK 9之前的某個(gè)時(shí)間,此工具將集成到內(nèi)部版本中。
讓我們看看在OSX上運(yùn)行它需要什么。 該博客遵循Java 9 REPL –入門(mén)指南來(lái)構(gòu)建和運(yùn)行REPL。 此外,它還提供了命令的完整日志輸出,這可能對(duì)某些人有幫助。
讓我們開(kāi)始吧!
安裝JDK 9
在OSX上設(shè)置JAVA_HOME的更多詳細(xì)信息在這里 。
檢出并安裝jline2
jline2是一個(gè)用于處理控制臺(tái)輸入的Java庫(kù)。 看看這個(gè):
workspaces> git clone git://github.com/jline/jline2.git Cloning into 'jline2'... remote: Counting objects: 6419, done. remote: Total 6419 (delta 0), reused 0 (delta 0), pack-reused 6419 Receiving objects: 100% (6419/6419), 3.23 MiB | 80.00 KiB/s, done. Resolving deltas: 100% (2945/2945), done. Checking connectivity... done.然后構(gòu)建它:
jline2> mvn install [INFO] Scanning for projects... Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/scm/maven-scm-provider-gitexe/1.8.1/maven-scm-provider-gitexe-1.8.1.pom Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/scm/maven-scm-provider-gitexe/1.8.1/maven-scm-provider-gitexe-1.8.1.pom (3 KB at 0.3 KB/sec). . .[INFO] Installing /Users/arungupta/workspaces/jline2/target/jline-2.13-SNAPSHOT-sources.jar to /Users/arungupta/.m2/repository/jline/jline/2.13-SNAPSHOT/jline-2.13-SNAPSHOT-sources.jar [INFO] Installing /Users/arungupta/workspaces/jline2/target/jline-2.13-SNAPSHOT-tests.jar to /Users/arungupta/.m2/repository/jline/jline/2.13-SNAPSHOT/jline-2.13-SNAPSHOT-tests.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 09:52 min [INFO] Finished at: 2015-05-06T19:23:14-07:00 [INFO] Final Memory: 25M/146M [INFO] ------------------------------------------------------------------------克隆并構(gòu)建JDK 9 REPL
該項(xiàng)目的OpenJDK代號(hào)為Kulla,意為“建設(shè)者之神”。 該工具的計(jì)劃名稱(chēng)為jshell 。
注意,唯一的編輯是OSX的#!/bin/sh并將JLINE2LIB添加到先前編譯的jline2工作區(qū)的位置。 從引用JDK 9的JAVA_HOME中拾取javac 。
運(yùn)行JDK 9 REPL
注意,對(duì)于OSX唯一的編輯是!/bin/sh并添加JLINE2LIB 。
JDK 9 REPL Hello World
與引入Java的彈跳球或跳舞Duke引入不同,我們只將常規(guī)的Hello World用于REPL
將“ Hello World”運(yùn)行為:
-> System.out.println("Hello World"); Hello World瞧!
沒(méi)有public static void main ,沒(méi)有類(lèi)的創(chuàng)建,沒(méi)有儀式,只是干凈而簡(jiǎn)單的Java代碼。 輸入的文本稱(chēng)為“代碼段”。
可以使用/list all查看完整的Java代碼,如下所示:
-> /list all1 : import java.util.*;2 : import java.io.*;3 : import java.math.*;4 : import java.net.*;5 : import java.util.concurrent.*;6 : import java.util.prefs.*;7 : import java.util.regex.*;8 : void printf(String format, Object... args) { System.out.printf(format, args); }9 : System.out.println("Hello World");該代碼段可以另存為文件:
-> /save test請(qǐng)注意,這不是Java文件。 保存的代碼段正是輸入的內(nèi)容:
repl> more test System.out.println("Hello World");該工具可以退出為:
-> /exit | Goodbye或者您可以按Ctrl + C。
完整的命令列表很容易看到:
-> /help Type a Java language expression, statement, or declaration. Or type one of the following commands:/l or /list [all] -- list the source you have typed/seteditor <executable> -- set the external editor command to use /e or /edit <name or id> -- edit a source entry referenced by name or id /- or /drop <name or id> -- delete a source entry referenced by name or id /s or /save [all|history] <file> -- save the source you have typed /o or /open <file> -- open a file as source input /v or /vars -- list the declared variables and their values /m or /methods -- list the declared methods and their signatures /c or /classes -- list the declared classes /x or /exit -- exit the REPL /r or /reset -- reset everything in the REPL /f or /feedback <level> -- feedback information: off, concise, normal, verbose, default, or ? /p or /prompt -- toggle display of a prompt /cp or /classpath <path> -- add a path to the classpath /h or /history -- history of what you have typed/setstart <file> -- read file and set as the new start-up definitions/savestart <file> -- save the default start-up definitions to the file /? or /help -- this help messageSupported shortcuts include: <tab> -- show possible completions for the current text Shift-<tab> -- for current method or constructor invocation, show a synopsis of the method/constructorJDK 9 REPL后續(xù)步驟和反饋
請(qǐng)遵循REPL教程以了解有關(guān)該工具功能的更多信息。 快速概述:
- 接受Java語(yǔ)句,變量,方法和類(lèi)的定義,導(dǎo)入和表達(dá)式
- 設(shè)置和顯示信息的命令,例如/list顯示代碼片段列表, /vars顯示變量列表, /save保存代碼片段, /open讀回它們。
- 片段的歷史記錄可用,片段可以按數(shù)字進(jìn)行編輯,等等
這是一個(gè)有用的RFE:
- 將代碼段導(dǎo)出為完整的Java類(lèi)
隨后的博客將展示如何將其用于Java EE應(yīng)用程序的播放。 您將如何使用REPL?
在kulla-dev上討論項(xiàng)目/問(wèn)題。
請(qǐng)享用!
翻譯自: https://www.javacodegeeks.com/2015/05/jdk-9-repl-getting-started.html
jdk入門(mén)
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的jdk入门_JDK 9 REPL:入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 免费点赞的软件电脑版(点赞吧软件下载)
- 下一篇: DOTA2配置要求?