Java9相关资料(JShell简易教程等)
资源
JShell(Java Shell)
参考资料:
以下大部分内容均来自该官方的JShell User Guide。
1.功能
Java9引入了JShell。JShell是一个Read-Eval-Print Loop (REPL)。Javaer终于可以不用羡慕Pythoner了。无需再为实验一些API,程序小片段而启动庞大的IDE。
只需执行jshell.exe,即可在控制台下进行实验。
2.启动
只要在path变量中加入Java安装路径,如C:\Program Files\Java\jdk-9\bin,即可在控制台下直接运行。换句话说只要,你在控制台下能执行Java 9的javac.exe,java.exe,就可在控制台下执行jshell.exe。
3.基本使用

- 行尾的分号是可以省略的。
/list为列出输入命令的列表,也可直接输入/l。/2表示执行列表上第2条语句。/edit 3或/ed 3,可编辑列表第3条命令。/help,帮助。Ctrl+D或/exit,退出JShell。/Tab,补全。例子,"test".subString(<Tab>,查看方法签名、再按查看文档。Shift+Tab i,导入相应的类。如,输入new JFrame然后按Shift+Tab i(先按Shitf+Tab,松开后再按i))即可跳出菜单询问如何处理。Shift+Tab v,补全表达式。如,输入new JFrame("demo")然后按Shift+Tab v即可补全表达式。/open, 打开文件
4.脚本(jsh)
官方文档中这样定义
A JShell script is a sequence of snippets and JShell commands in a file。
我觉得主要的好处就是:执行一个包含了java代码的脚本程序,不需要先编译然后再调用java命令去执行。
4.1 建立脚本文件(.jsh)的方式
- 将当前在jshell中敲入的命令,直接保存。使用
/save test.jsh - 直接用记事本新建一个
test.jsh
比如将下列代码放入test.jsh文件:
String line = "c:/temp"
Path path = Paths.get(line);
if (Files.exists(path, LinkOption.NOFOLLOW_LINKS)){
Stream<Path> list = Files.list(path);
System.out.println("目录 "+ path+" 中的文件总数为 "+list.count());
}else{
System.out.println("目录 "+ path+ " 不存在!");
}
/exit
可以看到代码中不仅有Java代码还有jshell命令/exit。
4.2 执行脚本
假设已定位到test.jsh所在目录。
有两种执行脚本的方式:
- jshell下执行
/open test.jsh - 在命令行下执行
jshell test.jsh
运行截图如下:

注意:实验过程中,发现脚本文件似乎不能在控制台下进行交互。即不能在脚本中使用Scanner sc = new Scanner(System.in);处理输入。
最后
吐槽一下JShell。Java语言命令啥的都太长啦,JShell下的Content Assist又不够强大,真心不太适合写脚本。
Modular JDK
参考资料:
jigsaw
Java9相关资料(JShell简易教程等)的更多相关文章
- 移动开发之【微信小程序】的原理与权限问题以及相关的简易教程
这几天圈子里到处都在传播着这样一个东西,微信公众平台提供了一种新的开放能力,开发者可以快速开发一个小程序,取名曰:微信公众平台-小程序 据说取代移动开发安卓和苹果,那这个东东究竟是干吗用的?但很多人觉 ...
- 【转】Delphi内嵌ASM简易教程
Delphi内嵌ASM简易教程 作者:heiying2006-03-19 18:33分类:默认分类标签: 前言 Delphi作为一个快速高效的开发平台,使用的人越来越多,但熟悉在Delphi代码中嵌入 ...
- [转]Unity3D Editor 编辑器简易教程
Star 自定义编辑器简易教程 an introduction to custom editors 原文地址 http://catlikecoding.com/unity/tutorials/star ...
- React Test相关资料
karma 前端测试驱动器,生产测试报告,多个浏览器 mocha js的测试框架,相当于junit chai,单元测试的断言库,提供expect shudl assert enzyme sinon.j ...
- Emacs简易教程
Emacs简易教程阅读: 命令: $emacs 进入之后,输入: C-h t 这里,C-h表示按住[Ctrl]键的同时按h ####### 20090620 *退出: 输入“C-x C-c” *撤销: ...
- Intellj IDEA 简易教程
Intellj IDEA 简易教程 目录 JDK 安装测试 IDEA 安装测试 调试 单元测试 重构 Git Android 其他 参考资料 Java开发IDE(Integrated Developm ...
- MetaProducts Offline Explorer使用简易教程
MetaProducts Offline Explorer使用简易教程 by windtrace 20170419 最近想下载一个网站上的内容打包成chm文件,以便离线浏览,webzip太长时间不更 ...
- VS2013创建Windows服务 || VS2015+Windows服务简易教程
转自:https://www.cnblogs.com/no27/p/4849123.htmlhttps://blog.csdn.net/ly416/article/details/78860522 V ...
- Argparse简易教程
Argparse简易教程 原文:Argparse Tutorial 译者:likebeta 本教程是对于Python标准库中推荐使用的命令行解析模块argparse的简单介绍. PS:还有其他两个模块 ...
随机推荐
- SpringMVC(五):@RequestMapping下使用@RequestParam绑定请求参数值
在处理方法入参使用@RequestParam可以把请求参数传递给请求方法,@RequestParam包含的属性值: --- value :参数名称 --- required :是否必须,默认为true ...
- [论文阅读] ImageNet Classification with Deep Convolutional Neural Networks(传说中的AlexNet)
这篇文章使用的AlexNet网络,在2012年的ImageNet(ILSVRC-2012)竞赛中获得第一名,top-5的测试误差为15.3%,相比于第二名26.2%的误差降低了不少. 本文的创新点: ...
- linux下的mysql安装
写在开头的小故事: 很久以前小石头我在一家公司做运维工程师,当时我们有一台认证服务器安装了mysql5.5版本.有一天领导说防止它挂掉,做个主从复制吧,我开心的接受任务,但是让某同事听到了, 此同事代 ...
- 闭包(closure)
大牛的讲解,点击 我们首先需要有作用域的概念,点击 那么什么是闭包? 官方的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 广义上的 ...
- Spring AOP异常捕获原理
Spring AOP异常捕获原理: 被拦截的方法,须显式的抛出异常,且不能做任何处理, 这样AOP才能捕获到方法中的异常,进而进行回滚. 换句话说,就是在Service层的 ...
- 修改 iOS AppIcon
有一次看到亚马逊的客户端打开后,就提示 icon 改变了,回桌面一看,竟然真的变了.然后就上网搜索是怎么实现的,参照着写了一个小 demo ,权当笔记. 首先,导入图片到项目的中,如下图.不要导入到 ...
- iOS 检测屏幕是否锁定 🔓 / 🔒
1. 导入头文件 #import <notify.h> 2. 给 CFNotificationCenter 添加观察者 - (void)addLockStatusObserver { CF ...
- drupal 8 建立我的相册
一.先建一个存图片的内容类型 1.创建内容类型 点击[结构]>[内容类型]>[+add content type] 点击[保存和管理字段] 2.添加字段 点击[+添加字段] 点击[保存并继 ...
- 解决将/etc/passwd文件中1000改为0后只能guest进入系统的问题 ||ubuntu下将普通用户权限升级为root用户权限的方法;
其实我现在才知道linux系统对于用户权限管理比较严,在ubuntu下系统不允许root权限的用户进入图像界面系统.由于之前没弄过权限这个东西瞬间掉坑了了. 我是想修改一下root下的nginx.co ...
- 关于Ueditor存储在mysql"UTF-8"乱码的问题
关于Ueditor存储在mysql"UTF-8"乱码的问题 首先小编要声明之前出乱码的原因,mysql 字段设置的BLOB类型 紧接着我们要先确认两件事: 1.首先要确认你的mys ...