本帖最后由 Wanderfoury 于 2018-6-25 15:10 编辑
前言2017/9/22,java 9正式发布了,带来了众多特性。本文是Java 9的初体验,简单介绍下Java 9 带来的新东西: - jshell(java脚本运行环境)
- modularity(模块化)
1. Java 9 下载Java 9可以从官方下载了,其下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html 安装及环境变量和以往的版本一样。安装配置后,输入java -version出现以下信息: 2. jshell 初探jshell是Java 9 新增的一个脚本工具,意思是可以在命令行里直接运行java的代码,而无需创建Java文件,然后再编译,最后运行。我觉得jshell的好处就是即写即得,平常只想看看几行代码运行的结果是怎么样的,有了jshell就方便多了,直接在命令行上敲。 2.1 jshell的简单实用在命令行输入“jshell”,即可进入jshell环境: 然后,怎么用呢?比如,输入 1+1: 结果输出$1 ==> 2,其中$1表示第一个临时变量。
看看,输出“hello world”: 我们再来看看方法的测试: 如果想修改方法,怎么办?重写吗?不用这样的亲,可以输入“/edit sum”,会弹出编辑界面: 这里的j是我们定义的变量,所以它没有”$”符号。
我们可以用“/list”来查看当前我们所运行的脚本: 然后,我们可以通过“/import”来查看脚本的默认导入的包: 最后,我们输入“/exit”来退出jshell环境: 这里我们就简单了介绍了下jshell的用法,具体的使用可以参考这篇文章:https://www.cnblogs.com/IcanFixIt/p/6690478.html 3. 模块化模块化是java 9最大的一个特性,它使得代码组织上更安全,因为它可以指定哪些部分可以暴露,哪些部分隐藏。 本质上讲,模块的概念,其实就是package外再裹一层,也就是说,用模块来管理各个package,通过声明某个package暴露,不声明默认就是隐藏。我们来看下具体的操作 3.1 Java 9模块的使用由于目前的IDE还不支持Java 9的特性,所以我们的实验只能手动编写、编译 创建结构目录如下: StringUtils.java的内容 - 1 package com.bulong.example;
- 2 public class StringUtils {
- 3 public static String getUpper(String str) {
- 4 return str.toUpperCase(); // 转成大写 }
- 5 }
- 6
- 7
Hello.java的内容 - 1 package com.bulong.example;
- 2 public class Hello {
- 3 public static void main(String[] args) {
- 4 String str = StringUtils.getUpper("Hello world, hello java 9");
- 5 System.out.println(str); }
- 6 }
- 7
- 8
module-info.java的内容 - 1 module com.bulong.first.module {
- 2 exports com.bulong.example; // 声明暴露com.bulong.example
- 3 }
需要注意的是:描述module信息的module-info.java必须放在module文件夹的根目录下。 编译首先cd到testjava9项目文件: 接着,开始编译: javac –module-source-path src -d out src/com.bulong.first.module/com.bulong.example/*.java src/com.bulong.first.module/*.java 运行java –module-path out -m com.bulong.first.module/com.bulong.example.Hello 3.2 模块之间的依赖还是以刚才的例子,来看看模块之间如何依赖的。具体文件目录: 编译命令和上面一样: javac –module-source-path src -d out src/com.bulong.second.module/com.bulong.test/*.java src/com.bulong.second.module/*.java
运行命令也一样: java –module-path out -m com.bulong.second.module/com.bulong.test.Test
运行结果: 4. 小结本文仅仅简单的介绍了java 9的jshell以及模块化的使用。个人觉得java 9的模块化本质上就是重新组织了代码结构,在package外又包裹了一层module,让module来管理package,指定哪些package可以暴露。还有,module的引入,一定程度上会对jar包产生冲击,因为jar包里的package都是公开暴露的,相对于module模块显得不那么安全 |