JAVA9新特性之模块化系统和jshell体验

Posted 一个程序猿的生活

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA9新特性之模块化系统和jshell体验相关的知识,希望对你有一定的参考价值。

JAVA8在2014年3月份推出。

Java8 主要从语法层面通过lambda表达式和stream API进行了改进。lambda表达式仿照了python语言使JAVA语言更加轻量级;stream API是对现有api的补充,方便程序猿从内存层面上操作数组或集合。

JAVA9在2017年9月21号发布。

JAVA9主要的改变有模块化系统、jshell工具、jdk编译工具、JAVA公共API和私有API增强。



JAVA从JAVA9开始每六个月发布一次新版本,像昨天发布的JAVA10命名为JAVA 18.3,下一版本将会在18年的6月份发布。(发布模式以特性驱动转变为以时间驱动转变-小步快跑,快速迭代)

  • J EP(JDK Enhancement Proposals):jdk 改进提案,JAVA改进的非正式的规范(specification),被正式认可的 JEP 正式写进 JDK 的发展路线图并分配版本号。

  • JSR(Java Specification Requests):java 规范提案,新特性的规范出现在这一阶段,是指向 JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。请求可以来自于小组/项目、JEP、JCP成员或者 java 社区(community)成员的提案,每个 java 版本都由相应的 JSR 支持。

JAVA的每一次版本升级都布对应的发布JEP,像JAVA9的改进提案,通过阅读官方的改进提案可以熟悉JAVA改进的地方,比如java9的模块化改进提案

1.JAVA9-模块化系统

JAVA在1995年发布第一个版本后,经过了20多年的更新迭代,暴露出一些问题:

  • java 运行环境的臃肿,每次JAVA虚拟机启动时都要占用30-60M的内存空间加载JAVA 运行时环境rt.jar。模块化解决只加载需要的类。

  • 后期引入的jar包,不同版本的类库交叉依赖导致引入的jar越来越多,然而好多jar的功能并没有用。

如上问题,还有很多很多。为了解决此类问题,JAVA9 推出了模块化系统。模块化系统本身叫jigsaw,后叫modularity。

JAVA9新特性之模块化系统和jshell体验



java9中的模块将由通常的类和新的模块声明文件(module-info.java)组成。该文件是位于 java 代码结构的顶层,该模块描述符明确地定义了我们的模块需要什么依赖关系,以及哪些模块被外部使用。在 exports 子句中未提及的所有包默认情况下将封装在模块中,不能在外部使用。

module java9-1{
   exports com.pcx.bean;
}

exports:控制着哪些包可以被其它模块访问到。所有不被导出的包默认都被封装在模块里面。

而我们在另一个module里面需要使用requires指定指明对其他module的依赖,才可以使用对应的方法。


module java9-2{
   requires java9-1;
   requires  junit;
}

2.JAVA9-jshell

①调出jshell:cmd输入jshell

JAVA9新特性之模块化系统和jshell体验


②查看帮助:/help intro

JAVA9新特性之模块化系统和jshell体验



③简单使用:

JAVA9新特性之模块化系统和jshell体验



④导入指定包:

JAVA9新特性之模块化系统和jshell体验



⑤查看已经导入的包:/imports

JAVA9新特性之模块化系统和jshell体验



⑥查看当前对话中的代码:/list

JAVA9新特性之模块化系统和jshell体验



⑦查看当前会话中创建的变量:/var



⑧查看当前会话中创建的方法:/methods

⑨使用外部编辑器编写代码:/edit







以上是关于JAVA9新特性之模块化系统和jshell体验的主要内容,如果未能解决你的问题,请参考以下文章

Java 9 新特性

开心档之Java 9 新特性

JDK9新特性

java9新特性-5-Java的REPL工具: jShell命令

Linux java9 jshell操作

jdk11新特性——JShell交互性工具