阅读 1507

Java9新特性系列(JShell)

题图:by pixel2013 From pixabay

JShell是什么?

引入JDK官方的Summary

Provide an interactive tool to evaluate declarations, statements, and expressions of the Java programming language, together with an API so that other applications can leverage this functionality.

  • JShell是Java的REPL工具(Read-eval-print-loop):交互式解析器,一种命令行工具。它允许你无需使用类或者方法包装来执行Java语句。

  • 像Python和Scala之类的语言早就有交互式编程环境REPL了,以交互式的方式对语句和表达式进行求值。开发者只需要输入一些代码,就可以在编译前获得对程序的反馈。而之前的Java版本要想执行代码,必须创建文件、声明类、提供测试方法方可实现。

JShell的理念

即写即得,快速运行

JShell的目标

  • Java9中终于拥有了REPL工具:jShell。利用jShell在没有创建类 的情况下直接声明变量,计算表达式,执行语句。即开发时可以 在命令行里直接运行java的代码,而无需创建Java文件,无需跟 人解释”public static void main(String[] args)”这句废话。
  • jShell也可以从文件中加载语句或者将语句保存到文件中。
  • jShell也可以是tab键进行自动补全和自动添加分号。

JShell使用举例

  • 进入JShell:

    进入shell

  • 帮助:

    帮助

  • 基本使用:

    基本使用

  • Java表达式 JShell终端还可以自己计算Java表达式。字符串连接、方法回调、算法,诸如此类

    Java表达式

  • 分号对于纯语句是可选的:

    分号对于纯语句可选

  • 导入指定的包

    导入指定的包

  • 向前引用 你在定义方法时可以引用其他方法或变量,且这些方法或变量仅会在一段时间后被定义

  • Tab键自动补全代码

    Tab键自动补全代码

  • REPL网络 使用JShell时,我们不会受限于机器和网络访问,这带来了一些有趣的机会。例如,想想把它当做一个终端来与服务器交流,远程连接到服务器并且从外面控制一些参数。另一个选择是查询数据库,这里真的是有无限可能。

    REPL网络

  • 保存和加载工作空间

    • 列出当前session中所有有效的代码片段

      代码片段

    • 列出当前session中所有创建过的变量

      创建过的变量

    • 列出当前session中所有创建过的方法

      创建过的方法

  • 使用外部编辑器来编写java代码

/edit add
复制代码
  • 从外部文件加载源代码
/open xxx.java
复制代码
  • 没有受检异常/编译时异常
    没有受检异常

如果你一直担心受检异常会毁掉你的REPL经历,无需再担心,JShell在后台为你隐藏好了

  • 退出shell
/exit
复制代码
  • JShell API

JShell除了可以作为单独的JDK工具,还可以提供一个API,它能对外部调用开放所有的功能

  • 在运行中修改定义

你可以重新声明变量、方法或者类,而无需担心原始的声明。一旦你这样操作了,就会收到一个信息提示你发生了什么,但除此之外一切照旧。

怎么样?是不是心动了?赶紧试试吧~

微信公众号:码上论剑
请关注我的个人技术微信公众号,订阅更多内容
关注下面的标签,发现更多相似文章
评论