首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JAVA9模块化详解(二)——模块的使用

JAVA9模块化详解(二)——模块的使用 二、模块的使用 各自的模块可以在模块工件中定义,要么就是在编译期或者运行期嵌入的环境中。...当一个模块中的代码涉及到一个包(package)中的类型时,这个包肯定被定义在这个模块中,或者这个模块确切读取的其他模块中。...因此,当寻找确切类型的定义时,不需要在多个模块中寻找,也不需要更糟的在类路径下寻找。...解决这个问题的一个方法是希望每一个模块的作者,在依赖了java.sql模块并且使用Logger类时,在声明一个java.logging的依赖。...至此,JAVA9模块化详解(二)——模块的使用就先介绍到这里,这个系列还会继续,请大家多多支持,有不妥之处,还请大家多多交流。

58820

JAVA9模块化详解(二)——模块的使用

2.3 可读性 在模块图中,当一个模块直接依赖另一个时,第一个模块中的代码可以访问第二个模块中的类型。因此,我们说第一个模块读取第二个模块,相等的,也可以说第二个模块对于第一个模块是可读的。...当一个模块中的代码涉及到一个包(package)中的类型时,这个包肯定被定义在这个模块中,或者这个模块确切读取的其他模块中。...因此,当寻找确切类型的定义时,不需要在多个模块中寻找,也不需要更糟的在类路径下寻找。...解决这个问题的一个方法是希望每一个模块的作者,在依赖了java.sql模块并且使用Logger类时,在声明一个java.logging的依赖。...至此,JAVA9模块化详解(二)——模块的使用就先介绍到这里,这个系列还会继续,请大家多多支持,有不妥之处,还请大家多多交流。

36620
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    java9 模块化系统小试

    JPMS 全称是 Java Platform Module system(Java 平台模块化系统)。它的目的简单直接:编译期间检查和强化封装。...编译期检查 JPMS 要求每个定义好的模块下面放置 module-info.java 描述文件(Module Descriptor),用于描述本模块依赖(requires)外部哪些模块,以及对外暴露(exports...一旦描述了依赖外部的哪些模块,编译时,就会自动检查这些模块是否已经处于module path 下,如果不在就会报错。...另外值得注意的是,以前即使是private的方法,使用反射调用setAccessible(true)也可以随意调用,但在 JPMS 下是行不通的。...这个模块会导出包 com.lambeta,事实上,我的项目只有一个包。另外,它需要依赖 guava 模块。 2. gradle 插件 gradle 如何支持 java9 的模块系统,这篇文章已经细说。

    78230

    JAVA9模块化详解(一)——模块化的定义

    前言 java9已经出来有一段时间了,今天向大家介绍一下java9的一个重要特性——模块化。...命名模块的推荐方式是使用反转域名的方式,它长期被推荐使用到包的命名。模块的名字经常是它的输出包的前缀,但是这个关系也不是强制的。模块的声明既不包括版本号,也不包括它依赖模块的版本号。...一个IDE或者打包工具可以插入一些包含标记信息的变量,例如:模块的版本、标题、描述、和许可等。这些信息在编译期和运行期都会被模块系统映射成可使用的信息。它也可以被下游工具构建时使用。...指定的变量的集合将被标准化,但是其他的工具和框架也可以定义额外的需要的变量。没有标准化的变量在模块系统中是没有效果的。 1.4 平台模块 java9将使用模块化系统将平台分割成若干个子模块。...至此,java9的模块化先定义到这里,翻译的不好,大家见谅,稍后会继续介绍java模块化的使用。

    53720

    JAVA9模块化详解(一)——模块化的定义

    JAVA9模块化详解 前言 java9已经出来有一段时间了,今天向大家介绍一下java9的一个重要特性——模块化。...命名模块的推荐方式是使用反转域名的方式,它长期被推荐使用到包的命名。模块的名字经常是它的输出包的前缀,但是这个关系也不是强制的。模块的声明既不包括版本号,也不包括它依赖模块的版本号。...一个IDE或者打包工具可以插入一些包含标记信息的变量,例如:模块的版本、标题、描述、和许可等。这些信息在编译期和运行期都会被模块系统映射成可使用的信息。它也可以被下游工具构建时使用。...指定的变量的集合将被标准化,但是其他的工具和框架也可以定义额外的需要的变量。没有标准化的变量在模块系统中是没有效果的。 1.4 平台模块 java9将使用模块化系统将平台分割成若干个子模块。...至此,java9的模块化先定义到这里,翻译的不好,大家见谅,稍后会继续介绍java模块化的使用。

    90410

    python的datetime模块处理时

    python的datetime模块主要用来处理时间,里面包含很多类,包括timedelay,date,time,datetime等 开发中经常会用到模块里面的datetime类,这是一个表示日期时间的类..., hour=0, minute=0, second=0) ,创建一个新的datetime对象时,必须传参数年月日 2.datetime对象的常用方法 datetime.today()  返回当前的时间...datetime.now(tz=None)  返回当前的时间 datatime.strptime(date_string, format) 将特定format形式的时间字符串转换为datetime...对象 datetime.strftime(fortmat) 将datetime对象转换为format形式的字符串 比如: In [13]: datetime.now() # 返回当前时间的datetime...,format使用%和字母组成,表示特定的意义 Y:表示年,如 2018 m:表示月份 ,如 02 d:表示天数,如  06 H:表示小时,如  11 M:表示分钟,如  34 S:表示秒数

    67420

    Java9来了,快来了解下JPMS基础吧!

    阅读“模块”相关的文章时,请注意你正在阅读的文章的作者是否来自OSGi / JBoss模块设计阵营。...(我从来没有主动使用OSGi或JBoss模块,尽管我已经使用Eclipse和其他在内部使用OSGi的工具。)...使用模块路径(modulepath)(由JVM执行)时,所有其他软件包都将被隐藏。 与java.base(JDK的核心模块)有一个隐含的依赖关系。...访问规则 当在使用了JVM访问规则的模块路径上运行模块化jar时,如果有下列条件时,那么程序包A中的代码可以看到包B中的类型: • 类型为 public; • 包B被其模块导出(exports); •...不幸的是,事情并没有这么单纯,有很多地方可能出错。 所有使用module-info文件仅适用于在模块路径上使用模块化jar。

    2.8K80

    模块的使用

    Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用 Python模块的标准文件模板   第一行到import语句之前是标准的模板,当然也可以全部删掉不写,但是,按标准办事肯定没错...UTF-8编码,就是告诉解释器请使用UTF-8编码执行文件 ' a test module ' #表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释...#在命令行运行hello模块文件时,Python解释器把一个特殊变量__name__置为__main__,而如果在其他地方导入该hello模块时,if判断将失败 #因此,这种if测试可以让一个模块通过命令行运行时执行一些额外的代码...,最常见的就是运行测试 if __name__=='__main__': test() #里面可以写一些通过命令行运行该文件时的处理,其他模块调用该文件时这些处理是无法被执行的...作用域   在一个模块中,可能会定义很多函数和变量   在Python中,哪些函数和变量希望是给别人使用?哪些函数和变量是仅在模块内部使用?

    46520

    Java9之后的模块化烦恼解决(由RocketMQ升级OpenJDK11想到的)

    run(MappedFile.java:102) ~[rocketmq-store-4.5.0.jar:4.5.0] ... 13 common frames omitted 这个就是模块化导致的缺陷了...,我们知道,在Java9之后引入了模块化的概念,是将类型和资源封装在模块中,并仅导出其他模块要访问其公共类型的软件包。...如果模块中的软件包未导出或打开,则表示模块的设计人员无意在模块外部使用这些软件包。 这样的包可能会被修改或甚至从模块中删除,无需任何通知。...如果仍然使用这些软件包通过使用命令行选项导出或打开它们,可能会面临破坏应用程序的风险! 那么对于上面这个异常,我们怎么解决呢?可以通过加入启动参数。...打破模块封装)

    84810

    JDK8升级JDK11最全实践干货来了

    : 分类 依赖名 支持情况 说明 框架 Spring2.X/boot 支持 使用JDK11自带原生HttpClient时,会遇到:1、spring启动时,会遇到注入某些类时,无法通过反射的方式访问其所在的包...特别是在使用繁多的Java存档文件(Java Archive, JAR)时,这一问题变得更加突出。为了应对这种复杂性,模块化能够很好地管理和减少代码的复杂性。因此自Java9开始,引入了模块化系统。...通过模块化,Java本身也得以进行模块化改进。 5.1 模块化是什么 模块化指的是JAVA平台的模块系统(Java Platform Module System),简称JPMS。...JPMS引入一种新方式来组织和构建Java应用程序,它将代码分为相互独立、可复用的模块。每个块都有自己的命名空间,明确声明并控制其他模块的访问权限。...拆分包始终是不正常的,而当使用解析可传递依赖项的构建工具(如Maven等)时,很容易出现同一个库的多个版本,当Java模块系统检测到一个包存在于模块路径上的多个模块中时,就会拒绝启动。

    1.2K20

    PyMySQL模块的使用

    PyMySQL介绍   PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,Python2系列中则使用mysqldb。...Django中也可以使用PyMySQL连接MySQL数据库。 PyMySQL安装   在CMD终端中安装: pip install pymysql 也可以在PyCharm里安装。...连接数据库 注意事项: 有一个MySQL数据库,并且已经启动; 拥有可以连接数据库的用户名和密码; 有一个有权限操作的database 基本使用: # 导入pymysql模块 import pymysql...增删改查操作 增 # 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect( host=“你的数据库地址”, port...(关联操作时会用到) # 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect( host=“你的数据库地址”,

    1.6K70

    time模块的使用

    timestamp(时间戳):指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数 struct_time(时间元组):可以使用localtime...和gmtime将时间戳转换为时间元组,注意:localtime和structtime用法相似,但gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time format_string...# 注意:gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。...# localtime与gmtime相差8个小时(localtime比gmtime多8小时) localtime = time.localtime(timestamp) print(localtime)...%d 一个月中的第几天(01 - 31) %H 一天中的第几个小时(24小时制,00 - 23) %I 第几个小时(12小时制,01 - 12) %j 一年中的第几天(001 - 366)

    1.1K20

    pymysql模块的使用

    pymysql的下载和使用 之前我们都是通过MySQL自带的命令行客户端工具mysql来操作数据库,那如何在python程序中操作数据库呢?...这就用到了pymysql模块,该模块本质就是一个套接字客户端软件,使用前需要事先安装 (1)pymysql模块的下载 pip3 install pymysql ?...用户操作dbpymysql的所有权限 Query OK, 0 rows affected (0.00 sec) 下面使用python代码连接数据库,表中账号为zhangsan,密码:123 # 实现:使用...,只能看到每行的数据,却不知道每一列代表的是什么,这个时候可以使用以下方式来返回字典,每一行的数据都会生成一个字典: 在实例化的时候,将属性cursor设置为pymysql.cursors.DictCursor...,可以理解开始的时候,有一个行指针指着第一行的上方,获取一行,它就向下移动一行,所以当行指针到最后一行的时候,就不能再获取到行的内容,所以我们可以使用如下方法来移动行指针: 第一个值为移动的行数,整数为向下移动

    1.3K30

    详解Python项目开发时自定义模块中对象的导入和使用

    背景:1)任何一个Python程序文件既可以直接执行,也可以作为模块导入再使用其中的对象;2)对于大型系统开发,一般不会把所有代码放到单个文件中,而是根据功能将其分类并分散多个模块中,在编写小型项目时最好也能养成这样的好习惯...本文介绍Python自定义模块中对象的导入和使用。...add,这是因为child文件夹被认为是一个包,而add.py是包中的子模块,并没有随着child一起导入。...继续执行下面的代码: >>> import child.add >>> child.add.add(3,5) 8 自定义模块中的对象成功被导入并能够正常使用,也就是说,如果要使用的对象在子模块中,应该单独使用...原因在于,如果文件夹作为包来使用,并且其中包含__init__.py文件时,__init__.py文件中的特殊列表成员__all__用来指定from ... import *时哪些子模块或对象会被自动导入

    3K50

    book-sample 模块下的 class 不能位于 main 模块启动时

    实例化一个自定义的类加载器 // book-sample 模块上的类所在根目录,请根据自己电脑的实际情况更改 MyClassloader myClassloader =...// 即使存在,根据本文本一开始的场景,也因为同时要加载同名的类,而不允许存在 Object bookApiObj = bookApiClass.newInstance();...调用 BookApi 的 description() 方法 // 该方法很简单,返回类型为标准库中的 java.lang.String, 因此代码书写也相对容易 Method...调用 BookApi 的 getBooksOfAuthor 方法 // 该方法的返回值是一个集合,而集合中的对象在 Classpath 中不存在, // 获取集合元素的属性和方法的代码将会显示很冗长...(Object book : books) { // books 集合中的对象类型为 vip.guzb.clrdemo.Book, // 但由于是使用单独的类加载器加载的

    8610

    模块化系统(JPMS):什么是Java模块化?如何在JDK 9+中设计模块化项目?

    模块化系统(JPMS):什么是Java模块化?如何在JDK 9+中设计模块化项目? 引言:模块化项目的挑战与突破 “猫哥,我的项目依赖冲突频繁,模块职责不清,代码难以维护。...为了解决这些问题,Java 在 JDK 9 引入了 模块化系统(JPMS),为开发者提供了一个设计清晰、高效、安全的模块化解决方案。 本文亮点 猫头虎将为你详细讲解: 什么是Java模块化系统?...正文 模块化系统(JPMS)的核心概念 Java模块化系统,即 Java Platform Module System,是JDK 9中的一项革命性改进,旨在优化大型项目的开发效率和维护成本。...A: 避免模块之间循环依赖。 使用 jdeps 工具分析模块的依赖关系。 Q2:模块化是否影响性能? A:模块化通过按需加载机制优化了性能,尤其适用于大型项目。...未来趋势与总结:模块化项目的前景 模块化系统(JPMS)已经成为 Java 高级开发者 必备的技术工具。随着 微服务架构 和 云原生开发 的普及,模块化设计将进一步推动 大型项目 的高效开发。

    36410
    领券