JDK 9 中有哪些 jmod 文件?

JDK 9 jmods 目录中有97个jmod文件,这些文件都是干嘛的呢?我们在写代码的时候,都应该怎么用呢?

/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/jmods$ tree .
.
├── java.activation.jmod
├── java.base.jmod
├── java.compiler.jmod
├── java.corba.jmod
├── java.datatransfer.jmod
├── java.desktop.jmod
├── java.instrument.jmod
├── java.jnlp.jmod
├── java.logging.jmod
├── java.management.jmod
├── java.management.rmi.jmod
├── java.naming.jmod
├── java.prefs.jmod
├── java.rmi.jmod
├── java.scripting.jmod
├── java.se.ee.jmod
├── java.se.jmod
├── java.security.jgss.jmod
├── java.security.sasl.jmod
├── java.smartcardio.jmod
├── java.sql.jmod
├── java.sql.rowset.jmod
├── java.transaction.jmod
├── java.xml.bind.jmod
├── java.xml.crypto.jmod
├── java.xml.jmod
├── java.xml.ws.annotation.jmod
├── java.xml.ws.jmod
├── javafx.base.jmod
├── javafx.controls.jmod
├── javafx.deploy.jmod
├── javafx.fxml.jmod
├── javafx.graphics.jmod
├── javafx.media.jmod
├── javafx.swing.jmod
├── javafx.web.jmod
├── jdk.accessibility.jmod
├── jdk.attach.jmod
├── jdk.charsets.jmod
├── jdk.compiler.jmod
├── jdk.crypto.cryptoki.jmod
├── jdk.crypto.ec.jmod
├── jdk.deploy.controlpanel.jmod
├── jdk.deploy.jmod
├── jdk.dynalink.jmod
├── jdk.editpad.jmod
├── jdk.hotspot.agent.jmod
├── jdk.httpserver.jmod
├── jdk.incubator.httpclient.jmod
├── jdk.internal.ed.jmod
├── jdk.internal.jvmstat.jmod
├── jdk.internal.le.jmod
├── jdk.internal.opt.jmod
├── jdk.internal.vm.ci.jmod
├── jdk.jartool.jmod
├── jdk.javadoc.jmod
├── jdk.javaws.jmod
├── jdk.jcmd.jmod
├── jdk.jconsole.jmod
├── jdk.jdeps.jmod
├── jdk.jdi.jmod
├── jdk.jdwp.agent.jmod
├── jdk.jfr.jmod
├── jdk.jlink.jmod
├── jdk.jshell.jmod
├── jdk.jsobject.jmod
├── jdk.jstatd.jmod
├── jdk.localedata.jmod
├── jdk.management.agent.jmod
├── jdk.management.cmm.jmod
├── jdk.management.jfr.jmod
├── jdk.management.jmod
├── jdk.management.resource.jmod
├── jdk.naming.dns.jmod
├── jdk.naming.rmi.jmod
├── jdk.net.jmod
├── jdk.pack.jmod
├── jdk.packager.jmod
├── jdk.packager.services.jmod
├── jdk.plugin.dom.jmod
├── jdk.plugin.jmod
├── jdk.plugin.server.jmod
├── jdk.policytool.jmod
├── jdk.rmic.jmod
├── jdk.scripting.nashorn.jmod
├── jdk.scripting.nashorn.shell.jmod
├── jdk.sctp.jmod
├── jdk.security.auth.jmod
├── jdk.security.jgss.jmod
├── jdk.snmp.jmod
├── jdk.unsupported.jmod
├── jdk.xml.bind.jmod
├── jdk.xml.dom.jmod
├── jdk.xml.ws.jmod
├── jdk.zipfs.jmod
├── oracle.desktop.jmod
└── oracle.net.jmod

0 directories, 97 files

「Project Jigsaw,或者说Java Modularity想要解决的问题,其实在它的项目官网上有非常精确而干练的描述:

OpenJDK: Project Jigsaw The primary goals of this Project are to:

Make the Java SE Platform, and the JDK, more easily scalable down to small computing devices;

Improve the security and maintainability of Java SE Platform Implementations in general, and the JDK in particular;

Enable improved application performance; and Make it easier for developers to construct and maintain libraries and large applications, for both the Java SE and EE Platforms.」

「在没有模块化的Java中,“模块”的单位基本上就是“JAR包”。但是JAR包并不适用于模块,因为它:

不保护内部实现(外部代码有许多办法可以探索到JAR包的内部实现,包括反射)

不声明对外部的依赖

没有版本号」

「Jigsaw所引入的模块,从设计上可以堵住反射API的某些漏洞——模块是一种比较“坚固”的隔离机制。一个模块只能看到别的模块所导出的符号,而无法看到其私有的符号。这么一来,应用层面的Java代码就无法通过反射调用JDK里一些比较敏感的方法了。」

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java学习之路

SSH框架完全整合 整合Spring和Hibernate:Spring整合Struts2

大三学期渐末,事情也挺多的,上周就开始着手整合SSH框架,到现在才真正的完成,过程中碰到了许多小问题(小问题大折腾,哭脸.jpg)。本着善始善终的原则,最终把它...

86750
来自专栏ImportSource

Spring Boot处理REST API错误的正确姿势

如何正确的处理API的返回信息,让返回的错误信息提供更多的含义是一个非常值得做的功能。 默认一般返回的都是难以理解的堆栈信息,然而这些信息也许对于API的客户...

633130
来自专栏竹清助手

浅谈Linux磁盘修复e2fsck命令

检查 /dev/mapper/VolGroup00-LogVol02 是否有问题,如发现问题便自动修复:

41220
来自专栏公众号_薛勤的博客

史上最全面的Spring Boot配置文件详解

Spring Boot在工作中是用到的越来越广泛了,简单方便,有了它,效率提高不知道多少倍。Spring Boot配置文件对Spring Boot来说就是入门和...

2.5K20
来自专栏转载gongluck的CSDN博客

_CrtSetDbgFlag

_CrtSetDbgFlag 若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档。...

51290
来自专栏向治洪

svn错误对照表

#, c-format msgid "Destination '%s' is not a directory" msgstr "目的 “%s” 不是目录" ...

37950
来自专栏情情说

深入浅出MyBatis:MyBatis的所有配置

上一篇介绍了JDBC的相关概念、MyBatis的特性与Hibernate的区别、MyBatis的基本组件与生命周期,基本可以使用MyBatis了。

38380
来自专栏JetpropelledSnake

Python入门之Python中的logging模块

基本用法 下面的代码展示了logging最基本的用法。 import logging import sys # 获取logger实例,如果参数为空则返回ro...

30780
来自专栏大魏分享(微信公众号:david-share)

JavaEE中资源注入松耦合的实现 | 从开发角度看应用架构13

上下文和依赖注入(CDI)规范是Java EE规范中的许多从属规范之一。虽然CDI是在Java EE 6中引入的,但CDI背后的概念已经出现在各种框架中,包括S...

11520
来自专栏java 成神之路

Spring mvc DispatchServlet 实现机制

308100

扫码关注云+社区

领取腾讯云代金券