Java 9 入门初体验

来源:互联网 发布:解码矩阵 编辑:程序博客网 时间:2024/06/05 06:44

前言

2017/9/22,java 9正式发布了,带来了众多特性。本文是Java 9的初体验,简单介绍下Java 9 带来的新东西:

  1. jshell(java脚本运行环境)
  2. modularity(模块化)

相关文章介绍:https://mp.weixin.qq.com/s/Onj9ZJYbV5pLTAPcYBJREA

1. Java 9 下载

Java 9可以从官方下载了,其下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html

安装及环境变量和以往的版本一样。安装配置后,输入java -version出现以下信息:

image

2. jshell 初探

jshell是Java 9 新增的一个脚本工具,意思是可以在命令行里直接运行java的代码,而无需创建Java文件,然后再编译,最后运行。我觉得jshell的好处就是即写即得,平常只想看看几行代码运行的结果是怎么样的,有了jshell就方便多了,直接在命令行上敲。

2.1 jshell的简单实用

在命令行输入“jshell”,即可进入jshell环境:

image

然后,怎么用呢?比如,输入 1+1:

image

结果输出$1 ==> 2,其中$1表示第一个临时变量。

看看,输出“hello world”:

image

我们再来看看方法的测试:

image

如果想修改方法,怎么办?重写吗?不用这样的亲,可以输入“/edit sum”,会弹出编辑界面:

image

image

这里的j是我们定义的变量,所以它没有”$”符号。

我们可以用“/list”来查看当前我们所运行的脚本:

image

然后,我们可以通过“/import”来查看脚本的默认导入的包:

image

最后,我们输入“/exit”来退出jshell环境:

image

这里我们就简单了介绍了下jshell的用法,具体的使用可以参考这篇文章:https://www.cnblogs.com/IcanFixIt/p/6690478.html

3. 模块化

模块化是java 9最大的一个特性,它使得代码组织上更安全,因为它可以指定哪些部分可以暴露,哪些部分隐藏。

本质上讲,模块的概念,其实就是package外再裹一层,也就是说,用模块来管理各个package,通过声明某个package暴露,不声明默认就是隐藏。我们来看下具体的操作

3.1 Java 9模块的使用

由于目前的IDE还不支持Java 9的特性,所以我们的实验只能手动编写、编译

创建结构目录如下:

image

StringUtils.java的内容

package com.bulong.example;public class StringUtils {    public static String getUpper(String str) {        return str.toUpperCase(); // 转成大写    }}

Hello.java的内容

package com.bulong.example;public class Hello {    public static void main(String[] args) {        String str = StringUtils.getUpper("Hello world, hello java 9");        System.out.println(str);    }}

module-info.java的内容

module com.bulong.first.module {    exports com.bulong.example; // 声明暴露com.bulong.example}

需要注意的是:描述module信息的module-info.java必须放在module文件夹的根目录下。

编译

首先cd到testjava9项目文件:

image

接着,开始编译:

image

javac –module-source-path src -d out src/com.bulong.first.module/com.bulong.example/*.java src/com.bulong.first.module/*.java

image

运行

image

java –module-path out -m com.bulong.first.module/com.bulong.example.Hello

3.2 模块之间的依赖

还是以刚才的例子,来看看模块之间如何依赖的。具体文件目录:

image

image

编译命令和上面一样:

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

运行结果:

image

4. 小结

本文仅仅简单的介绍了java 9的jshell以及模块化的使用。个人觉得java 9的模块化本质上就是重新组织了代码结构,在package外又包裹了一层module,让module来管理package,指定哪些package可以暴露。还有,module的引入,一定程度上会对jar包产生冲击,因为jar包里的package都是公开暴露的,相对于module模块显得不那么安全…

补充一下:最新版的IDEA支持Java 9…具体的操作可以参考这篇文章:http://www.jianshu.com/p/7ea5fab6e835

原创粉丝点击