查看原文
其他

用 JShell 快速实现代码原型

ImportNew ImportNew 2019-12-01

(给ImportNew加星标,提高Java技能)

编译:ImportNew/唐尤华

medium.com/swlh/java-jshell-code-prototyping-2ff1465f299a


海滩上的贝壳,图片来自Flickr


许多年前,解释型编程语言就能在命令行中快速执行代码了。无需启动IDE,也不需要编译,敲入代码就能立即查看结果。事实证明,这种方式对新手很有帮助。因为这样尝试新的编程语言,不会被编译器、依赖项和构建系统困扰。JShell是JDK 9中一个经常被忽略的特性:它是一个Read-Evaluate-Print Loop (REPL) 环境,在JSHell中可以不用编译就能调用Java代码。


REPL是什么


简而言之,就是输入几个命令(Read),它就会被解释(Evalueate),命令的结果会转发出来(Print)。这个流程会一直持续到退出(Loop)。这就是R(ead) E(valuate) P(rint) L(oop)。


启动JShell


如果命令行支持Java JDK 9或更高版本,只要输入jshell就可以启动JShell:


调用JShell


jshell> 提示符出现后,表示JShell当前处于R(ead)模式,等待输入。

要快速浏览可用命令,可以输入 /help:


JShell help


命令、代码自动完成和引用


JShell使用TAB键进行代码提示与自动完成。输入System.out,按TAB,完成System.out.println(“Hello World”):


代码提示与自动完成


实际上,REPL会打印所有输入的命令,因此不需要System.out打印命令(也不用以分号;结束):


解释命令


JShell支持变量,使用特殊的$引用之前的结果:


变量与结果引用


JShell一个有趣功能是支持前向引用。前向引用指,引用JShell中没有定义的方法、变量或类。例如,有一个valueOfStocks方法,根据当前价格和拥有的股票数量计算持有的股票总值。可以先定义计算方法,然后再提供每种股票的实际数量与当前价格:


前向引用


package、import与外部开发库


JShell默认会import一些Java常用的package:


默认导入的package


只要使用import就可以导入需要的package:


导入package


使用外部开发库的代码时(例如JAR中的代码),需要把所需的JAR加到JShell的classpath中,然后只导入需要的包:


使用外部开发库


保存、加载和运行


JShell支持从本地保存和导入资源(即JShell脚本),分别使用/save和/open命令。还可以在JShell启动时加载之前保存的会话:


保存和加载JShell会话


有了JShell,无需编译代码就能轻松地对代码段进行测试或者设计算法原型。在REPL环境中,输入的命令可以直接得到反馈。了解更多JShell信息,可以参考Oracle的JShell教程。


推荐阅读

(点击标题可跳转阅读)

Spring 服务响应时间优化

一文详解 Java 的八大基本类型!

一文了解如何用 Java 进行算术表达式计算


看完本文有收获?请转发分享给更多人

关注「ImportNew」,提升Java技能

好文章,我在看❤️

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存