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 implementation of the 28 * {@linkplain javax.tools.ToolProvider#getSystemJavaCompiler system Java compiler} 29 * and its command line equivalent, <em>{@index javac javac tool}</em>, 30 * as well as <em>{@index javah javah tool}</em>. 31 * 32 * <h2 style="font-family:'DejaVu Sans Mono', monospace; font-style:italic">javac</h2> 33 * 34 * <p> 35 * This module provides the equivalent of command-line access to <em>javac</em> 36 * via the {@link java.util.spi.ToolProvider ToolProvider} and 37 * {@link javax.tools.Tool} service provider interfaces (SPIs), 38 * and more flexible access via the {@link javax.tools.JavaCompiler JavaCompiler} 39 * SPI.</p> 40 * 41 * <p> Instances of the tools can be obtained by calling 42 * {@link java.util.spi.ToolProvider#findFirst ToolProvider.findFirst} 43 * or the {@linkplain java.util.ServiceLoader service loader} with the name 44 * {@code "javac"}. 45 * 46 * <p> 47 * In addition, instances of {@link javax.tools.JavaCompiler.CompilationTask} 48 * obtained from {@linkplain javax.tools.JavaCompiler JavaCompiler} can be 49 * downcast to {@link com.sun.source.util.JavacTask JavacTask} for access to 50 * lower level aspects of <em>javac</em>, such as the 51 * {@link com.sun.source.tree Abstract Syntax Tree} (AST).</p> 52 * 53 * <p>This module uses the {@link java.nio.file.spi.FileSystemProvider 54 * FileSystemProvider} API to locate file system providers. In particular, 55 * this means that a jar file system provider, such as that in the 56 * {@code jdk.zipfs} module, must be available if the compiler is to be able 57 * to read JAR files. 58 * 59 * <h2 style="font-family:'DejaVu Sans Mono', monospace; font-style:italic">javah</h2> 60 * 61 * <p> 62 * <em>javah</em> only exists as a command line tool, and does not provide any 63 * direct API. As of JDK 9, it has been deprecated. 64 * Use the {@code -h} option in <em>javac</em> instead.</p> 65 * 66 * <dl style="font-family:'DejaVu Sans', Arial, Helvetica, sans serif"> 67 * <dt class="simpleTagLabel">Tool Guides: 68 * <dd>{@extLink javac_tool_reference javac}, 69 * {@extLink javah_tool_reference javah} 70 * </dl> 71 * 72 * @provides java.util.spi.ToolProvider 73 * @provides com.sun.tools.javac.platform.PlatformProvider 74 * @provides javax.tools.JavaCompiler 75 * @provides javax.tools.Tool 76 * 77 * @uses javax.annotation.processing.Processor 78 * @uses com.sun.source.util.Plugin 79 * @uses com.sun.tools.javac.platform.PlatformProvider 80 * 81 * @moduleGraph 82 * @since 9 83 */ 84 module jdk.compiler { 85 requires transitive java.compiler; 86 87 exports com.sun.source.doctree; 88 exports com.sun.source.tree; 89 exports com.sun.source.util; 90 exports com.sun.tools.javac; 91 92 exports com.sun.tools.doclint to 93 jdk.javadoc; 94 exports com.sun.tools.javac.api to 95 jdk.javadoc, 96 jdk.jshell; 97 exports com.sun.tools.javac.code to 98 jdk.javadoc, 99 jdk.jshell; 100 exports com.sun.tools.javac.comp to 101 jdk.javadoc, 102 jdk.jshell; 103 exports com.sun.tools.javac.file to 104 jdk.jdeps, 105 jdk.javadoc; 106 exports com.sun.tools.javac.jvm to 107 jdk.javadoc; 108 exports com.sun.tools.javac.main to 109 jdk.javadoc, 110 jdk.jshell; 111 exports com.sun.tools.javac.model to 112 jdk.javadoc; 113 exports com.sun.tools.javac.parser to 114 jdk.jshell; 115 exports com.sun.tools.javac.platform to 116 jdk.jdeps, 117 jdk.javadoc; 118 exports com.sun.tools.javac.tree to 119 jdk.javadoc, 120 jdk.jshell; 121 exports com.sun.tools.javac.util to 122 jdk.jdeps, 123 jdk.javadoc, 124 jdk.jshell; 125 exports jdk.internal.shellsupport.doc to 126 jdk.jshell, 127 jdk.scripting.nashorn.shell; 128 129 uses javax.annotation.processing.Processor; 130 uses com.sun.source.util.Plugin; 131 uses com.sun.tools.javac.platform.PlatformProvider; 132 133 provides java.util.spi.ToolProvider with 134 com.sun.tools.javac.main.JavacToolProvider; 135 136 provides com.sun.tools.javac.platform.PlatformProvider with 137 com.sun.tools.javac.platform.JDKPlatformProvider; 138 139 provides javax.tools.JavaCompiler with 140 com.sun.tools.javac.api.JavacTool; 141 142 provides javax.tools.Tool with 143 com.sun.tools.javac.api.JavacTool; 144 } 145