JDK 9是Java开发语言的一个重大版本。其中最令人兴奋的新特性之一是模块化系统。模块化系统提出了一种新的代码组织方式,它可以帮助开发人员更好地组织和管理代码,从而使Java应用程序更加可维护、可扩展和安全。

Java 9的模块化系统基于模块概念,即Java开发人员现在可以将他们的代码组织成一个个小的、相互依赖的模块。每个模块都有明确的接口和实现,因此即使在代码的修改和维护时,也可以避免出现问题。

在Java 9之前,开发人员必须手动设置类路径并确保类库和依赖项正确加载。JDK 9模块化系统可以为每个模块分别定义类路径和依赖项,从而使每个模块更加清晰和独立。

JDK 9模块化系统为Java应用程序提供了三个主要方面的好处:

  1. 更安全

模块化系统能够更好地隔离代码,并且在运行时可以更有效地限制代码的访问。这就意味着,Java应用程序将更加安全,因为恶意的代码将不再有机会修改或执行其他代码。

  1. 更可维护

模块化系统可以帮助Java开发人员更好地组织和管理他们的代码。模块可以清晰地定义它们需要的依赖项,以及它们自身的接口和实现。这使得代码更加清晰、易于维护,并且更容易进行重构和扩展。

  1. 更少的冲突和更快的启动时间

在传统的Java应用程序中,类库和依赖项必须手动设置,并在启动时加载。这可能导致启动时间过长,并且可能会导致不必要的冲突。模块化系统解决了这个问题,因为每个模块的依赖项都是明确的,因此运行时加载和启动时间将更快,并且不会发生冲突。

总的来说,JDK 9模块化系统是一个伟大的改进。它可以帮助Java开发人员更好地组织和管理他们的代码,并提高应用程序的安全性、可维护性和性能。如果你是一个Java开发人员,你应该更新到JDK 9,并开始使用模块化系统来组织你的代码。

这里先解释一下,你的项目倘若没有module-info.java这个文件,那么一切都按照原先的形势执行,这里先解释一些专有名称requires代表模块依赖关系,指定当前模块依赖的其他模块,exports代表模块导出,指定当前模块向其他模块暴露的包。就是一个jar包里面暴露的包是需要生产者所思考的,而消费者只需要添加requires   但是:本模块里面的,也就是同一个包(旨在module-info.java所在的目录及其子目录)里面的是不需要加requires的

例子:就比如,我上一次的例子

HttpClientExample.java
package com.example.jdk11;

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; public class HttpClientExample {
public static void main(String[] args) {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://www.baidu.com");
try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

倘若module-info.java文件

module java8Over {
requires org.apache.httpcomponents.httpclient;
requires org.apache.httpcomponents.httpcore;
requires org.apache.commons.codec;
requires java.net.http;
//exports com.example.jdk9.mokuai; }

倘若这里面,没有这些requires,则会报错,说找不到

jdk9模块化的更多相关文章

  1. 深入JVM内核---原理,诊断与优化

    JVM的概念 JAM是Java Virtual Machine的简称.意为Java虚拟机 虚拟机 指通过软件模拟的具有完整硬件系统功能的,运行在一种完整隔离环境中的完整计算机系统 有哪些虚拟机 - V ...

  2. JVM内核-原理、诊断与优化学习笔记(一):初识JVM

    文章目录 JVM的概念 JVM是Java Virtual Machine的简称.意为Java虚拟机 虚拟机 有哪些虚拟机 VMWare或者Visual Box都是使用软件模拟物理CPU的指令集 JVM ...

  3. 深入JVM内核--JVM简介

    JVM概念 jvm是指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完成计算机系统. 目前主要有vmMare.visual Box和JVM三款虚拟机. JVM使用软件模拟java字节 ...

  4. 彻底剖析JVM类加载机制

    本文仍然基于JDK8版本,从JDK9模块化器,类加载器有一些变动. 0 javac编译 java代码 public class Math { public static final int initD ...

  5. Java11实战:模块化的 Netty RPC 服务项目

    Java11实战:模块化的 Netty RPC 服务项目 作者:枫叶lhz链接:https://www.jianshu.com/p/19b81178d8c1來源:简书简书著作权归作者所有,任何形式的转 ...

  6. Java 9 模块化(Modularity)

    JDK9的发布一直在推迟,终于在2017年9月21日发布了.下面是JDK9的几个下载地址: JDK9.0.1 Windows-x64下载地址 Oracle Java 官网下载地址 OpenJDK 9官 ...

  7. 初探Java 9 的的模块化

    Java 9中最重要的功能,毫无疑问就是模块化(Module),它将自己长期依赖JRE的结构,转变成以Module为基础的组件,当然这在使用Java 9 开发也和以前有着很大的不同. Java8或更加 ...

  8. 【转载】Java 9 新特性——模块化

    来自 <http://www.jianshu.com/p/053a5ca89bbb#> 前言 年,我们将迎来 Java 语言的 22 岁生日,22岁,对于一个人而言,正是开始大展鸿图的年纪 ...

  9. JDK各个版本比较 JDK5~JDK9

    JDK5 自动装箱与拆箱: 枚举 静态导入,如:import staticjava.lang.System.out 可变参数(Varargs) 内省(Introspector),主要用于操作JavaB ...

  10. Java9模块化(Jigsaw)初识

    Java9经历了多次跳票,终于要在9月份正式发布,原计划Jigsaw在Java7就有的,也终于在Java9里面提供了,简单总结下. 对比 Java9 以前 上面2个图分别对应的分别是JDK8/9的目录 ...

随机推荐

  1. Auto-GPT免费尝鲜之初体验-使用攻略和总结

    写在前面的废话 ChatGPT 的交互模式,是和一个 "人" 对话聊天. 如果你想了解更多ChatGPT和AI绘画的相关知识,请参考:ChatGPT注册和变现思路,AI绘画教程汇总 ...

  2. LeetCode952三部曲之一:解题思路和初级解法(137ms,超39%)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 题目描述 难度:困难 编程语言:Java 给定一个由不 ...

  3. C#应用程序的多语言方案 - 开源研究系列文章

    今天讲讲笔者自创的C#应用程序多语言的方案. 这个多语言方案,主要是对应用的窗体及其控件进行检索,然后根据控件的名称进行在语言字典里进行检索获取到对应的语言文本进行赋值显示的.笔者对网上的多语言方案进 ...

  4. Solution Set -「CF 1490」

    「CF 1490A」Dense Array Link. 显然不满足的 adjacent elements 之间一直加 \(\min\times2,\min\times4,\cdots,\min\tim ...

  5. [自然语言处理] 基于pycorrector实现文本纠错

    文本纠错(Text Error Correction)技术旨在自动修正输入文本中的拼写.语法.标点符号等错误,以提高文本的准确性.通顺性和规范性.该技术可以通过自然语言处理技术实现,基于上下文和语言规 ...

  6. 2020 ICPC 南京站

    gym A. Ah, It's Yesterday Once More 有趣的题,但场上的人恐怕不会这么想( 构造一条长路径,且拐弯处在不同边界.这样每条竖线合并后都在一边,还需要走一遍才能合并到一起 ...

  7. AOP(面向切面编程)

    什么是AOP AOP(Aspect Oriented Programming,面向切面编程),通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. AOP的作用 利用AOP编程可以对业务逻 ...

  8. Sentinel系列之SlotChain、NodeSelectorSlot、ClusterBuilderSlot分析

    本文基于Sentinel 1.8.6版本分析 1. SlotChain 我们从入口com.alibaba.csp.sentinel.SphU#entry(java.lang.String) 开始分析. ...

  9. oracle多账套(用户)引用同一个账套的表或视图数据

    1.赋权限访问nbjf账套权限给到其他账套用户. grant select on nbjf.receivables to gzjf,hfjf,hfjy; 2.分别登陆 gzjf,hfjf,hfjy账套 ...

  10. Oracle的差异增量备份和累积增量备份

    在rman增量备份中,有差异增量和累积增量的概念. 差异增量:是备份上级及同级备份以来所有变化的数据块,差异增量是默认增量备份方式累积增量:是备份上级备份以来所有变化的块 累积增量是备份上级备份以来所 ...