Java9新特性系列(JShell)

题图:by pixel2013 From pixabay

JShell是什么?

引入JDK官方的Summaryjava

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语句。shell

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

JShell的理念

即写即得,快速运行express

JShell的目标

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

JShell使用举例

  • 进入JShell: 编程

    进入shell

  • 帮助: 服务器

    帮助

  • 基本使用: 微信

    基本使用

  • Java表达式 JShell终端还能够本身计算Java表达式。字符串链接、方法回调、算法,诸如此类 网络

    Java表达式

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

    分号对于纯语句可选

  • 导入指定的包

    导入指定的包

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

  • Tab键自动补全代码

    Tab键自动补全代码

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

    REPL网络

  • 保存和加载工做空间

    • 列出当前session中全部有效的代码片断

      代码片断

    • 列出当前session中全部建立过的变量

      建立过的变量

    • 列出当前session中全部建立过的方法

      建立过的方法

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

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

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

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

JShell除了能够做为单独的JDK工具,还能够提供一个API,它能对外部调用开放全部的功能

  • 在运行中修改定义

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

怎么样?是否是心动了?赶忙试试吧~

微信公众号: 码上论剑
请关注个人我的技术微信公众号,订阅更多内容
相关文章
相关标签/搜索