34 import java.lang.module.ResolvedModule;
35 import java.net.URI;
36 import java.nio.file.Path;
37 import java.util.ArrayList;
38 import java.util.Collections;
39 import java.util.HashMap;
40 import java.util.HashSet;
41 import java.util.Iterator;
42 import java.util.LinkedHashMap;
43 import java.util.List;
44 import java.util.Map;
45 import java.util.NoSuchElementException;
46 import java.util.Objects;
47 import java.util.Optional;
48 import java.util.Set;
49 import java.util.function.Function;
50 import java.util.stream.Collectors;
51
52 import jdk.internal.loader.BootLoader;
53 import jdk.internal.loader.BuiltinClassLoader;
54 import jdk.internal.misc.JavaLangAccess;
55 import jdk.internal.misc.JavaLangModuleAccess;
56 import jdk.internal.misc.SharedSecrets;
57 import jdk.internal.perf.PerfCounter;
58
59 /**
60 * Initializes/boots the module system.
61 *
62 * The {@link #boot() boot} method is called early in the startup to initialize
63 * the module system. In summary, the boot method creates a Configuration by
64 * resolving a set of module names specified via the launcher (or equivalent)
65 * -m and --add-modules options. The modules are located on a module path that
66 * is constructed from the upgrade module path, system modules, and application
67 * module path. The Configuration is instantiated as the boot layer with each
68 * module in the configuration defined to a class loader.
69 */
70
71 public final class ModuleBootstrap {
72 private ModuleBootstrap() { }
73
74 private static final String JAVA_BASE = "java.base";
75
76 // the token for "all default modules"
|
34 import java.lang.module.ResolvedModule;
35 import java.net.URI;
36 import java.nio.file.Path;
37 import java.util.ArrayList;
38 import java.util.Collections;
39 import java.util.HashMap;
40 import java.util.HashSet;
41 import java.util.Iterator;
42 import java.util.LinkedHashMap;
43 import java.util.List;
44 import java.util.Map;
45 import java.util.NoSuchElementException;
46 import java.util.Objects;
47 import java.util.Optional;
48 import java.util.Set;
49 import java.util.function.Function;
50 import java.util.stream.Collectors;
51
52 import jdk.internal.loader.BootLoader;
53 import jdk.internal.loader.BuiltinClassLoader;
54 import jdk.internal.access.JavaLangAccess;
55 import jdk.internal.access.JavaLangModuleAccess;
56 import jdk.internal.access.SharedSecrets;
57 import jdk.internal.perf.PerfCounter;
58
59 /**
60 * Initializes/boots the module system.
61 *
62 * The {@link #boot() boot} method is called early in the startup to initialize
63 * the module system. In summary, the boot method creates a Configuration by
64 * resolving a set of module names specified via the launcher (or equivalent)
65 * -m and --add-modules options. The modules are located on a module path that
66 * is constructed from the upgrade module path, system modules, and application
67 * module path. The Configuration is instantiated as the boot layer with each
68 * module in the configuration defined to a class loader.
69 */
70
71 public final class ModuleBootstrap {
72 private ModuleBootstrap() { }
73
74 private static final String JAVA_BASE = "java.base";
75
76 // the token for "all default modules"
|