001/* 002 * Copyright (C) 2022 - 2023, the original author or authors. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package io.github.ascopes.jct.compilers; 017 018import io.github.ascopes.jct.compilers.javac.JavacJctCompilerImpl; 019import io.github.ascopes.jct.utils.UtilityClass; 020import org.apiguardian.api.API; 021import org.apiguardian.api.API.Status; 022import org.slf4j.Logger; 023import org.slf4j.LoggerFactory; 024 025/** 026 * Helpers to create new compiler instances. 027 * 028 * @author Ashley Scopes 029 * @since 0.0.1 030 */ 031@API(since = "0.0.1", status = Status.STABLE) 032public final class JctCompilers extends UtilityClass { 033 private static final Logger LOGGER = LoggerFactory.getLogger(JctCompilers.class); 034 035 private JctCompilers() { 036 // Disallow initialisation. 037 } 038 039 /** 040 * Create a new instance of the default platform compiler that is part of the JDK ({@code javac} 041 * on OpenJDK-derived implementations). 042 * 043 * @return the compiler instance. 044 * @since 0.2.0 045 */ 046 @API(status = Status.STABLE, since = "0.2.0") 047 public static JctCompiler<?, ?> newPlatformCompiler() { 048 return new JavacJctCompilerImpl(); 049 } 050 051 /** 052 * Create a new instance of the default platform compiler that is part of the JDK ({@code javac} 053 * on OpenJDK-derived implementations). 054 * 055 * @return the compiler instance. 056 * @deprecated Renamed in 0.2.0 for consistency, use {@link #newPlatformCompiler} instead. 057 */ 058 @Deprecated(forRemoval = true, since = "0.2.0") 059 public static JctCompiler<?, ?> createPlatformCompiler() { 060 LOGGER.warn("JctCompilers.createPlatformCompiler() is deprecated for removal. " 061 + "Use JctCompilers.newPlatformCompiler() instead"); 062 return newPlatformCompiler(); 063 } 064}