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:还有其他两个模块 ...
随机推荐
- Struts(二十六):文件上传
表单的准备 想要使用html表单上传一个或多个文件 1.须把html表单的enctype属性设置为multipart/form-data 2.须把html表单的method属性设置为post 3.须添 ...
- js字符串操作总结
字符方法 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf- ...
- mysql zip 文件安装
1.下载 https://dev.mysql.com/downloads/mysql/ 2.解压,配置环境变量 MYSQL_HOME:D:\mysql path后面加 :%MYSQL_HOME%\bi ...
- LeetCode题目----求中位数---标签:Array
题目难度---困难 题目要求: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . 请找出这两个有序数组的中位数.要求算法的时间复杂度为 O(log (m+n)) . 思路:第一眼 ...
- [HNOI 2009]有趣的数列
Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<…&l ...
- Codeforces Round #452 E. New Year and Old Subsequence
Description A string t is called nice if a string "2017" occurs in t as a subsequence but ...
- bzoj 3191: [JLOI2013]卡牌游戏
Description N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X ...
- [bzoj4922]Karp-de-Chant Number
来自FallDream的博客,未经允许,请勿转载,谢谢. 卡常数被称为计算机算法竞赛之中最神奇的一类数字,主要特点集中于令人捉摸不透,有时候会让水平很高的选手迷之超时. 普遍认为卡常数是埃及人Qa'a ...
- [BZOJ]1014 火星人prefix(JSOI2008)
一边听省队dalao讲课一边做题真TM刺激. BZOJ的discuss简直就是题面plus.大样例.SuperHINT.dalao题解的结合体. Description 火星人最近研究了一种操作:求一 ...
- Notepad++连接Centos
Notepad++设置 插件 -- > plugin Manager --> show plugin manager --> NppFtp 安装重启notepad++ 插件 --& ...