JShell 入门第一部分
介绍
想象一下,你得到了一个新的库,你想尝试一下看看它是如何工作的。
你会怎么办?
您是否会在新项目或现有项目中创建一个具有主要方法的类只是为了测试它?
JUnit 测试?
好吧,在 Java 9 中,您还有另一个选择来完成此任务:JShell。
JShell 是一个读取-求值-打印循环 (REPL)。这是一个命令行工具,允许您输入 Java 语句(简单语句、复合语句,甚至完整的方法和类),对其进行求值,然后打印结果。
在本指南中,您将学习使用 JShell 的基础知识,从执行简单语句到定义类,以及一些用于管理代码片段的命令。最后,我们将通过一个实际示例向您展示如何使用 JShell 探索Guava,这是一个包含许多 Java 实用程序和集合类型的库。
JShell 随 Java 9 JDK 发行版一起提供。您可以从此处或此处下载并按照安装说明进行操作。或者,您可以使用 Docker 和 OpenJDK 映像来运行 JShell。
REPL 的重要性
简而言之,REPL 提供了一种执行代码的简单方法。
你可能会想,为什么 REPL 比使用其他方法更好?为什么不在 IDE 中创建一个带有 main 方法的类?
此外,您可以说 Java 已经有了一些第三方 REPL 工具(如Java REPL),而无需提及一些 IDE 执行代码片段的能力。
JShell 的JDK增强提案 (JEP)提供了两个很好的理由。这是第一个:
- 在学习编程语言及其 API 时,即时反馈非常重要。学校放弃 Java 作为教学语言的首要原因是其他语言有“REPL”,而且对初始“Hello, world!”程序的要求要低得多。
当你学习新东西时,尝试那些需要最少努力并能立即得到反馈的东西很重要。以前在 Java 中,如果你必须尝试一些代码,即使是像Hello World这样基本的代码,你也必须创建一个类,添加一个主方法,添加几行代码,可能还要添加依赖项,编译,然后(如果没有错误)运行代码。即使使用 IDE 简化了事情,这也比使用 REPL 更复杂。
当然,Java 有 JShell 的替代品,但它们没有 JShell 在一个包中提供的所有功能,比如完整的语言支持或保留的上下文和会话历史记录。
此外,JShell 还为其评估引擎提供了 API,因此可以将其集成到 IDE或其他工具中,进一步简化我们的工作流程。
即使是经验丰富的开发人员也可以从 REPL 中受益。这是第二个原因:
- 对于开发人员设计代码原型或研究新 API 来说,探索编码选项也很重要...没有了 class Foo { public static void main(String[] args) { ... } } 的繁琐,学习和探索就变得流畅了。
您可以快速地制作原型并试验库(方法的返回类型是什么?)以及语言功能(显示日期时区的格式模式是什么?)。
解释了 REPL 的重要性后,让我们深入了解 JShell 的基础知识。
安装
如前所述,JShell 包含在 JDK 中。只需转到安装的bin目录,例如:
cd C:\Program Files\Java\jdk-9\bin
或者,您可以将此目录添加到PATH环境变量中。
接下来执行:
jshell
壳相互作用
您应该看到类似下面的内容:
$ jshell
| Welcome to JShell -- Version 9
| For an introduction type: /help intro
jshell>
这将启动一个交互式状态会话,这意味着它将在同一会话中记住先前定义的语句和修改。
您可以输入特定的 JShell 命令或 Java 代码(称为代码片段),特别是:
- 表达式
- 声明
- 类声明
- 接口声明
- 方法声明
- 字段声明
- 导入声明
此时,一切已设置完毕,可以开始使用 JShell 了。
下一步
在本系列的下一篇指南中,您将学习如何使用表达式、变量、类等。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~