终于拿到阿里架构师分享的557页深入理解Java模块系统文档

前言

Java 9通过模块系统将零散的拼图拼凑到了一起,模块系统成了Java平台的核心而不是扩展功能。Java的模块系统必须有所妥协。它不仅要保持对大量现有代码的支持,使其不至于破坏现有的生态系统,还要为不断变化的世界中尚待编写的代码提供一些有意义的帮助。
从技术层面来说,你需要理解模块和依赖的本质,以及语法和组件化的细节;从设计角度来说,你需要了解使用模块所带来的好处与坏处。像任何概念或观点一样,模块化不可以随便地加入到项目之中,采用模块化需要更多的技术和思考。现有代码在更加模块化的世界中会有什么样的改变?模块化会如何影响部署和开发?你需要知道这些问题以及你所探索问题的答案。
Java 9将Java平台模块系统(JPMS)引入到Java语言及其生态系统中,从此所有Java开发者都可以使用模块化原语。对于包括我自己在内的大多数人而言,这些是全新的概念,所以本文会从头讲起——从设计动机和基本概念一直讲到高级特性,以帮助大家了解Java模块系统。

目录


编辑
添加图片注释,不超过 140 字(可选)


本文主要内容

本文的结构有几个层次。所有章节划分为3个部分,但你不必按顺序阅读。我会按照你的需求来建议不同的阅读范围和阅读顺序。
本文共15章,分为3个部分。
第一部分展示了模块系统要改善的Java的不足之处,并解释了模块系统的基本机制,以及如何创建、构建和运行模块化应用程序。
第1章指出了Java在JAR层面缺乏对模块化的支持,讨论了该缺陷的负面影响以及模块系统如何处理这些缺陷。

编辑切换为居中
添加图片注释,不超过 140 字(可选)



编辑切换为居中
添加图片注释,不超过 140 字(可选)


第2章展示了如何构建和运行一个模块化应用程序,并且介绍了贯穿本文的应用程序示例。这一章展示的是模块系统的全景,不会探寻细节——这是后面3章要做的事情。

编辑切换为居中
添加图片注释,不超过 140 字(可选)



编辑切换为居中
添加图片注释,不超过 140 字(可选)


第3章介绍了作为基本构建单元的模块声明,以及模块系统如何处理模块声明以实现它最重要的目标:让项目更加可靠、更容易维护。

编辑切换为居中
添加图片注释,不超过 140 字(可选)



编辑切换为居中
添加图片注释,不超过 140 字(可选)


第4章展示了如何利用javac和jar命令编译和打包一个模块化项目。

编辑切换为居中
添加图片注释,不超过 140 字(可选)



编辑切换为居中
添加图片注释,不超过 140 字(可选)


第5章讲述了java命令的一些新选项。启动一个模块化应用程序很简单,因此这一章主要展示发现并解决问题所需要的工具。

编辑切换为居中
添加图片注释,不超过 140 字(可选)



编辑切换为居中
添加图片注释,不超过 140 字(可选)


第二部分抛开了完全模块化的理想项目,演示了如何将现有项目迁移到Java 9及以上版本,并且逐步将之模块化。
第6章探寻了将现有代码迁移到Java 9时人们普遍会遇到的障碍(尚未涉及任何模块创建)。

编辑切换为居中
添加图片注释,不超过 140 字(可选)



编辑切换为居中
添加图片注释,不超过 140 字(可选)


第7章讨论了两个额外的难题。单独讨论是因为它们不局限于迁移,在对项目完成迁移和模块化后,你很可能依然会遇到它们。

编辑切换为居中
添加图片注释,不超过 140 字(可选)



编辑切换为居中
添加图片注释,不超过 140 字(可选)


第8章展示了如何对运行于Java 9上的大型项目进行模块化改造。好消息是,你没必要一次性完成这个工作。

编辑切换为居中
添加图片注释,不超过 140 字(可选)



编辑切换为居中
添加图片注释,不超过 140 字(可选)


第9章总结了前面3章的内容,帮助人们制定迁移和模块化现有代码的策略。

编辑切换为居中
添加图片注释,不超过 140 字(可选)



编辑切换为居中
添加图片注释,不超过 140 字(可选)


第三部分展示了构建于第一部分所介绍的基本概念之上的高级特性。
第10章讲述了模块系统如何对API的提供者和使用者进行隔离。

编辑切换为居中
添加图片注释,不超过 140 字(可选)



编辑切换为居中
添加图片注释,不超过 140 字(可选)


第11章扩展了第3章介绍的基本依赖和访问机制,为实现现实世界中的复杂场景提供了灵活性。

编辑切换为居中
添加图片注释,不超过 140 字(可选)



编辑切换为居中
添加图片注释,不超过 140 字(可选)


第12章讨论了反射是如何被拉下神坛的,开发者需要什么样的应用程序、库和框架以使反射代码工作,以及一些新的扩展反射API的强力特性。

编辑切换为居中
添加图片注释,不超过 140 字(可选)



编辑切换为居中
添加图片注释,不超过 140 字(可选)


第13章解释了为什么模块系统通常会忽略版本信息、它对版本的有限支持,以及运行同一个模块的多个版本的可行性——尽管这很复杂,但的确可行。

编辑切换为居中
添加图片注释,不超过 140 字(可选)



编辑切换为居中
添加图片注释,不超过 140 字(可选)


第14章利用所需的模块创建自己的运行时镜像,展示了如何从模块化JDK中受益,也通过将模块化应用程序打包到镜像中并制作单一的部署单元,展示了如何从模块化应用程序中受益。

编辑切换为居中
添加图片注释,不超过 140 字(可选)



编辑切换为居中
添加图片注释,不超过 140 字(可选)


第15章利用第三部分的所有花哨功能,展示了第2章所介绍的应用程序的全貌,并且为如何更好地利用模块系统提供了建议。

编辑切换为居中
添加图片注释,不超过 140 字(可选)



编辑切换为居中
添加图片注释,不超过 140 字(可选)


需要这份557页【深入理解Java模块系统】文档的小伙伴,可以转发此文,点击此处 来获取!!

本书读者

模块系统是一个非常有意思的话题。它的基本原理和概念都很简单,但是对整个Java生态系统的影响很深远。模块系统不像lambda表达式那样可以让人立即兴奋起来,但是可以像它那样彻底改变整个Java生态系统。到目前为止,模块系统已经像编译器、private访问修饰符、if条件语句一样成了Java的一部分。每个开发者都需要了解这些Java概念,同样,他们也需要了解模块系统。
值得庆幸的是,模块系统的入门很简单。模块系统的核心只有几个简单的概念,任何具备Java基础知识的开发者都可以理解。如果你知道访问修饰符的工作原理,粗略地了解如何使用javac、jar和java,并且知道JVM怎样从JAR文件中加载类,那么基本上就满足入门条件了。
如果你就是这样一位开发者,并且喜欢接受挑战,那么我鼓励你阅读本文。你不一定能马上融会贯通,但能够深入理解模块系统,并进一步理解Java生态系统。
另一方面,对模块系统的融会贯通,需要有两三年的Java项目开发经验。一般而言,你做过的项目越大,在架构演进、依赖选择,以及解决错误依赖带来的问题等方面参与得越深,你就越会感激模块系统带来的好处。同时,这也有助于你广泛地审视模块系统对已有项目以及Java生态系统的影响。
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 12:11
点赞 评论 收藏
分享
一表renzha:手写数字识别就是一个作业而已
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务