JDK 9 REPL:入门
會議是聚會Java名人的好地方。 Devoxx France是與Java語言架構師,前同事和老朋友Brian Goetz( @briangoetz )見面的一個機會。 我們談論了JDK 9,而他全都熱衷于REPL。 他提到,盡管Java SE 9中有很多重要功能 ,例如模塊化和HTTP2客戶端 ,但該工具將是最常被談論的。 該聲明之所以有意義,是因為它將真正簡化Java API的探索,原型開發,會議演示以及類似任務。 該博客來自我們在那里的討論以及他對REPL的強烈投票!
Read-Evaluate-Print-Loop在Lisp,Python,Ruby,Groovy,Clojure和其他語言中已經存在了一段時間。 Unix shell是一個REPL,它可以讀取shell命令,評估它們,打印輸出并返回循環以執行相同的操作。
您可以在JEP 222的 JDK 9中閱讀有關REPL的全部信息。 JEP的摘要是:
提供一個交互式工具,用于評估Java編程語言的聲明,語句和表達式:即,提供Java編程語言的讀取-評估-打印循環(REPL)。 另外,提供構建工具的API,使外部工具可以提供此功能。 杰普222
JEP中也明確闡明了動機:
沒有Foo類{public static void main(String [] args){…}}的儀式,學習和探索就變得簡化了。 杰普222
JEP 222的目標是將REPL與JDK 9一起提供,但是openjdk.java.net/projects/jdk9并未將其列為“目標”或“建議目標”。 好像是一個文檔錯誤:)
從JDK 9 build 61開始,REPL未集成,需要單獨構建。 最終,在發布JDK 9之前的某個時間,此工具將集成到內部版本中。
讓我們看看在OSX上運行它需要什么。 該博客遵循Java 9 REPL –入門指南來構建和運行REPL。 另外,它提供了命令的完整日志輸出,這可能對某些人有用。
讓我們開始吧!
安裝JDK 9
在OSX上設置JAVA_HOME的更多詳細信息在這里 。
檢出并安裝jline2
jline2是一個用于處理控制臺輸入的Java庫。 一探究竟:
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.然后構建它:
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] ------------------------------------------------------------------------克隆并構建JDK 9 REPL
該項目的OpenJDK代號為Kulla,意為“建設者之神”。 該工具的計劃名稱為jshell 。
注意,對于OSX,唯一的編輯是#!/bin/sh ,并將JLINE2LIB添加到先前編譯的jline2工作區的位置。 從引用JDK 9的JAVA_HOME中拾取javac 。
運行JDK 9 REPL
注意,唯一的編輯是OSX的!/bin/sh并添加JLINE2LIB 。
JDK 9 REPL Hello World
與引入Java的彈跳球或跳舞Duke引入不同,我們只將常規的Hello World用于REPL
將“ Hello World”運行為:
-> System.out.println("Hello World"); Hello World瞧!
沒有public static void main ,沒有類的創建,沒有儀式,只是干凈而簡單的Java代碼。 輸入的文本稱為“代碼段”。
使用/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請注意,這不是Java文件。 保存的代碼段正是輸入的內容:
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后續步驟和反饋
遵循REPL教程以了解有關該工具功能的更多信息。 快速概述:
- 接受Java語句,變量,方法和類的定義,導入和表達式
- 設置和顯示信息的命令,例如/list顯示代碼片段列表, /vars顯示變量列表, /save保存代碼片段, /open以讀回它們。
- 片段的歷史記錄可用,片段可以按數字進行編輯,等等
這是一個有用的RFE:
- 將代碼段導出為完整的Java類
隨后的博客將展示如何將其用于Java EE應用程序的播放。 您將如何使用REPL?
在kulla-dev上討論項目/問題。
請享用!
翻譯自: https://www.javacodegeeks.com/2015/05/jdk-9-repl-getting-started.html
總結
以上是生活随笔為你收集整理的JDK 9 REPL:入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ddos攻击报警有用吗(ddos攻击如何
- 下一篇: 安卓盗版视频软件(安卓盗版)