jdk9模块化

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,则会报错,说找不到

你可能感兴趣的:(jdk8之后的新特性,jdk9的模块化设计)