8173303: Add module-subgraph images to main platform documentation
Co-authored-by: Jonathan Gibbons <jonathan.gibbons@oracle.com> Reviewed-by: alanb, chegar, erikj, ihse, lancea
This commit is contained in:
parent
4fa7bde21b
commit
6d568376c9
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -31,7 +31,7 @@ include MakeBase.gmk
|
|||||||
include ModuleTools.gmk
|
include ModuleTools.gmk
|
||||||
|
|
||||||
GENGRAPHS_DIR := $(IMAGES_OUTPUTDIR)/gengraphs
|
GENGRAPHS_DIR := $(IMAGES_OUTPUTDIR)/gengraphs
|
||||||
SPEC_DOTFILES_DIR := $(IMAGES_OUTPUTDIR)/spec-dotfiles
|
SPEC_DOTFILES_DIR := $(GENGRAPHS_DIR)/spec-dotfiles
|
||||||
TOOLS_MODULE_SRCDIR := $(JDK_TOPDIR)/make/src/classes/build/tools/jigsaw
|
TOOLS_MODULE_SRCDIR := $(JDK_TOPDIR)/make/src/classes/build/tools/jigsaw
|
||||||
|
|
||||||
$(GENGRAPHS_DIR)/jdk.dot: $(BUILD_JIGSAW_TOOLS)
|
$(GENGRAPHS_DIR)/jdk.dot: $(BUILD_JIGSAW_TOOLS)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -23,8 +23,9 @@
|
|||||||
# questions.
|
# questions.
|
||||||
#
|
#
|
||||||
|
|
||||||
include $(SPEC)
|
ifndef _MODULE_TOOLS_GMK
|
||||||
include MakeBase.gmk
|
_MODULE_TOOLS_GMK := 1
|
||||||
|
|
||||||
include JavaCompilation.gmk
|
include JavaCompilation.gmk
|
||||||
|
|
||||||
TOOLS_CLASSES_DIR := $(BUILDTOOLS_OUTPUTDIR)/tools_jigsaw_classes
|
TOOLS_CLASSES_DIR := $(BUILDTOOLS_OUTPUTDIR)/tools_jigsaw_classes
|
||||||
@ -32,7 +33,7 @@ TOOLS_CLASSES_DIR := $(BUILDTOOLS_OUTPUTDIR)/tools_jigsaw_classes
|
|||||||
# To avoid reevaluating the compilation setup for the tools each time this file
|
# To avoid reevaluating the compilation setup for the tools each time this file
|
||||||
# is included, the actual compilation is handled by CompileModuleTools.gmk. The
|
# is included, the actual compilation is handled by CompileModuleTools.gmk. The
|
||||||
# following trick is used to be able to declare a dependency on the built tools.
|
# following trick is used to be able to declare a dependency on the built tools.
|
||||||
BUILD_TOOLS_JDK := $(call SetupJavaCompilationCompileTarget, \
|
BUILD_JIGSAW_TOOLS := $(call SetupJavaCompilationCompileTarget, \
|
||||||
BUILD_JIGSAW_TOOLS, $(TOOLS_CLASSES_DIR))
|
BUILD_JIGSAW_TOOLS, $(TOOLS_CLASSES_DIR))
|
||||||
|
|
||||||
TOOL_GENGRAPHS := $(BUILD_JAVA) -esa -ea -cp $(TOOLS_CLASSES_DIR) \
|
TOOL_GENGRAPHS := $(BUILD_JAVA) -esa -ea -cp $(TOOLS_CLASSES_DIR) \
|
||||||
@ -47,3 +48,5 @@ TOOL_ADD_PACKAGES_ATTRIBUTE := $(BUILD_JAVA) $(JAVA_FLAGS_SMALL) \
|
|||||||
-cp $(TOOLS_CLASSES_DIR) \
|
-cp $(TOOLS_CLASSES_DIR) \
|
||||||
--add-exports java.base/jdk.internal.module=ALL-UNNAMED \
|
--add-exports java.base/jdk.internal.module=ALL-UNNAMED \
|
||||||
build.tools.jigsaw.AddPackagesAttribute
|
build.tools.jigsaw.AddPackagesAttribute
|
||||||
|
|
||||||
|
endif # _MODULE_TOOLS_GMK
|
||||||
|
@ -26,7 +26,6 @@
|
|||||||
package build.tools.jigsaw;
|
package build.tools.jigsaw;
|
||||||
|
|
||||||
import com.sun.tools.jdeps.ModuleDotGraph;
|
import com.sun.tools.jdeps.ModuleDotGraph;
|
||||||
import com.sun.tools.jdeps.ModuleDotGraph.DotGraphBuilder;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.module.Configuration;
|
import java.lang.module.Configuration;
|
||||||
@ -36,10 +35,15 @@ import java.lang.module.ModuleReference;
|
|||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Properties;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate the DOT file for a module graph for each module in the JDK
|
* Generate the DOT file for a module graph for each module in the JDK
|
||||||
@ -50,13 +54,19 @@ public class GenGraphs {
|
|||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
Path dir = null;
|
Path dir = null;
|
||||||
boolean spec = false;
|
boolean spec = false;
|
||||||
|
Properties props = null;
|
||||||
for (int i=0; i < args.length; i++) {
|
for (int i=0; i < args.length; i++) {
|
||||||
String arg = args[i];
|
String arg = args[i];
|
||||||
if (arg.equals("--spec")) {
|
if (arg.equals("--spec")) {
|
||||||
spec = true;
|
spec = true;
|
||||||
|
} else if (arg.equals("--dot-attributes")) {
|
||||||
|
if (i++ == args.length) {
|
||||||
|
throw new IllegalArgumentException("Missing argument: --dot-attributes option");
|
||||||
|
}
|
||||||
|
props = new Properties();
|
||||||
|
props.load(Files.newInputStream(Paths.get(args[i])));
|
||||||
} else if (arg.equals("--output")) {
|
} else if (arg.equals("--output")) {
|
||||||
i++;
|
dir = ++i < args.length ? Paths.get(args[i]) : null;
|
||||||
dir = i < args.length ? Paths.get(args[i]) : null;
|
|
||||||
} else if (arg.startsWith("-")) {
|
} else if (arg.startsWith("-")) {
|
||||||
throw new IllegalArgumentException("Invalid option: " + arg);
|
throw new IllegalArgumentException("Invalid option: " + arg);
|
||||||
}
|
}
|
||||||
@ -67,11 +77,14 @@ public class GenGraphs {
|
|||||||
System.exit(1);
|
System.exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// setup and configure the dot graph attributes
|
|
||||||
initDotGraphAttributes();
|
|
||||||
Files.createDirectories(dir);
|
Files.createDirectories(dir);
|
||||||
|
ModuleGraphAttributes attributes;
|
||||||
GenGraphs genGraphs = new GenGraphs(dir, spec);
|
if (props != null) {
|
||||||
|
attributes = new ModuleGraphAttributes(props);
|
||||||
|
} else {
|
||||||
|
attributes = new ModuleGraphAttributes();
|
||||||
|
}
|
||||||
|
GenGraphs genGraphs = new GenGraphs(dir, spec, attributes);
|
||||||
|
|
||||||
// print dot file for each module
|
// print dot file for each module
|
||||||
Map<String, Configuration> configurations = new HashMap<>();
|
Map<String, Configuration> configurations = new HashMap<>();
|
||||||
@ -99,49 +112,149 @@ public class GenGraphs {
|
|||||||
genGraphs.genDotFiles(configurations);
|
genGraphs.genDotFiles(configurations);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void initDotGraphAttributes() {
|
/**
|
||||||
int h = 1000;
|
* Custom dot file attributes.
|
||||||
DotGraphBuilder.weight("java.se", "java.sql.rowset", h * 10);
|
*/
|
||||||
DotGraphBuilder.weight("java.sql.rowset", "java.sql", h * 10);
|
static class ModuleGraphAttributes implements ModuleDotGraph.Attributes {
|
||||||
DotGraphBuilder.weight("java.sql", "java.xml", h * 10);
|
static Map<String, String> DEFAULT_ATTRIBUTES = Map.of(
|
||||||
DotGraphBuilder.weight("java.xml", "java.base", h * 10);
|
"ranksep", "0.6",
|
||||||
|
"fontsize", "12",
|
||||||
|
"fontcolor", BLACK,
|
||||||
|
"fontname", "DejaVuSans",
|
||||||
|
"arrowsize", "1",
|
||||||
|
"arrowwidth", "2",
|
||||||
|
"arrowcolor", DARK_GRAY,
|
||||||
|
// custom
|
||||||
|
"requiresMandatedColor", LIGHT_GRAY,
|
||||||
|
"javaSubgraphColor", ORANGE,
|
||||||
|
"jdkSubgraphColor", BLUE
|
||||||
|
);
|
||||||
|
|
||||||
DotGraphBuilder.sameRankNodes(Set.of("java.logging", "java.scripting", "java.xml"));
|
final Map<String, Integer> weights = new HashMap<>();
|
||||||
DotGraphBuilder.sameRankNodes(Set.of("java.sql"));
|
final List<Set<String>> ranks = new ArrayList<>();
|
||||||
DotGraphBuilder.sameRankNodes(Set.of("java.compiler", "java.instrument"));
|
final Map<String, String> attrs;
|
||||||
DotGraphBuilder.sameRankNodes(Set.of("java.desktop", "java.management"));
|
ModuleGraphAttributes(Map<String, String> attrs) {
|
||||||
DotGraphBuilder.sameRankNodes(Set.of("java.corba", "java.xml.ws"));
|
int h = 1000;
|
||||||
DotGraphBuilder.sameRankNodes(Set.of("java.xml.bind", "java.xml.ws.annotation"));
|
weight("java.se", "java.sql.rowset", h * 10);
|
||||||
DotGraphBuilder.setRankSep(0.7);
|
weight("java.sql.rowset", "java.sql", h * 10);
|
||||||
DotGraphBuilder.setFontSize(12);
|
weight("java.sql", "java.xml", h * 10);
|
||||||
DotGraphBuilder.setArrowSize(1);
|
weight("java.xml", "java.base", h * 10);
|
||||||
DotGraphBuilder.setArrowWidth(2);
|
|
||||||
|
ranks.add(Set.of("java.logging", "java.scripting", "java.xml"));
|
||||||
|
ranks.add(Set.of("java.sql"));
|
||||||
|
ranks.add(Set.of("java.compiler", "java.instrument"));
|
||||||
|
ranks.add(Set.of("java.desktop", "java.management"));
|
||||||
|
ranks.add(Set.of("java.corba", "java.xml.ws"));
|
||||||
|
ranks.add(Set.of("java.xml.bind", "java.xml.ws.annotation"));
|
||||||
|
|
||||||
|
this.attrs = attrs;
|
||||||
|
}
|
||||||
|
|
||||||
|
ModuleGraphAttributes() {
|
||||||
|
this(DEFAULT_ATTRIBUTES);
|
||||||
|
}
|
||||||
|
ModuleGraphAttributes(Properties props) {
|
||||||
|
this(toAttributes(props));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double rankSep() {
|
||||||
|
return Double.valueOf(attrs.get("ranksep"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int fontSize() {
|
||||||
|
return Integer.valueOf(attrs.get("fontsize"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String fontName() {
|
||||||
|
return attrs.get("fontname");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String fontColor() {
|
||||||
|
return attrs.get("fontcolor");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int arrowSize() {
|
||||||
|
return Integer.valueOf(attrs.get("arrowsize"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int arrowWidth() {
|
||||||
|
return Integer.valueOf(attrs.get("arrowwidth"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String arrowColor() {
|
||||||
|
return attrs.get("arrowcolor");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Set<String>> ranks() {
|
||||||
|
return ranks;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String requiresMandatedColor() {
|
||||||
|
return attrs.get("requiresMandatedColor");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String javaSubgraphColor() {
|
||||||
|
return attrs.get("javaSubgraphColor");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String jdkSubgraphColor() {
|
||||||
|
return attrs.get("jdkSubgraphColor");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int weightOf(String s, String t) {
|
||||||
|
int w = weights.getOrDefault(s + ":" + t, 1);
|
||||||
|
if (w != 1)
|
||||||
|
return w;
|
||||||
|
if (s.startsWith("java.") && t.startsWith("java."))
|
||||||
|
return 10;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void weight(String s, String t, int w) {
|
||||||
|
weights.put(s + ":" + t, w);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Map<String, String> toAttributes(Properties props) {
|
||||||
|
return DEFAULT_ATTRIBUTES.keySet().stream()
|
||||||
|
.collect(Collectors.toMap(Function.identity(),
|
||||||
|
k -> props.getProperty(k, DEFAULT_ATTRIBUTES.get(k))));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private final Path dir;
|
private final Path dir;
|
||||||
private final boolean spec;
|
private final boolean spec;
|
||||||
GenGraphs(Path dir, boolean spec) {
|
private final ModuleGraphAttributes attributes;
|
||||||
|
GenGraphs(Path dir, boolean spec, ModuleGraphAttributes attributes) {
|
||||||
this.dir = dir;
|
this.dir = dir;
|
||||||
this.spec = spec;
|
this.spec = spec;
|
||||||
|
this.attributes = attributes;
|
||||||
}
|
}
|
||||||
|
|
||||||
void genDotFiles(Map<String, Configuration> configurations) throws IOException {
|
void genDotFiles(Map<String, Configuration> configurations) throws IOException {
|
||||||
ModuleDotGraph dotGraph = new ModuleDotGraph(configurations, spec);
|
ModuleDotGraph dotGraph = new ModuleDotGraph(configurations, spec);
|
||||||
dotGraph.genDotFiles(dir);
|
dotGraph.genDotFiles(dir, attributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true for any name if generating graph for non-spec;
|
||||||
|
* otherwise, returns true except "jdk" and name with "jdk.internal." prefix
|
||||||
|
*/
|
||||||
boolean accept(String name, ModuleDescriptor descriptor) {
|
boolean accept(String name, ModuleDescriptor descriptor) {
|
||||||
if (!spec) return true;
|
if (!spec)
|
||||||
|
|
||||||
if (name.equals("jdk"))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (name.equals("java.se") || name.equals("java.se.ee"))
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// only the module that has exported API
|
return !name.equals("jdk") && !name.startsWith("jdk.internal.");
|
||||||
return descriptor.exports().stream()
|
|
||||||
.filter(e -> !e.isQualified())
|
|
||||||
.findAny().isPresent();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,2 @@
|
|||||||
|
arrowcolor=#999999
|
||||||
|
requiresMandatedColor=#999999
|
96
jdk/make/src/classes/build/tools/taglet/ModuleGraph.java
Normal file
96
jdk/make/src/classes/build/tools/taglet/ModuleGraph.java
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
*
|
||||||
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package build.tools.taglet;
|
||||||
|
|
||||||
|
import java.util.EnumSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import javax.lang.model.element.Element;
|
||||||
|
import com.sun.source.doctree.DocTree;
|
||||||
|
import jdk.javadoc.doclet.Taglet;
|
||||||
|
import static jdk.javadoc.doclet.Taglet.Location.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A block tag to optionally insert a reference to a module graph.
|
||||||
|
*/
|
||||||
|
public class ModuleGraph implements Taglet {
|
||||||
|
private static final boolean enableModuleGraph =
|
||||||
|
Boolean.getBoolean("enableModuleGraph");
|
||||||
|
|
||||||
|
/** Returns the set of locations in which a taglet may be used. */
|
||||||
|
@Override
|
||||||
|
public Set<Location> getAllowedLocations() {
|
||||||
|
return EnumSet.of(MODULE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInlineTag() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "moduleGraph";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString(List<? extends DocTree> tags, Element element) {
|
||||||
|
if (!enableModuleGraph) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
String moduleName = element.getSimpleName().toString();
|
||||||
|
String imageFile = moduleName + "-graph.png";
|
||||||
|
int thumbnailHeight = -1;
|
||||||
|
String hoverImage = "";
|
||||||
|
if (!moduleName.equals("java.base")) {
|
||||||
|
thumbnailHeight = 100; // also appears in the stylesheet
|
||||||
|
hoverImage = "<span>"
|
||||||
|
+ getImage(moduleName, imageFile, -1, true)
|
||||||
|
+ "</span>";
|
||||||
|
}
|
||||||
|
return "<dt>"
|
||||||
|
+ "<span class=\"simpleTagLabel\">Module Graph:</span>\n"
|
||||||
|
+ "</dt>"
|
||||||
|
+ "<dd>"
|
||||||
|
+ "<a class=moduleGraph href=\"" + imageFile + "\">"
|
||||||
|
+ getImage(moduleName, imageFile, thumbnailHeight, false)
|
||||||
|
+ hoverImage
|
||||||
|
+ "</a>"
|
||||||
|
+ "</dd>";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final String VERTICAL_ALIGN = "vertical-align:top";
|
||||||
|
private static final String BORDER = "border: solid lightgray 1px;";
|
||||||
|
|
||||||
|
private String getImage(String moduleName, String file, int height, boolean useBorder) {
|
||||||
|
return String.format("<img style=\"%s\" alt=\"Module graph for %s\" src=\"%s\"%s>",
|
||||||
|
useBorder ? BORDER + " " + VERTICAL_ALIGN : VERTICAL_ALIGN,
|
||||||
|
moduleName,
|
||||||
|
file,
|
||||||
|
(height <= 0 ? "" : " height=\"" + height + "\""));
|
||||||
|
}
|
||||||
|
}
|
@ -26,6 +26,7 @@
|
|||||||
/**
|
/**
|
||||||
* Defines the foundational APIs of the Java SE Platform.
|
* Defines the foundational APIs of the Java SE Platform.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.base {
|
module java.base {
|
||||||
|
@ -24,8 +24,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines an API for transferring data between and within applications.
|
* Defines the API for transferring data between and within applications.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.datatransfer {
|
module java.datatransfer {
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
* Defines the AWT and Swing user interface toolkits, plus APIs for
|
* Defines the AWT and Swing user interface toolkits, plus APIs for
|
||||||
* accessibility, audio, imaging, printing, and JavaBeans.
|
* accessibility, audio, imaging, printing, and JavaBeans.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.desktop {
|
module java.desktop {
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
* Defines services that allow agents to
|
* Defines services that allow agents to
|
||||||
* instrument programs running on the JVM.
|
* instrument programs running on the JVM.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.instrument {
|
module java.instrument {
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/**
|
/**
|
||||||
* Defines the Java Logging API.
|
* Defines the Java Logging API.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.logging {
|
module java.logging {
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
* and load the appropriate {@code JMXConnectorServerProvider} service
|
* and load the appropriate {@code JMXConnectorServerProvider} service
|
||||||
* implementation for the given protocol.
|
* implementation for the given protocol.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.management.rmi {
|
module java.management.rmi {
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
* The JMX API consists of interfaces for monitoring and management of the
|
* The JMX API consists of interfaces for monitoring and management of the
|
||||||
* JVM and other components in the Java runtime.
|
* JVM and other components in the Java runtime.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.management {
|
module java.management {
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/**
|
/**
|
||||||
* Defines the Java Naming and Directory Interface (JNDI) API.
|
* Defines the Java Naming and Directory Interface (JNDI) API.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.naming {
|
module java.naming {
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/**
|
/**
|
||||||
* Defines the Preferences API.
|
* Defines the Preferences API.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.prefs {
|
module java.prefs {
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/**
|
/**
|
||||||
* Defines the Remote Method Invocation (RMI) API.
|
* Defines the Remote Method Invocation (RMI) API.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.rmi {
|
module java.rmi {
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/**
|
/**
|
||||||
* Defines the Scripting API.
|
* Defines the Scripting API.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.scripting {
|
module java.scripting {
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
* This module requires {@code java.se} and supplements it with modules
|
* This module requires {@code java.se} and supplements it with modules
|
||||||
* that define CORBA and Java EE APIs. These modules are upgradeable.
|
* that define CORBA and Java EE APIs. These modules are upgradeable.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
* The modules defining CORBA and Java EE APIs are not required by
|
* The modules defining CORBA and Java EE APIs are not required by
|
||||||
* this module, but they are required by {@code java.se.ee}.
|
* this module, but they are required by {@code java.se.ee}.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.se {
|
module java.se {
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
* <P>
|
* <P>
|
||||||
* This module also contains GSS-API mechanisms including Kerberos v5 and SPNEGO.
|
* This module also contains GSS-API mechanisms including Kerberos v5 and SPNEGO.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.security.jgss {
|
module java.security.jgss {
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
* This module also contains SASL mechanisms including DIGEST-MD5,
|
* This module also contains SASL mechanisms including DIGEST-MD5,
|
||||||
* CRAM-MD5, and NTLM.
|
* CRAM-MD5, and NTLM.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.security.sasl {
|
module java.security.sasl {
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/**
|
/**
|
||||||
* Defines the Java Smart Card I/O API.
|
* Defines the Java Smart Card I/O API.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.smartcardio {
|
module java.smartcardio {
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/**
|
/**
|
||||||
* Defines the JDBC RowSet API.
|
* Defines the JDBC RowSet API.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.sql.rowset {
|
module java.sql.rowset {
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/**
|
/**
|
||||||
* Defines the JDBC API.
|
* Defines the JDBC API.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.sql {
|
module java.sql {
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
* The subset consists of RMI exception types which are mapped to CORBA system
|
* The subset consists of RMI exception types which are mapped to CORBA system
|
||||||
* exceptions by the 'Java Language to IDL Mapping Specification'.
|
* exceptions by the 'Java Language to IDL Mapping Specification'.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
@Deprecated(since="9", forRemoval=true)
|
@Deprecated(since="9", forRemoval=true)
|
||||||
|
@ -24,8 +24,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines an API for XML cryptography.
|
* Defines the API for XML cryptography.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module java.xml.crypto {
|
module java.xml.crypto {
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/**
|
/**
|
||||||
* Defines the attach API.
|
* Defines the attach API.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module jdk.attach {
|
module jdk.attach {
|
||||||
|
@ -23,6 +23,13 @@
|
|||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link java.nio.charset.Charset Charset} provider for the charsets that
|
||||||
|
* are not in {@code java.base} (mostly double byte and IBM charsets).
|
||||||
|
*
|
||||||
|
* @moduleGraph
|
||||||
|
* @since 9
|
||||||
|
*/
|
||||||
module jdk.charsets {
|
module jdk.charsets {
|
||||||
provides java.nio.charset.spi.CharsetProvider
|
provides java.nio.charset.spi.CharsetProvider
|
||||||
with sun.nio.cs.ext.ExtendedCharsets;
|
with sun.nio.cs.ext.ExtendedCharsets;
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/**
|
/**
|
||||||
* The SunPKCS11 security provider.
|
* The SunPKCS11 security provider.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module jdk.crypto.cryptoki {
|
module jdk.crypto.cryptoki {
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/**
|
/**
|
||||||
* The SunEC security provider.
|
* The SunEC security provider.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module jdk.crypto.ec {
|
module jdk.crypto.ec {
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/**
|
/**
|
||||||
* The SunMSCAPI security provider.
|
* The SunMSCAPI security provider.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module jdk.crypto.mscapi {
|
module jdk.crypto.mscapi {
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/**
|
/**
|
||||||
* The OracleUCrypto security provider.
|
* The OracleUCrypto security provider.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module jdk.crypto.ucrypto {
|
module jdk.crypto.ucrypto {
|
||||||
|
@ -23,6 +23,12 @@
|
|||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines the JDK-specific API for HTTP server.
|
||||||
|
*
|
||||||
|
* @moduleGraph
|
||||||
|
* @since 9
|
||||||
|
*/
|
||||||
module jdk.httpserver {
|
module jdk.httpserver {
|
||||||
|
|
||||||
exports com.sun.net.httpserver;
|
exports com.sun.net.httpserver;
|
||||||
|
@ -23,6 +23,13 @@
|
|||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines tools for manipulating Java Archive (JAR) files,
|
||||||
|
* including the jar and jarsigner tools.
|
||||||
|
*
|
||||||
|
* @moduleGraph
|
||||||
|
* @since 9
|
||||||
|
*/
|
||||||
module jdk.jartool {
|
module jdk.jartool {
|
||||||
exports com.sun.jarsigner;
|
exports com.sun.jarsigner;
|
||||||
exports jdk.security.jarsigner;
|
exports jdk.security.jarsigner;
|
||||||
|
@ -23,6 +23,13 @@
|
|||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines tools for diagnostics and troubleshooting a JVM,
|
||||||
|
* including the jcmd, jps, jstat and other diagnostics tools.
|
||||||
|
*
|
||||||
|
* @moduleGraph
|
||||||
|
* @since 9
|
||||||
|
*/
|
||||||
module jdk.jcmd {
|
module jdk.jcmd {
|
||||||
requires jdk.attach;
|
requires jdk.attach;
|
||||||
requires jdk.internal.jvmstat;
|
requires jdk.internal.jvmstat;
|
||||||
|
@ -23,6 +23,13 @@
|
|||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines the JMX graphical tool, jconsole, for monitoring and managing
|
||||||
|
* a running application.
|
||||||
|
*
|
||||||
|
* @moduleGraph
|
||||||
|
* @since 9
|
||||||
|
*/
|
||||||
module jdk.jconsole {
|
module jdk.jconsole {
|
||||||
requires transitive java.desktop;
|
requires transitive java.desktop;
|
||||||
requires transitive java.management;
|
requires transitive java.management;
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/**
|
/**
|
||||||
* Defines the Java Debugger Interface.
|
* Defines the Java Debugger Interface.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module jdk.jdi {
|
module jdk.jdi {
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/**
|
/**
|
||||||
* Java Debug Wire Protocol.
|
* Java Debug Wire Protocol.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module jdk.jdwp.agent {
|
module jdk.jdwp.agent {
|
||||||
|
@ -23,6 +23,12 @@
|
|||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines the Java linker tool, jlink.
|
||||||
|
*
|
||||||
|
* @moduleGraph
|
||||||
|
* @since 9
|
||||||
|
*/
|
||||||
module jdk.jlink {
|
module jdk.jlink {
|
||||||
requires jdk.internal.opt;
|
requires jdk.internal.opt;
|
||||||
requires jdk.jdeps;
|
requires jdk.jdeps;
|
||||||
|
@ -23,6 +23,12 @@
|
|||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines the API for the JavaScript Object.
|
||||||
|
*
|
||||||
|
* @moduleGraph
|
||||||
|
* @since 9
|
||||||
|
*/
|
||||||
module jdk.jsobject {
|
module jdk.jsobject {
|
||||||
requires java.desktop;
|
requires java.desktop;
|
||||||
exports netscape.javascript;
|
exports netscape.javascript;
|
||||||
|
@ -23,6 +23,13 @@
|
|||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines the tool for starting a daemon for the jstat tool to monitor
|
||||||
|
* JVM statistics remotely.
|
||||||
|
*
|
||||||
|
* @moduleGraph
|
||||||
|
* @since 9
|
||||||
|
*/
|
||||||
module jdk.jstatd {
|
module jdk.jstatd {
|
||||||
requires java.rmi;
|
requires java.rmi;
|
||||||
requires jdk.internal.jvmstat;
|
requires jdk.internal.jvmstat;
|
||||||
@ -32,4 +39,3 @@ module jdk.jstatd {
|
|||||||
|
|
||||||
provides sun.jvmstat.monitor.MonitoredHostService with sun.jvmstat.perfdata.monitor.protocol.rmi.MonitoredHostRmiService;
|
provides sun.jvmstat.monitor.MonitoredHostService with sun.jvmstat.perfdata.monitor.protocol.rmi.MonitoredHostRmiService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,6 +23,12 @@
|
|||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locale data provider for locales other than {@linkplain java.util.Locale#US US locale}.
|
||||||
|
*
|
||||||
|
* @moduleGraph
|
||||||
|
* @since 9
|
||||||
|
*/
|
||||||
module jdk.localedata {
|
module jdk.localedata {
|
||||||
provides sun.util.locale.provider.LocaleDataMetaInfo with
|
provides sun.util.locale.provider.LocaleDataMetaInfo with
|
||||||
sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo,
|
sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo,
|
||||||
|
@ -23,6 +23,12 @@
|
|||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define the JMX management agent.
|
||||||
|
*
|
||||||
|
* @moduleGraph
|
||||||
|
* @since 9
|
||||||
|
*/
|
||||||
module jdk.management.agent {
|
module jdk.management.agent {
|
||||||
requires java.management;
|
requires java.management;
|
||||||
requires java.management.rmi;
|
requires java.management.rmi;
|
||||||
|
@ -23,6 +23,12 @@
|
|||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines the JDK-specific Management Interfaces for JVM.
|
||||||
|
*
|
||||||
|
* @moduleGraph
|
||||||
|
* @since 9
|
||||||
|
*/
|
||||||
module jdk.management {
|
module jdk.management {
|
||||||
requires transitive java.management;
|
requires transitive java.management;
|
||||||
|
|
||||||
|
@ -23,6 +23,12 @@
|
|||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DNS Java Naming provider.
|
||||||
|
*
|
||||||
|
* @moduleGraph
|
||||||
|
* @since 9
|
||||||
|
*/
|
||||||
module jdk.naming.dns {
|
module jdk.naming.dns {
|
||||||
requires java.naming;
|
requires java.naming;
|
||||||
|
|
||||||
|
@ -23,6 +23,12 @@
|
|||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RMI Java Naming provider.
|
||||||
|
*
|
||||||
|
* @moduleGraph
|
||||||
|
* @since 9
|
||||||
|
*/
|
||||||
module jdk.naming.rmi {
|
module jdk.naming.rmi {
|
||||||
requires java.naming;
|
requires java.naming;
|
||||||
requires java.rmi;
|
requires java.rmi;
|
||||||
|
@ -23,6 +23,12 @@
|
|||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines the JDK-specific Networking API.
|
||||||
|
*
|
||||||
|
* @moduleGraph
|
||||||
|
* @since 9
|
||||||
|
*/
|
||||||
module jdk.net {
|
module jdk.net {
|
||||||
exports jdk.net;
|
exports jdk.net;
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,12 @@
|
|||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines the JDK-specific API for SCTP.
|
||||||
|
*
|
||||||
|
* @moduleGraph
|
||||||
|
* @since 9
|
||||||
|
*/
|
||||||
module jdk.sctp {
|
module jdk.sctp {
|
||||||
exports com.sun.nio.sctp;
|
exports com.sun.nio.sctp;
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
* Contains the implementation of the javax.security.auth.* interfaces and
|
* Contains the implementation of the javax.security.auth.* interfaces and
|
||||||
* various authentication modules.
|
* various authentication modules.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module jdk.security.auth {
|
module jdk.security.auth {
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
* Defines Java extensions to the GSS-API and an implementation of the SASL
|
* Defines Java extensions to the GSS-API and an implementation of the SASL
|
||||||
* GSSAPI mechanism.
|
* GSSAPI mechanism.
|
||||||
*
|
*
|
||||||
|
* @moduleGraph
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
module jdk.security.jgss {
|
module jdk.security.jgss {
|
||||||
|
@ -23,6 +23,12 @@
|
|||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Zip file system provider.
|
||||||
|
*
|
||||||
|
* @moduleGraph
|
||||||
|
* @since 9
|
||||||
|
*/
|
||||||
module jdk.zipfs {
|
module jdk.zipfs {
|
||||||
provides java.nio.file.spi.FileSystemProvider with jdk.nio.zipfs.ZipFileSystemProvider;
|
provides java.nio.file.spi.FileSystemProvider with jdk.nio.zipfs.ZipFileSystemProvider;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user