jdk9模块化

2023-10-21 01:21
文章标签 模块化 jdk9

本文主要是介绍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,则会报错,说找不到

这篇关于jdk9模块化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/250986

相关文章

javascript的模块化

1. 无模块化 script标签引入js文件,相互罗列,但是被依赖的放在前面,否则使用就会报错。如下: <script src="jquery.js"></script><script src="jquery_scroller.js"></script><script src="main.js"></script><script src="other1.js"></script><scri

系统架构的发展历程之模块化与组件化

模块化开发方法 模块化开发方法是指把一个待开发的软件分解成若干个小的而且简单的部分,采用对复杂事物分而治之的经典原则。模块化开发方法涉及的主要问题是模块设计的规则,即系统如何分解成模块。而每一模块都可独立开发与测试,最后再组装成一个完整软件。对一个规约进行分解,以得到模块系统结构的方法有数据结构设计法、功能分解法、数据流设计和面向对象的设计等。将系统分解成模块时,应该遵循以下规则: (1)最高模

js模块化 --- commonjs规范 原理详解

什么是commonjs规范         commonjs是一种模块化规范(nodejs的默认模块化规范,新版的nodejs已经支持es6的模块化,但它默认任然使用的是commonjs),通俗的说它将代码分割成了一个一个的模块,让不同的模块拥有自己独立的作用域(类似命名空间的隔断),在不同的模块中实现了重复命名的效果,同时支持模块的导入导出,让模块与模块之间可以相互调用,实现代码的复用。

vue2.0中ts中vuex模块化如何使用

vue2.0中ts中vuex模块化如何使用 一、store中如何配置1.index.ts2.user.ts 二、如何使用vuex 一、store中如何配置 1.index.ts import Vue from 'vue';import Vuex from 'vuex';import { UserStateType } from './modules/user'; //导入

一文搞懂 JavaScript 模块化规范:CommonJS、AMD、ES6 Module

🔥 个人主页:空白诗 文章目录 一、为什么需要模块化?二、早期的模块化标准2.1 CommonJS 规范2.1.1 CommonJS 简介2.1.2 CommonJS 的特性2.1.3 CommonJS 的使用示例2.1.4 CommonJS 可能出现的问题 2.2. AMD 规范2.2.1 AMD 简介2.2.2 AMD 的特性2.2.3 AMD 的使用示例2.2.4 A

CMD 模块化规范

CMD(Common Module Definition)是由 SeaJS 提出的模块化规范,主要用于浏览器端的 JavaScript 模块加载。CMD 规范与 AMD(Asynchronous Module Definition)规范类似,但在模块定义和依赖处理上有一些不同。CMD 规范更强调依赖的就近使用。 CMD 规范的特点 依赖就近:CMD 规范中,依赖模块的加载是按需加载的,只有在使

Vue 3.5 中的 base watch 函数与 Vue 模块化设计探索

在 Vue.js 的发展历程中,每一个版本的更新都带来了新特性和性能优化,而 Vue 3.5-beta.3 引入的 base watch 函数,虽然名字上听起来像是传统 watch API 的基础版本,但实际上它标志着 Vue 内部架构的一次重要调整。这次调整不仅影响了 Vue 的内部实现,也为开发者和下游项目如 Vue Mini 带来了新的机遇和挑战。 Vue 3 的模块化

nodejs快速入门(一)-模块化开发

随着网站开发的复杂度越来越高,js代码和js文件的增多,出现了开发者头疼的两个问题:① 命名冲突;②文件依赖。 js模块化开发可以解决这些问题。    ①变量命令冲突         在js文件中,如下创建一个变量并赋予一个函数。如果文件的代码过多,在后续的代码中再次使用add变量,就会将原来的add变量覆盖,就造成了变量的命名冲突。 var add=function(v1,v2)

wpf prism 《1》、区域 、模块化

安装prism.DryIoc 修改app.xaml <prism:PrismApplication x:Class="WpfApp3.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmln

深入解析JavaScript模块化开发:ES6模块与CommonJS的对比与应用

一、ES6模块(ES Modules) ES6模块是ECMAScript 2015(也称为ES6)引入的标准化模块系统。它在语法上原生支持,并且广泛应用于现代JavaScript开发中。ES6模块通过import和export关键字来导入和导出模块,具有静态分析的特点,这意味着在代码执行前,模块依赖关系就已经确定。 特点: 静态导入: 在编译阶段解析模块依赖关系,能够实现更高效的打包和代码分