北京做环评备案的网站,嘉兴中小企业网站制作,网站建设的数据储存在哪里,太原微网站制作文章目录 前言模块化模块化案例 可交互的REPL工具 前言
谈到Java9大家往往第一个想到的就是Jigsaw项目#xff08;后改名为Modularity#xff09;。众所周知#xff0c;Java已经发展超过20年(95年最初发布)#xff0c;Java和相关生态在不断丰富的同时也越来越暴露出一些问… 文章目录 前言模块化模块化案例 可交互的REPL工具 前言
谈到Java9大家往往第一个想到的就是Jigsaw项目后改名为Modularity。众所周知Java已经发展超过20年(95年最初发布)Java和相关生态在不断丰富的同时也越来越暴露出一些问题:
Java运行环境的膨胀和臃肿。每次JVM启动的时候至少会有30~ 60MB的内存加载主要原因是JVM需要加载rt.jar不管其中的类是否被classloader加载第一步整个jar都会被JVM加载到内存当中去。当代码库越来越大创建复杂盘根错节的“意大利面条式代码”的几率呈指数级的增长。不同版本的类库交叉依赖导致让人头疼的问题这些都阻碍了Java 开发和运行效率的提升。很难真正地对代码进行封装而系统并没有对不同部分(也就是JAR文件)之间的依赖关系有个明确的概念。每一个公共类都可以被类路径之下任何其它的公共类所访问到这样就会导致无意中使用了并不想被公开访问的API。
模块化
(而模块化可以根据模块的需要加载程序运行需要的class) 本质上讲模块化就是在package外面包裹一层说白了就是项目下有众多模块进行管理各个模块比如一个电商项目下面有支付模块、购物模块模块跟模块之间相互调用这样代码就更安全。
模块之间的可访问性是所使用的模块和使用模块之间的双向协议模块明确地使其公共类型可供其他模块使用而且使用这些公共类型的模块明确声明对第一个模块的依赖模块中所有未导出的软件包都是模块的私有的他们不能在模块之外使用。
模块化案例
创建一个普通的Java项目
然后在这个项目下准备两个模块。 然后在JDK19Module1中添加一些类 然后我们需要考虑如何在JDK19module2中使用这个类?或者说是使用模块1中的类。
第一步,在两个模块的src下创建各自的module-info.java 创建完毕的结构为 在JDK19Module1的module-info.java文件中。设置哪些包可以向外暴露 然后在JDK19Module2的module-info.java中引入模块2 但是发现报错了,原因是,我们要把模块1添加为模块2的运行环境,具体操作如下
project structure modules JDK19Module2dependencies module lib JDK19Module1 apply ok 这个是时候在模块2中就可以使用模块1 中的类了 可交互的REPL工具
像Python和Scala 之类的语言早就有交互式编程环境REPL (read -evaluate - print -loop)了以交互式的方式对语句和表达式进行求值。开发者只需要输入一些代码就可以在编译前获得对程序的反馈。而之前的Java 版本要想执行代码必须创建文件、声明类、提供测试方法方可实现。 要想实现REPL需要一个命令JShell命令linux中是shell命令java中的shell命令 将环境变量配置为java9就可以在控制命令台使用jshell命令了如果电脑上安装了其他版本的JDK环境变量也是其他版本可以在dos上通过cd 切换到指定版本的bin目录下就可以使用该版本的jshell了. 简单的输出语句 上面操作的代码关闭窗口后就消失了。如果我们需要持久化相关的代码也可以操作 退出jshell
/exit