1 /*
   2  * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 /**
  27  * Defines the foundational APIs of the Java SE Platform.
  28  *
  29  * <dl>
  30  * <dt class="simpleTagLabel" style="font-family:'DejaVu Sans', Arial, Helvetica, sans serif">Providers:</dt>
  31  * <dd> The JDK implementation of this module provides an implementation of
  32  *      the {@index jrt jrt} {@linkplain java.nio.file.spi.FileSystemProvider
  33  *      file system provider} to enumerate and read the class and resource
  34  *      files in a run-time image.
  35  *      The jrt file system can be created by calling
  36  *      {@link java.nio.file.FileSystems#newFileSystem
  37  *      FileSystems.newFileSystem(URI.create("jrt:/"))}.
  38  *      <p></dd>
  39  * <dt class="simpleTagLabel" style="font-family:'DejaVu Sans', Arial, Helvetica, sans serif">Tool Guides:</dt>
  40  * <dd style="font-family:'DejaVu Sans', Arial, Helvetica, sans serif"> {@extLink java_tool_reference java launcher},
  41  *      {@extLink keytool_tool_reference keytool}</dd>
  42  * </dl>
  43  *
  44  * @provides java.nio.file.spi.FileSystemProvider
  45  *
  46  * @uses java.lang.System.LoggerFinder
  47  * @uses java.net.ContentHandlerFactory
  48  * @uses java.net.spi.URLStreamHandlerProvider
  49  * @uses java.nio.channels.spi.AsynchronousChannelProvider
  50  * @uses java.nio.channels.spi.SelectorProvider
  51  * @uses java.nio.charset.spi.CharsetProvider
  52  * @uses java.nio.file.spi.FileSystemProvider
  53  * @uses java.nio.file.spi.FileTypeDetector
  54  * @uses java.security.Provider
  55  * @uses java.text.spi.BreakIteratorProvider
  56  * @uses java.text.spi.CollatorProvider
  57  * @uses java.text.spi.DateFormatProvider
  58  * @uses java.text.spi.DateFormatSymbolsProvider
  59  * @uses java.text.spi.DecimalFormatSymbolsProvider
  60  * @uses java.text.spi.NumberFormatProvider
  61  * @uses java.time.chrono.AbstractChronology
  62  * @uses java.time.chrono.Chronology
  63  * @uses java.time.zone.ZoneRulesProvider
  64  * @uses java.util.spi.CalendarDataProvider
  65  * @uses java.util.spi.CalendarNameProvider
  66  * @uses java.util.spi.CurrencyNameProvider
  67  * @uses java.util.spi.LocaleNameProvider
  68  * @uses java.util.spi.ResourceBundleControlProvider
  69  * @uses java.util.spi.ResourceBundleProvider
  70  * @uses java.util.spi.TimeZoneNameProvider
  71  * @uses java.util.spi.ToolProvider
  72  * @uses javax.security.auth.spi.LoginModule
  73  *
  74  * @moduleGraph
  75  * @since 9
  76  */
  77 module java.base {
  78 
  79     exports java.io;
  80     exports java.lang;
  81     exports java.lang.annotation;
  82     exports java.lang.invoke;
  83     exports java.lang.module;
  84     exports java.lang.ref;
  85     exports java.lang.reflect;
  86     exports java.math;
  87     exports java.net;
  88     exports java.net.spi;
  89     exports java.nio;
  90     exports java.nio.channels;
  91     exports java.nio.channels.spi;
  92     exports java.nio.charset;
  93     exports java.nio.charset.spi;
  94     exports java.nio.file;
  95     exports java.nio.file.attribute;
  96     exports java.nio.file.spi;
  97     exports java.security;
  98     exports java.security.acl;
  99     exports java.security.cert;
 100     exports java.security.interfaces;
 101     exports java.security.spec;
 102     exports java.text;
 103     exports java.text.spi;
 104     exports java.time;
 105     exports java.time.chrono;
 106     exports java.time.format;
 107     exports java.time.temporal;
 108     exports java.time.zone;
 109     exports java.util;
 110     exports java.util.concurrent;
 111     exports java.util.concurrent.atomic;
 112     exports java.util.concurrent.locks;
 113     exports java.util.function;
 114     exports java.util.jar;
 115     exports java.util.regex;
 116     exports java.util.spi;
 117     exports java.util.stream;
 118     exports java.util.zip;
 119     exports javax.crypto;
 120     exports javax.crypto.interfaces;
 121     exports javax.crypto.spec;
 122     exports javax.net;
 123     exports javax.net.ssl;
 124     exports javax.security.auth;
 125     exports javax.security.auth.callback;
 126     exports javax.security.auth.login;
 127     exports javax.security.auth.spi;
 128     exports javax.security.auth.x500;
 129     exports javax.security.cert;
 130 
 131     // Valhalla support
 132     exports jvm.internal.value;
 133     exports jdk.experimental.value;
 134     exports valhalla.shady;
 135     exports jdk.experimental.bytecode;
 136 
 137     // additional qualified exports may be inserted at build time
 138     // see make/gensrc/GenModuleInfo.gmk
 139 
 140     exports com.sun.security.ntlm to
 141         java.security.sasl;
 142     exports jdk.internal.jimage to
 143         jdk.jlink;
 144     exports jdk.internal.jimage.decompressor to
 145         jdk.jlink;
 146     exports jdk.internal.loader to
 147         java.instrument,
 148         java.logging;
 149     exports jdk.internal.jmod to
 150         jdk.compiler,   // reflective dependency
 151         jdk.jlink;
 152     exports jdk.internal.logger to
 153         java.logging;
 154     exports jdk.internal.org.objectweb.asm to
 155         jdk.jartool,
 156         jdk.jlink,
 157         jdk.scripting.nashorn,
 158         jdk.internal.vm.ci;
 159     exports jdk.internal.org.objectweb.asm.tree to
 160         jdk.jlink;
 161     exports jdk.internal.org.objectweb.asm.util to
 162         jdk.scripting.nashorn;
 163     exports jdk.internal.org.objectweb.asm.commons to
 164         jdk.scripting.nashorn;
 165     exports jdk.internal.org.objectweb.asm.signature to
 166         jdk.scripting.nashorn;
 167     exports jdk.internal.math to
 168         java.desktop;
 169     exports jdk.internal.misc to
 170         java.desktop,
 171         java.logging,
 172         java.management,
 173         java.naming,
 174         java.rmi,
 175         java.security.jgss,
 176         java.sql,
 177         java.xml,
 178         jdk.attach,
 179         jdk.charsets,
 180         jdk.compiler,   // reflective dependency
 181         jdk.incubator.httpclient,
 182         jdk.jdeps,
 183         jdk.jlink,
 184         jdk.jshell,
 185         jdk.net,
 186         jdk.scripting.nashorn,
 187         jdk.scripting.nashorn.shell,
 188         jdk.unsupported,
 189         jdk.internal.vm.ci;
 190     exports jdk.internal.module to
 191         java.instrument,
 192         java.management.rmi,
 193         jdk.jartool,
 194         jdk.jlink;
 195     exports jdk.internal.perf to
 196         java.desktop,
 197         java.management,
 198         jdk.management.agent,
 199         jdk.internal.jvmstat;
 200     exports jdk.internal.ref to
 201         java.desktop,
 202         jdk.unsupported;
 203     exports jdk.internal.reflect to
 204         java.logging,
 205         java.sql,
 206         java.sql.rowset,
 207         jdk.dynalink,
 208         jdk.scripting.nashorn,
 209         jdk.unsupported;
 210     exports jdk.internal.vm to
 211         jdk.management.agent,
 212         jdk.internal.jvmstat;
 213     exports jdk.internal.vm.annotation to
 214         jdk.unsupported,
 215         jdk.internal.vm.ci,
 216         jdk.incubator.httpclient;
 217     exports jdk.internal.util.jar to
 218         jdk.jartool,
 219         jdk.jdeps,
 220         jdk.jlink;
 221     exports sun.net to
 222         jdk.incubator.httpclient;
 223     exports sun.net.ext to
 224         jdk.net;
 225     exports sun.net.dns to
 226         java.security.jgss,
 227         jdk.naming.dns;
 228     exports sun.net.util to
 229         java.desktop,
 230         jdk.jconsole,
 231         jdk.incubator.httpclient;
 232     exports sun.net.www to
 233         java.desktop,
 234         jdk.incubator.httpclient,
 235         jdk.jartool;
 236     exports sun.net.www.protocol.http to
 237         java.security.jgss;
 238     exports sun.nio.ch to
 239         java.management,
 240         jdk.crypto.cryptoki,
 241         jdk.sctp,
 242         jdk.unsupported;
 243     exports sun.nio.cs to
 244         java.desktop,
 245         jdk.charsets;
 246     exports sun.nio.fs to
 247         jdk.unsupported;
 248     exports sun.reflect.annotation to
 249         jdk.compiler;
 250     exports sun.reflect.generics.reflectiveObjects to
 251         java.desktop;
 252     exports sun.reflect.misc to
 253         java.desktop,
 254         java.datatransfer,
 255         java.management,
 256         java.management.rmi,
 257         java.rmi,
 258         java.sql.rowset,
 259         java.xml;
 260     exports sun.security.action to
 261         java.desktop,
 262         java.security.jgss;
 263     exports sun.security.internal.interfaces to
 264         jdk.crypto.cryptoki;
 265     exports sun.security.internal.spec to
 266         jdk.crypto.cryptoki;
 267     exports sun.security.jca to
 268         java.smartcardio,
 269         jdk.crypto.ec,
 270         jdk.crypto.cryptoki,
 271         jdk.naming.dns;
 272     exports sun.security.pkcs to
 273         jdk.crypto.ec,
 274         jdk.jartool;
 275     exports sun.security.provider to
 276         java.rmi,
 277         java.security.jgss,
 278         jdk.crypto.cryptoki,
 279         jdk.policytool,
 280         jdk.security.auth;
 281     exports sun.security.provider.certpath to
 282         java.naming;
 283     exports sun.security.rsa to
 284         jdk.crypto.cryptoki;
 285     exports sun.security.ssl to
 286         java.security.jgss;
 287     exports sun.security.timestamp to
 288         jdk.jartool;
 289     exports sun.security.tools to
 290         jdk.jartool;
 291     exports sun.security.util to
 292         java.desktop,
 293         java.naming,
 294         java.rmi,
 295         java.security.jgss,
 296         java.security.sasl,
 297         java.smartcardio,
 298         java.xml.crypto,
 299         jdk.crypto.ec,
 300         jdk.crypto.cryptoki,
 301         jdk.jartool,
 302         jdk.policytool,
 303         jdk.security.auth,
 304         jdk.security.jgss;
 305     exports sun.security.x509 to
 306         jdk.crypto.ec,
 307         jdk.crypto.cryptoki,
 308         jdk.jartool,
 309         jdk.security.auth;
 310     exports sun.security.validator to
 311         jdk.jartool;
 312     exports sun.text.resources to
 313         jdk.localedata;
 314     exports sun.util.cldr to
 315         jdk.jlink;
 316     exports sun.util.locale.provider to
 317         java.desktop,
 318         jdk.jlink,
 319         jdk.localedata;
 320     exports sun.util.logging to
 321         java.desktop,
 322         java.logging,
 323         java.prefs;
 324     exports sun.util.resources to
 325         jdk.localedata;
 326 
 327 
 328     // the service types defined by the APIs in this module
 329 
 330     uses java.lang.System.LoggerFinder;
 331     uses java.net.ContentHandlerFactory;
 332     uses java.net.spi.URLStreamHandlerProvider;
 333     uses java.nio.channels.spi.AsynchronousChannelProvider;
 334     uses java.nio.channels.spi.SelectorProvider;
 335     uses java.nio.charset.spi.CharsetProvider;
 336     uses java.nio.file.spi.FileSystemProvider;
 337     uses java.nio.file.spi.FileTypeDetector;
 338     uses java.security.Provider;
 339     uses java.text.spi.BreakIteratorProvider;
 340     uses java.text.spi.CollatorProvider;
 341     uses java.text.spi.DateFormatProvider;
 342     uses java.text.spi.DateFormatSymbolsProvider;
 343     uses java.text.spi.DecimalFormatSymbolsProvider;
 344     uses java.text.spi.NumberFormatProvider;
 345     uses java.time.chrono.AbstractChronology;
 346     uses java.time.chrono.Chronology;
 347     uses java.time.zone.ZoneRulesProvider;
 348     uses java.util.spi.CalendarDataProvider;
 349     uses java.util.spi.CalendarNameProvider;
 350     uses java.util.spi.CurrencyNameProvider;
 351     uses java.util.spi.LocaleNameProvider;
 352     uses java.util.spi.ResourceBundleControlProvider;
 353     uses java.util.spi.ResourceBundleProvider;
 354     uses java.util.spi.TimeZoneNameProvider;
 355     uses java.util.spi.ToolProvider;
 356     uses javax.security.auth.spi.LoginModule;
 357 
 358     // JDK-internal service types
 359 
 360     uses jdk.internal.logger.DefaultLoggerFinder;
 361     uses sun.security.ssl.ClientKeyExchangeService;
 362     uses sun.text.spi.JavaTimeDateTimePatternProvider;
 363     uses sun.util.spi.CalendarProvider;
 364     uses sun.util.locale.provider.LocaleDataMetaInfo;
 365     uses sun.util.resources.LocaleData.CommonResourceBundleProvider;
 366     uses sun.util.resources.LocaleData.SupplementaryResourceBundleProvider;
 367 
 368     // Built-in service providers that are located via ServiceLoader
 369 
 370     provides java.nio.file.spi.FileSystemProvider with
 371         jdk.internal.jrtfs.JrtFileSystemProvider;
 372 }