Java 9 揭秘(6. 封装模块)】的更多相关文章

文 by / 林本托 Tips 做一个终身学习的人. 在此章节中,主要学习以下内容: 如何声明模块依赖 模块的隐式可读性意味着什么以及如何声明它 限定导出(exports)与非限定导出之间的差异 声明模块的运行时可选依赖关系 如何打开整个模块或其选定的软件包进行深层反射 JDK 9中的访问类型 跨模块分割包 模块声明的约束 不同类型的模块:命名,未命名,显式,自动,普通和开放的模块 如何使用javap工具来解析模块的定义 一. 声明模块依赖 假设你现在已经有两个模块,分别是: com.jdojo…
Tips 做一个终身学习的人. 在本章节中,主要介绍以下内容: 什么是模块 API 如何在程序中表示模块和模块描述 如何读取程序中的模块描述 如何表示模块的版本 如何使用Module和ModuleDescriptor类读取模块的属性 如何使用Module类在运行时更新模块的定义 如何创建可用于模块的注解以及如何读取模块上使用的注解 什么是模块层和配置 如何创建自定义模块层并将模块加载到它们中 一. 什么是模块API 模块API由可以让你对模块进行编程访问的类和接口组成. 使用API,可以通过编程…
Tips 做一个终身学习的人. 在这章节中, 主要介绍以下内容: 封装Java模块的不同格式 JAR格式增强 什么是多版本JAR 如何创建和使用多版本JAR JMOD是什么格式 如何使用jmod工具来处理JMOD文件 如何创建.解压和描述JMOD文件 如何列出JMOD文件的内容 如何在JMOD文件中记录模块的哈希值以进行依赖性验证 模块可以以不同的格式打包,以便在编译时,链接时和运行时三个阶段中使用. 但并不是在所有阶段都支持这四种格式. JDK 9支持以下格式打包模块: 展开的目录 JAR格式…
Tips 做一个终身学习的人. 在此章节中,主要介绍以下内容: 什么是打破模块的封装 如何使用命令行选项将依赖项(添加需要)添加到模块 如何使用--add-exports命令行选项导出模块的未导出包,并使用可执行JAR的MANIFEST.MF文件 如何使用--add-opens命令行选项并使用可执行JAR的MANIFEST.MF文件打开模块的非开放包 如何使用--add-reads命令行选项增加模块的可读性 一. 什么是打破模块的封装 JDK 9的主要目标之一是将类型和资源封装在模块中,并仅导出…
Tips 做一个终身学习的人. 当写这篇文章时,关于Java 9的学习就先告一段落了. 首先介绍一下背景,大概两个月前,我突然有兴趣想看看Java 9,当时读了一本英文原著<Java 9 Revealed: For Early Adoption and Migration>,对Java 9 的最新改变做了非常全面的介绍.大家也都知道Java 9 的发布一再跳票,但这并不影响我们学习新技术的兴趣. 目前此书,在亚马逊和京东上都有售,是英文原版的.有兴趣可以看看. 除了想了解一下Java 9的技术…
Tips 做一个终身学习的人. 当写这篇文章时,关于Java 9的学习就先告一段落了. 首先介绍一下背景,大概两个月前,我突然有兴趣想看看Java 9,当时读了一本英文原著<Java 9 Revealed: For Early Adoption and Migration>,对Java 9 的最新改变做了非常全面的介绍.大家也都知道Java 9 的发布一再跳票,但这并不影响我们学习新技术的兴趣. 目前此书,在亚马逊和京东上都有售,是英文原版的.有兴趣可以看看. 除了想了解一下Java 9的技术…
文 by / 林本托 Tips 做一个终身学习的人. 在此章节中,主要介绍以下内容: 在JDK 9之前Java源代码用于编写,打包和部署的方式以及该方法的潜在问题 JDK 9中有哪些模块 如何声明模块及其依赖关系 如何封装模块 什么是模块路径 什么是可观察的模块 如何打印可观察模块的列表 如何打印模块的描述 本章旨在为你简要概述JDK 9中引入的模块系统.后续章节将详细介绍所有这些概念,并附有实例. 不要担心,如果你第一次不了解所有模块相关的概念. 一旦你获得开发模块代码的经验,你可以回来并重新…
Tips做一个终身学习的人. Implementing Services 在这章中,主要介绍如下内容: 什么服务,服务接口,服务提供者: 在 JDK 9之前和在JDK 9中如何实现服务 如何使用Java接口作为服务实现 如何使用ServiceLoader类加载服务提供者 如何在模块声明中使用uses语句来指定当前模块使用ServiceLoader类加载的服务接口 如何使用provides语句指定当前模块为服务接口提供的服务提供者 如何发现,过滤和选择基于他们的类的服务提供者,而不实例化它们 如何…
Tips 做一个终身学习的人. 在本章,主要介绍以下内容: 新的JDK版本控制方案是什么 如何使用Runtime.Version类解析JDK版本字符串 JDK JRE 9的新目录布局是什么 JDK 9中的批注的标准覆盖机制如何工作的 在JDK 9中使用扩展机制的变化 JDK 9中的类加载器如何工作以及模块的加载方式 资源如何封装在JDK 9中的模块中 如何使用Module,Class和ClassLoader类中的资源查找方法访问模块中的资源 jrt URL方案是什么,以及如何使用它来访问运行时映…
Tips 做一个终身学习的人. 在此章中,主要介绍以下内容: 什么是HTTP/2 Client API 如何创建HTTP客户端 如何使HTTP请求 如何接收HTTP响应 如何创建WebSocket的endpoints 如何将未经请求的数据从服务器推送到客户端 JDK 9将HTTP/2 Client API作为名为jdk.incubator.httpclient的孵化器模块. 该模块导出包含所有公共API的jdk.incubator.http包. 孵化器模块不是Java SE的一部分. 在Java…