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中的模块将由通常的类和新的模块声明文件(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
②查看帮助:/help intro
③简单使用:
④导入指定包:
⑤查看已经导入的包:/imports
⑥查看当前对话中的代码:/list
⑦查看当前会话中创建的变量:/var
⑧查看当前会话中创建的方法:/methods
⑨使用外部编辑器编写代码:/edit
以上是关于JAVA9新特性之模块化系统和jshell体验的主要内容,如果未能解决你的问题,请参考以下文章