本文要求读者有基本的 Java 知识。
Tips
Java 9 的代码由于提供了新特性,所以有些代码并不支持向后兼容。也就是说,用 Java 9 写的代码,有可能在 Java 8 或更早版本的 JDK 上不能运行。
首先,你需要下载JDK 9 (Java Development Kit 9) ,需要到此网站来下载JDK 9。首先需要先同意许可协议,然后就可以下载了。
Java 9 可以运行在很多平台上:
下一步需要配置环境变量。跟之前的 JDK 配置方法相同。这里,我以 macOS 10.12 版本为例,在 Macbook 上的配置。这里会需要 vi 的一些基本操作,可以去网上查找如何使用。
/library/Java/JavaVirtualMachines/jdk-9.jdk/
cd
则会切换到默认目录下)。ls -a
命令,列出当前目录下的包括隐藏的文件或目录。4.找到.bash_profile
文件,此文件会影响你当前用户的配置信息,并执行vi .bash_profile
命令编辑此文件。
5.进入编辑页面后,配置 Java Home 和 Path 环境变量:
6.配置完以后,使用esc
键退出编辑状态,输入“:wq”,保存并退出。并执行. .bash_profile
,使配置文件立刻生效。
javac -version
,如果输出如下信息,则说明 JDK 配置正确。至此,JDK 配置完成。
启动JShell。
在Terminal下输jshell -v
此时,就进入JShell 开发环境,命令行里是以jshell>
开头。
如果想退出JShell 环境,则输入/exit
命令。
Java 9 中引入了交互式编程环境(REPL),这就是JShell,它允许可以执行 Java脚本代码,并且立即返回结果。因此,我们不需要创建什么一个解决方案或工程,就能很容易地编写代码并能很快的看到运行结果。我们不必等待整个项目 build 完去检查多行代码的执行结果。JShell,就像其他 REPL 一样,有利于探索式编程,我们很容易地进行交互式尝试和调试不同的算法和结构。
我们简单写一个 JShell 下的一个 Java 代码,就是一个打印输入。
System.out.println('Hello, Java 9, now I am in JShell!')
输出结果为:
Tips
在 JShell 环境下,语句末尾的“;” 是可选的。但推荐还是最好加上。提高代码可读性。
在一些例子中,我们将利用JShell 这一特性,提供对网络的访问。此功能与Web Service交互时非常有用。然而,你必须确保你的防火墙配置不会阻挡 JShell。
import
语句导入必要的包或是从指定的路径的包,来运行我们的代码片段。我们可以输入以下命令列出所有导入的包:/imports
下面就会列出已经导入的包:
当我们在 JShell 之外写 Java 代码时,如所需要的 java.lang 包是默认导入的。在 JShell 下使用/imports
命令并没没有列出这些包,以下是所有的在 JShell 环境下默认导入的包:
此外,JShell 提供了自动补全的功能,只需按下 Tab 键,就能自动补全。
但有些情况下,根据我们输入的语句会对应很多选项,这时候 JShell 就会全部给你列出来。
例如,当我输入 S 时,就会列出来所以以 S 开头的类。
当我们想输入System
类时,根据前面说的自动补全,只需要输入Sys
然后按下 Tab 键,则自动补全, 然后再输入“.o”,则会自动补全方法, 在补全“System.out.”后按下 Tab 键,接下来就会列出当前类的所有的 public 方法的列表。
最后完整输入:System.out.println('Auto-complete is helpful in JShell');
jshell -v
来进入命令行的开发环境calculateRectangleArea
方法来计算一个正方形的面积。float calculateRectangleArea(float width, float height) { return width * height; }
然后输入回车,则会输入如下信息:
Tips
所有从 JShell 输出的消息用“|”表示。
/list
在 JShell 中,会列出到目前为止当前 session 里所有有效的代码片段。接下来我们定义一个 float类型的变量width
并赋值为50:float width = 50;
输入完上面的代码后,JShell 就会给我们如下信息:
然后定义接着输入然后自动补全为float area = calculateRectangleArea(
,再输入刚才定义的变量width
和height
,则方法则计算出面积并返回1250.0。
下面我们再使用/list
列出到目前为之所有有效的代码片段。
输入以下代码:
System.out.printf('Width: %.2f, Height: %.2f, Area: %.2f\n', width, height, area);
则会输入如下信息:
#### 6. 计算表达式
Java 9 中运行我们评估任何有效的表达式,在 JShell中输入如下表达式:
width * height;
当我们输入上面的表达式,它就会给分配给一个临时的变量,这个变量以“$”开头,并跟着一个数字。这个变量是$6,但也有可能是$7, $8。
在当前 session 中,我们可以在接下来的代码中直接使用此临时变量,例如:
System.out.printf('The calculated area is %.2f\n', $6);
我们还可以使用之前的临时变量进行响应的运算,例如,
$6 + 10.5f;
/vars
来查看当前 session 下所有创建过的变量:我们再定义一个方法:
float calculateRectanglePerimeter(float width, float height) { return 2 * (width + height); }
/methods
来查看所有的方法。你也可以 修改已经存在的方法,例如,calculateRectanglePerimeter
的方法改为如下:float calculateRectanglePerimeter(float width, float height) { float perimeter = 2 * (width + height); System.out.printf('Width: %.2f\n', width); System.out.printf('Height: %.2f\n', height); System.out.printf('Perimeter: %.2f\n', perimeter); return perimeter; }
然后输出以下信息:
我们还可以使用/list method name
来查看具体某一个方法的具体信息:
/edit calculateRectangleArea
接下来就会显示编辑器对话框,和将要修改的方法:
代码修改完成以后,先点击“Accept”按钮,再点击“Exit”按钮,则退出编辑器,在 JShell 命令行中提示方法已经修改。
JShell Edit Pad 编辑器功能非常有限,仅能提供一些最基础的功能,不过好消息是,JShell 可以配置外部的代码编辑器,我们只需要使用/edit 外部编辑器的完整路径
的方式,来指定外部的代码编辑器。
例如,我想使用Sublimet Text 作为外部的代码编译器,则需要使用如下命令:/set editor '/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl'
设置成功以后,返回如下信息:
然后我们再执行命令,则就打开 Sublime Text,
/open
命令导入到 JShell 环境中,例如我现在有一个Begin.java
文件,void printHello { System.out.println('Hello, World!'); } printHello
在 JShell 环境中执行以下语句:
/open /Users/i324779/Desktop/Begin.java
加载文件并执行:
联系客服