A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Wanderfoury 初级黑马   /  2018-6-25 15:05  /  999 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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模块显得不那么安全

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马