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:还有其他两个模块 ...
随机推荐
- 解决VS2017编译后的EXE文件不能在其他电脑上运行的问题
笔者昨天写了个超简单画图程序,很是激动啊,立马给同学分享了自己写的程序,结果发现无法运行 错误是这样的 解决方法如下: 1.将Debug改为Release 2.进入[项目]-[**属性] 3.[C/C ...
- 谈mysql优化
公司订单系统每日订单量庞大,有很多表数据超千万.公司SQL优化这块做的很不好,可以说是没有做,所以导致查询很慢. 节选某个功能中的一句SQL EXPLAIN查看执行计划,EXPLAIN + SQL 查 ...
- SQL类型注入
前言: 继续进行未完成的sql注入学习 今天学习了各类型注入.前来进行总结. 目录: 数字型注入 字符型注入 提交注注入 GET注入 POST注入 COOKIE注入 正文: 数字型注入:www.xxx ...
- 【Java入门提高篇】Day15 Java泛型再探——泛型通配符及上下边界
上篇文章中介绍了泛型是什么,为什么要使用泛型以及如何使用泛型,相信大家对泛型有了一个基本的了解,本篇将继续讲解泛型的使用,让你对泛型有一个更好的掌握和更深入的认识. 上篇中介绍完泛型之后,是不是觉得泛 ...
- SpringCloud异常(Euruka):Application run failed java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder
在测试Euruka作为服务注册中心的时候碰到了这个问题,错误提示如下: "C:\Program Files\Java\jdk1.8.0_161\bin\java" -XX:Tier ...
- PHP 安装与配置(WIN10)
需要在本地搭个PHP的测试环境,顺手将过程写了下来. 由于不是生产环境,我这里直接选择了最新的PHP版本用来测试. 本地坏境为:windows 10 Pro 1709 PHP版本:php-7.2.3- ...
- [LeetCode] Average of Levels in Binary Tree 二叉树的层平均值
Given a non-empty binary tree, return the average value of the nodes on each level in the form of an ...
- Python网络爬虫笔记(二):链接爬虫和下载限速
(一)代码1(link_crawler()和get_links()实现链接爬虫) import urllib.request as ure import re import urllib.parse ...
- python 随笔
python 学习笔记 运算符重载 PYTHON-进阶-魔术方法小结(方法运算符重载) python有着像C++相似的运算符重载,只需要在类中重写__add__.sub 等方法,就可以直接对对象进行 ...
- 医疗器械c#上位机开发指引教程
此教程面向的读者:对医疗器械上位机编程有兴趣,或者急需了解医疗器械(尿常规.血液分析.生化.心电.B超等医疗下位仪器)的编程流程.编程细节的程序员. 1.得到仪器协议 当我们需要与医疗器械等下位机数据 ...