• 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
    1. package com.example.jdk11;
    2. import org.apache.http.client.methods.CloseableHttpResponse;
    3. import org.apache.http.client.methods.HttpGet;
    4. import org.apache.http.impl.client.CloseableHttpClient;
    5. import org.apache.http.impl.client.HttpClients;
    6. import java.io.BufferedReader;
    7. import java.io.IOException;
    8. import java.io.InputStreamReader;
    9. public class HttpClientExample {
    10. public static void main(String[] args) {
    11. CloseableHttpClient httpClient = HttpClients.createDefault();
    12. HttpGet httpGet = new HttpGet("http://www.baidu.com");
    13. try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
    14. BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
    15. String line;
    16. while ((line = reader.readLine()) != null) {
    17. System.out.println(line);
    18. }
    19. } catch (IOException e) {
    20. e.printStackTrace();
    21. }
    22. }
    23. }

    倘若module-info.java文件

    1. module java8Over {
    2. requires org.apache.httpcomponents.httpclient;
    3. requires org.apache.httpcomponents.httpcore;
    4. requires org.apache.commons.codec;
    5. requires java.net.http;
    6. //exports com.example.jdk9.mokuai;
    7. }

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

  • 相关阅读:
    【单片机毕业设计】【mcuclub-hj-005-3】基于单片机的空气质量(天然气或煤气)检测的设计
    jQuery的使用,下载以及一些小案例
    ANR问题分析手记
    【CSS】CSS实现三角形(二)
    软件测试自学还是报班好?
    十大 CI/CD 安全风险(三)
    基于springboot+mybatis+thymeleaf+redis+html实现的农村在线交易平台项目(含支付模块)
    重新整理angular+springBoot+mybatis所遇到的问题
    毕昇编译器优化:Lazy Code Motion
    notepad++编辑多个位置
  • 原文地址:https://blog.csdn.net/m0_63251896/article/details/133954645