原文: https://www.jianshu.com/p/5fb406c6203f

  

  从java9开始,java开始引入了类似于python的交互式 REPL(Read-Eval-Print Loop,读取-求值-输出 循环)工具。官方的表述如下:

The Java Shell tool (JShell) is an interactive tool for learning the Java programming language and prototyping Java code. JShell is a Read-Evaluate-Print Loop (REPL), which evaluates declarations, statements, and expressions as they are entered and immediately shows the results. The tool is run from the command line.

  简而言之,使用 JShell,你可以输入代码片段并马上看到运行结果,然后就可以根据需要作出调整。官方的表述如下:

JShell helps you try out code and easily explore options as you develop your program. You can test individual statements, try out different variations of a method, and experiment with unfamiliar APIs within the JShell session. JShell doesn’t replace an IDE. As you develop your program, paste code into JShell to try it out, and then paste working code from JShell into your program editor or IDE.

  接下来我们就开始初步的使用一下Jshell。首先我们要安装jdk,并且版本要高于9。我这里安装的是jdk10,并且配置好环境变量。

  首先我们打开命令行,输入jshell,结果如下:

  

  按照提示,我们继续输入/help intro
       
  这里有一个初步的介绍,接下来我们实战。首先我们用jshell计算两个double 数的和。
  
  那么在这里,我们就可以像写java代码一样执行我们的表达式,对于每一步我们都可以了解清楚。当然有时候,我们希望自己做一个函数来执行两个double数的加法。代码如下:
  
  这样我们就创建了一个方法。接下来使用我们的方法。
  
  那么从上面的这些例子我们可以看出,Jshell是可以执行我们的任何代码片段。但有个问题,就是加入我声明多个函数之后,我忘了那个是哪个,怎么办呢?所以我们需要学习Jshell提供给我们的命令。
jshell> /help
| 键入 Java 语言表达式, 语句或声明。
| 或者键入以下命令之一:
| /list [<名称或 id>|-all|-start]
| 列出您键入的源
| /edit <名称或 id>
| 编辑源条目
| /drop <名称或 id>
| 删除源条目
| /save [-all|-history|-start] <文件>
| 将片段源保存到文件
| /open <file>
| 打开文件作为源输入
| /vars [<名称或 id>|-all|-start]
| 列出已声明变量及其值
| /methods [<名称或 id>|-all|-start]
| 列出已声明方法及其签名
| /types [<名称或 id>|-all|-start]
| 列出类型声明
| /imports
| 列出导入的项
| /exit [<integer-expression-snippet>]
| 退出 jshell 工具
| /env [-class-path <路径>] [-module-path <路径>] [-add-modules <模块>] ...
| 查看或更改评估上下文
| /reset [-class-path <路径>] [-module-path <路径>] [-add-modules <模块>]...
| 重置 jshell 工具
| /reload [-restore] [-quiet] [-class-path <路径>] [-module-path <路径>]...
| 重置和重放相关历史记录 -- 当前历史记录或上一个历史记录 (-restore)
| /history
| 您键入的内容的历史记录
| /help [<command>|<subject>]
| 获取有关使用 jshell 工具的信息
| /set editor|start|feedback|mode|prompt|truncation|format ...
| 设置配置信息
| /? [<command>|<subject>]
| 获取有关使用 jshell 工具的信息
| /!
| 重新运行上一个片段 -- 请参阅 /help rerun
| /<id>
| 按 ID 或 ID 范围重新运行片段 -- 参见 /help rerun
| /-<n>
| 重新运行以前的第 n 个片段 -- 请参阅 /help rerun
|
| 有关详细信息, 请键入 '/help', 后跟
| 命令或主题的名称。
| 例如 '/help /list' 或 '/help intro'。主题:
|
| intro
| jshell 工具的简介
| id
| 片段 ID 以及如何使用它们的说明
| shortcuts
| 片段和命令输入提示, 信息访问以及
| 自动代码生成的按键说明
| context
| /env /reload 和 /reset 的评估上下文选项的说明
| rerun
| 重新评估以前输入片段的方法的说明

  这就是Jshell提供给我们的所有命令。接下来,我们看一下刚才所有键入的源。

  

  那么我们可以看到我们所执行的任何输入。我们可以删除,编辑,修改等等,这里就不在做说明了。接下里主要为大家演示三个命令。
  第一个便是保存,/save。
  /save [-all|-history|-start] <文件> 

  

  这

样我们就将我们所有的历史纪录保存到了d盘下面的jshell.txt文件。当然依然是unix的那句话,没有报错就证明执行成功。当然你也可以试一试其他两个参数。

  第二个我们演示的命令便是,/open 。

  打开一个输入源。/open<file>

  

  可以看到我们文件中所写的这个函数,已经成功加入到jshell中了。

  那么第三个我们要演示的命令是。/help context。

  它是对/env /reload 和 /reset 的评估上下文选项的说明

  

  shell是一个交互式的环境,既然环境,那么肯定有上下文,肯定有依赖,我们可以利用这三个命令,去改变我们jshell的上下文。这里我们可以看到模块这两个字,这是java9开始,java的一个重要机制,引入了模块机制。那么有兴趣的话,可以看看,这边我也在学习。其他的jshell命令,我相信见名知意,何况注释写的这么好。大家可以自己练习试一下。
 

Jshell使用的更多相关文章

  1. JavaOne 2016——观众得以一睹JShell的威力

    导读 在JavaOne 2016的主题演讲中,Java平台组的首席架构师Mark Reinhold指出Java 9并不仅仅是Jigsaw,针对Java 9,一共包含了85个JEP.我在这里会关注一个他 ...

  2. Java 9 尝鲜之JShell交互式编程环境

    JShell--Java 9 的交互式编程环境 本文要求读者有基本的 Java 知识. Tips Java 9 的代码由于提供了新特性,所以有些代码并不支持向后兼容.也就是说,用 Java 9 写的代 ...

  3. Java9新特性之——JShell

    java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9.jdk9和jdk8中的新特性不同:jdk8中的stream和lambda表达式能够让开发者非常快 ...

  4. 初识 JShell

    Java9 现在吵得热火朝天,赶紧顺势学习一波喽! JDK9 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-dow ...

  5. Java9相关资料(JShell简易教程等)

    资源 Java9官网下载地址 Java9官方教程 JShell(Java Shell) 参考资料: JShell User Guide Java9先睹为快:JShell动手实践 以下大部分内容均来自该 ...

  6. JShell脚本工具

    JShell脚本工具是JDK9的新特性 什么时候会用到 JShell 工具呢,当我们编写的代码非常少的时候,而又不愿意编写类,main方法,也不愿意去编译和运行,这个时候可以使用JShell工具.启动 ...

  7. Java SE 9(JDK9)环境安装及交互式编程环境Jshell使用示例

    目的 安装JDK 9, 练习Jshell工具的使用, 体验Java的交互式编程环境. 什么是Jshell 其实就是一个命令行工具,安装完JDK9后,可以在bin目录下找到该工具,与Python的解释器 ...

  8. JAVA9新特性——JShell使用笔记

    前言:JShell是java 9的新特性之一,由于在之前学校java8的lambda表达式的时候,就希望有这么一个可以交互的界面来快速响应编写的代码.刚好java9出来了,就对它把玩起来了... 内容 ...

  9. 03 java 基础:注释 关键字 标识符 JShell

    Java 10 中已有 Jshell 工具,方便用户在其中直接输入相关 java 代码. 注释:java 中分为单行注释 //   多行注释 /*   */   文档注释 /**  */ 关键字:在 ...

随机推荐

  1. [zoj4045][思维+dfs]

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4045 题意:给一棵树.这棵树有n个节点,问你这个图能不能分成k个分块.这个 ...

  2. vue全家桶+Koa2开发笔记(3)--mongodb

    1. 安装 momgodb brew install mongodb安装成功后执行 which mongod启动:mongod 2. 下载可视化操作数据库的软件 https://robomongo.o ...

  3. gdb入门

    下面是我自己写的一个测试用例 a.c #include<stdio.h> int add(int a,int b){ return a+b; } int main(){ int n=add ...

  4. kubebapps 添加私有harbor 中的helm repo

    kubebapps 支持添加私有的helm repo,基于http basic auth ,我们通过添加header 就可以了 备注 harbor helm 以及kubebapps 的搭建可以参考 h ...

  5. laravel使用过程中一些总结

    推荐连接: laravel辅助函数总结:https://laravel-china.org/docs/laravel/5.5/helpers 基于 Laravel 集成的 Monolog 库对日志进行 ...

  6. Coding kata: get the top two teams in one group

    In this week, we did a coding kata, the subject is to select the top two teams of football group mat ...

  7. S老师 背包系统 装备系统 锻造系统 学习

    Inventory using UnityEngine; using System.Collections; using System.Collections.Generic; using Syste ...

  8. 自动化部署--shell脚本--2

    node1和node2都装apache   [root@linux-node1 ~]# yum install httpd -y Loaded plugins: fastestmirror Loadi ...

  9. Revit api 创建族并加载到当前项目

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  10. mongodb之 oplog 日志详解

    1:oplog简介 oplog是local库下的一个固定集合,Secondary就是通过查看Primary 的oplog这个集合来进行复制的.每个节点都有oplog,记录这从主节点复制过来的信息,这样 ...