Java SE Development Kit 9 a tant de fonctionnalités ajoutées, mais la plus importante est Java Platform Module System (JSR 376). .. Puisqu'il est expliqué sur divers sites [^ 1], je ne décrirai pas ce que c'est ici, mais j'aimerais approfondir ma compréhension en regardant des exemples réels.
[^ 1]: à titre d'exemple → https://www.slideshare.net/skrb/introduction-of-project-jigsaw
Après tout, la source fournie avec JDK est la meilleure. Dans la version Windows d'Oracle JDK 9, il semble être dans C: \ Program Files \ Java \ jdk-9.0.1 \ lib \ src.zip
par défaut. Développez ceci pour voir.
(Auparavant, ce n'était pas sous lib
, donc il a changé)
Jusqu'au JDK 8, le contenu de src.zip
avait soudainement un dossier de paquets Java, mais dans JDK 9, il y a d'abord un dossier de modules, et en dessous il y a un dossier de module-info.java
et les paquets Java.
C:\Java\JDKsrc>dir /b 1.8.0_131
com
java
javax
launcher
org
C:\Java\JDKsrc>dir /b 9.0.1
java.activation
java.base
java.compiler
java.corba
java.datatransfer
java.desktop
java.instrument
java.logging
java.management
java.management.rmi
java.naming
java.prefs
java.rmi
java.scripting
java.se
java.se.ee
java.security.jgss
java.security.sasl
java.smartcardio
java.sql
java.sql.rowset
java.transaction
java.xml
java.xml.bind
java.xml.crypto
java.xml.ws
java.xml.ws.annotation
javafx.base
javafx.controls
javafx.fxml
javafx.graphics
javafx.media
javafx.swing
javafx.web
jdk.accessibility
jdk.attach
jdk.charsets
jdk.compiler
jdk.crypto.cryptoki
jdk.crypto.ec
jdk.crypto.mscapi
jdk.dynalink
jdk.editpad
jdk.hotspot.agent
jdk.httpserver
jdk.incubator.httpclient
jdk.internal.ed
jdk.internal.jvmstat
jdk.internal.le
jdk.internal.opt
jdk.internal.vm.ci
jdk.jartool
jdk.javadoc
jdk.jcmd
jdk.jconsole
jdk.jdeps
jdk.jdi
jdk.jdwp.agent
jdk.jlink
jdk.jshell
jdk.jsobject
jdk.jstatd
jdk.localedata
jdk.management
jdk.management.agent
jdk.naming.dns
jdk.naming.rmi
jdk.net
jdk.pack
jdk.packager
jdk.packager.services
jdk.policytool
jdk.rmic
jdk.scripting.nashorn
jdk.scripting.nashorn.shell
jdk.sctp
jdk.security.auth
jdk.security.jgss
jdk.unsupported
jdk.xml.bind
jdk.xml.dom
jdk.xml.ws
jdk.zipfs
C:\Java\JDKsrc>
Jetons un coup d'œil à un.
C:\Java\JDKsrc>dir /b 9.0.1\java.activation
com
javax
module-info.java
C:\Java\JDKsrc>
C'est comme ça.
Eh bien, plus je le dis (plus je l'ouvre), plus je ressens.
Quoi qu'il en soit, ce sera le nouveau module-info.java
. Je vais lire ceci. Puisque c'est un gros problème, jetons un œil à celui de java.base
.
Le premier est un commentaire tel que le Copyright habituel, puis il y a une partie de commentaire qui commence par / **
comme le document API. En cela, une balise que je n'ai jamais vue auparavant est utilisée.
Vous pouvez vous fier à Java Platform, Standard Edition Javadoc Guide Release 9 pour en comprendre la signification.
marque | Exemple concret | sens | JDK Bug System |
---|---|---|---|
@index |
{@index jrt jrt} |
javadoc Enregistrez les mots et les phrases indexés par l'outil. |
JDK-8144287 |
@extLink |
{@extLink keytool_tool_reference keytool} |
Référence à la documentation externe. | JDK-8178725 |
@provides |
@provides java.nio.file.spi.FileSystemProvider |
@provides Déclaration d'utilisation |
JDK-8160196 |
@uses |
@uses java.lang.System.LoggerFinder |
@uses Déclaration d'utilisation |
Comme ci-dessus |
@moduleGraph |
@moduleGraph |
Sous-graphe du module | JDK-8173303 |
Je ne sais pas si ce sont toutes les balises nouvellement ajoutées, mais ce sont les 5 plus récentes dans module-info.java
de java.base
.
@ moduleGraph
s'affiche dans la documentation de l'API java.base. Hmmmmmm je vois.
exports java.io;
Et,
exports jdk.internal.jmod to
jdk.compiler,
jdk.jlink;
Se sentir comme ça. ʻExport` Lorsqu'il n'y a qu'une seule destination
exports sun.util.resources to jdk.localedata;
Il semble qu'il soit écrit sur une seule ligne comme. Concernant le fonctionnement des ʻexports`, résumé des directives de module-info.java est facile à comprendre.
À la fin
uses sun.util.spi.CalendarProvider;
provides java.nio.file.spi.FileSystemProvider with jdk.internal.jrtfs.JrtFileSystemProvider;
}
Cela se termine par. Le même blog Utilisation de SPI avec Jigsaw pour «utilise» et «fournit» est facile à comprendre.
Recommended Posts