# Package org.codehaus.janino

package org.codehaus.janino
The core of the Janino Java compiler.

The package comprises a scanner (`Scanner`, a parser (`Parser`) and a class file library. The parser builds a syntax tree from the "Java.*" classes that represents the parsed code. The `UnitCompiler.compileUnit(boolean, boolean, boolean, org.codehaus.janino.UnitCompiler.ClassFileConsumer)` method compiles this syntax tree into a `ClassFile` object, which can write JVM bytecode to an `OutputStream`.

This package implements the `org.codehaus.commons.compiler` API.

Related Packages
Package
Description
org.codehaus.janino.samples
Sample applications for the Janino Java compiler.
org.codehaus.janino.tools
Auxiliary command line tools related to JANINO.
org.codehaus.janino.util
Application-independent helper classes.
Class
Description
Access
Return value for `IClass.IMember.getAccess()`.
AntCompilerAdapter
A simple `CompilerAdapter` for the "ant" tool that silently ignores most of the configuration parameters and attempts to compile all given source files into class files.
CachingJavaSourceClassLoader
A `JavaSourceClassLoader` that uses a resource storage provided by the application to cache compiled classes and thus saving unnecessary recompilations.
ClassBodyEvaluator
ClassFileIClass
A wrapper object that turns a `ClassFile` object into an `IClass`.
ClassLoaderIClassLoader
An `IClassLoader` that loads `IClass`es through a reflection `ClassLoader`.
CodeContext
The context of the compilation of a function (constructor or method).
CodeContext.FixUp
A throw-in interface that marks `CodeContext.Offset`s as "fix-ups": During the execution of `CodeContext.fixUp()`, all "fix-ups" are invoked and can do last touches to the code attribute.
Compiler
JANINO implementation of `ICompiler`.
CompilerFactory
The JANINO implementation of `ICompilerFactory`.
Descriptor
Helper class that defines useful methods for handling "field descriptors" (JVMS 4.3.2) and "method descriptors" (JVMS 4.3.3).
ExpressionEvaluator
This `IExpressionEvaluator` is implemented by creating and compiling a temporary compilation unit defining one class with one static method with one RETURN statement.
FilterWarningHandler
Invokes a delegate iff the handle of the warning matches one or more of a set of `StringPattern`s.
IClass
A simplified equivalent to "java.lang.reflect".
IClass.IAnnotation
Representation of a Java "annotation".
IClass.IMember
Base for the members of an `IClass`.
IClassLoader
Loads an `IClass` by type name.
IParameterizedType
IType
ITypeVariable
Type bounds can either be a class or interface type, or a type variable.
ITypeVariableOrIClass
IWildcardType
JaninoOption
The compilation of `Compiler`, `JavaSourceIClassLoader`, `SimpleCompiler` and their subclasses can be configured with these options.
Java
This wrapper class defines classes that represent the elements of the Java programming language.
Java.AbstractAnnotation
Convenience class.
Java.AbstractClassDeclaration
Base for the various class declaration kinds.
Java.AbstractCompilationUnit
Holds the result of `Parser.parseAbstractCompilationUnit()`.
Java.AbstractCompilationUnit.ImportDeclaration
Base class for the various IMPORT declarations.
Java.AbstractCompilationUnit.SingleStaticImportDeclaration
Represents a single static import declaration like
Java.AbstractCompilationUnit.SingleTypeImportDeclaration
Represents a "single-type import declaration" like "`import java.util.Map;`".
Java.AbstractCompilationUnit.StaticImportOnDemandDeclaration
Represents a static-import-on-demand declaration like
Java.AbstractCompilationUnit.TypeImportOnDemandDeclaration
Represents a type-import-on-demand declaration like `import java.util.*;`.
Java.AbstractTypeBodyDeclaration
Abstract implementation of `Java.TypeBodyDeclaration`.
Java.AbstractTypeDeclaration
Abstract implementation of `Java.TypeDeclaration`.
Java.AccessModifier
Representation of the modifier flags and annotations that are associated with a declaration.
Java.AlternateConstructorInvocation
Representation of a JLS7 8.8.7.1.
Java.AmbiguousName
Representation of a JLS7 6.5.2 "ambiguous name".
Java.Annotatable
Representation of Java elements that can be annotated: Fields, constructors, methods, type declarations.
Java.Annotation
Representation of a Java annotation.
Java.AnnotationTypeDeclaration
Base for package member ("top-level") and member ("nested") annotation type declarations.
Java.AnonymousClassDeclaration
Representation of a JLS7 15.9.5 "anonymous class declaration".
Java.ArrayAccessExpression
Representation of a JLS7 15.13 (JLS8: 15.10.3) "array access expression".
Java.ArrayCreationReference
Representation of a "method reference expression", as described in JLS9 15.13, with the form "`<var>arrayType</var>::new`".
Java.ArrayInitializer
Representation of a JLS7 10.6 "array initializer".
Java.ArrayInitializerOrRvalue
The union of `Java.ArrayInitializer` and `Java.Rvalue`.
Java.ArrayLength
Representation of the JLS7 10.7 array type "length" pseudo-member.
Java.ArrayType
Representation of a JLS7 10.1 "array type".
Java.AssertStatement
Representation of the JLS7 14.10 ASSERT statement.
Java.Assignment
Representation of all JLS7 15.26 assignments.
Java.Atom
Abstract base class for `Java.Type`, `Java.Rvalue`, `Java.Package` and `Java.ConstructorInvocation`.
Java.BinaryOperation
Representation of all non-operand-modifying binary operations.
Java.Block
Representation of a Java "block" (JLS7 14.2).
Java.BlockLambdaBody
Representation of a "lambda body" that is a block; see JLS9 15.27.2.
Java.BlockStatement
Everything that can be compiled to code, e.g.
Java.BooleanLiteral
Representation of a "boolean literal" (JLS7 3.10.3) (type `boolean`).
Java.BooleanRvalue
Base class for `Java.Rvalue`s that compile better as conditional branches.
Java.BreakableStatement
Base class for statements that can be terminated abnormally with a `break` statement.
Java.BreakStatement
Representation of the JLS7 14.15 BREAK statement.
Java.Cast
Representation of a JLS7 15.16 "cast expression".
Java.CatchClause
Representation of a JLS7 14.20.1 CATCH clause.
Java.CatchParameter
Representation of a "catch" parameter.
Java.CharacterLiteral
Representation of a "character literal" (JLS7 3.10.4) (type `char`).
Java.ClassDeclaration
Base for the various class declarations (top-level class, local class, anonymous class, nested class, top-level enum, nested enum).
Java.ClassInstanceCreationReference
Representation of a "method reference expression", as described in JLS9 15.13, with the form "`<var>classType</var>::new`".
Java.ClassLiteral
Representation of a JLS7 15.8.2 "class literal".
Java.CompilationUnit
Representation of an "ordinary compilation unit" as explained in JLS9 7.3 (before Java 9 known as "compilation unit" and described in JLS8 7.3).
Java.ConditionalExpression
Representation of a JLS7 15.25 "conditional operation".
Java.ConstructorDeclarator
Representation of a constructor declarator.
Java.ConstructorInvocation
Abstract bas class for `Java.SuperConstructorInvocation` and `Java.AlternateConstructorInvocation`.
Java.ContinuableStatement
Base class for statements that support the "continue" statement.
Java.ContinueStatement
Representation of the JLS7 14.16 CONTINUE statement.
Java.Crement
Representation of a JLS7 15.14.2 "postfix increment operation", a JLS7 15.14.3 "postfix decrement operation", a JLS7 15.15.1 "prefix increment operation" or a JLS7 15.15.2 "prefix decrement operation".
Java.DocCommentable
Representation of a Java element that can be annotated with a DOC comment ("`/** ...`
Java.DoStatement
Representation of a JLS7 14.13 DO statement.
Java.ElementValue
Base of the possible element values in a `Java.NormalAnnotation`.
Java.ElementValueArrayInitializer
An element value in the form of an array initializer, e.g.
Java.ElementValuePair
Representation of a "name = value" element in a `Java.NormalAnnotation`.
Java.EmptyStatement
Representation of the "empty statement", i.e.
Java.EnclosingScopeOfTypeDeclaration
Lazily determines and returns the enclosing `Java.Scope` of the given `Java.TypeDeclaration`.
Java.EnumConstant
Representation of an "enum constant", see JLS7 8.9.1.
Java.EnumDeclaration
Base for package member (a.k.a.
Java.ExportsModuleDirective
Representation of a (Java 9+) "exports directive", as explained in JLS9 7.7.2.
Java.ExpressionLambdaBody
Representation of a "lambda body" that is an expression; see JLS9 15.27.2.
Java.ExpressionStatement
Representation of the JLS7 14.8 "expression statement".
Java.FieldAccess
Representation of an access to a field of a class or an interface.
Java.FieldAccessExpression
Representation of a JLS7 15.11 "field access expression", including the "array length" pseudo field access.
Java.FieldDeclaration
This class is derived from "Statement", because it provides for the initialization of the field.
Java.FieldDeclarationOrInitializer
Java.FloatingPointLiteral
Representation of a "floating-point literal" (JLS7 3.10.2) (types `float` and `double`).
Java.ForEachStatement
Representation of a JLS7 14.14.2 "enhanced FOR statement".
Java.FormalLambdaParameters
Representation of "lamba parameters" that include a formal parameter list; see JLS9 15.27.1.
Java.ForStatement
Representation of a JLS7 14.14.1 "basic FOR statement".
Java.FunctionDeclarator
Abstract base class for `Java.ConstructorDeclarator` and `Java.MethodDeclarator`.
Java.FunctionDeclarator.FormalParameter
Representation of a (formal) function parameter.
Java.FunctionDeclarator.FormalParameters
Representation of the (formal) function parameters.
Java.IdentifierLambdaParameters
Representation of "lamba parameters" that consist of a single identifier; see JLS9 15.27.1
Java.IfStatement
Representation of a JLS7 14.9 IF statement.
Java.InferredLambdaParameters
Representation of "lamba parameters" that include an inferred formal parameter list; see JLS9 15.27.1.
Java.Initializer
Representation of an "instance initializer" (JLS7 8.6) or "static initializer" (JLS7 8.7).
Java.Instanceof
Representation of a JLS7 15.20.2 "type comparison operation".
Java.IntegerLiteral
Representation of an "integer literal" (JLS7 3.10.1) (types `int` and `long`).
Java.InterfaceDeclaration
Base for the various interface declaration kinds.
Java.Invocation
Abstract base class for `Java.MethodInvocation` and `Java.SuperclassMethodInvocation`.
Java.LabeledStatement
Representation of a JLS7 14.7 "labeled statement".
Java.LambdaBody
Representation of a "lambda body", see JLS9 15.27.2.
Java.LambdaExpression
Representation of a (Java 8+) "lambda expression", see JLS9 15.27.
Java.LambdaParameters
Base for the various "lambda parameters" styles, see JLS9 15.27.1.
Java.Literal
Abstract base class for the various Java literals; see JLS7 3.10.
Java.LocalClassDeclaration
Representation of a "local class declaration" i.e.
Java.LocalClassDeclarationStatement
Representation of the JLS7 14.3 "local class declaration statement".
Java.LocalVariable
Representation of a local variable while it is in scope during compilation.
Java.LocalVariableAccess
Representation of a local variable access -- used during compilation.
Java.LocalVariableDeclarationStatement
Representation of a JLS7 14.4 "local variable declaration statement".
Java.LocalVariableSlot
All local variables have a slot number; local variables that get written into the "local variable table" also have a start and end offset that defines the variable's extent in the bytecode.
Java.Locatable
This interface is implemented by objects which are associated with a location in the source code.
Java.Located
Abstract implementation of `Java.Locatable`.
Java.Lvalue
Representation of an "lvalue", i.e.
Java.MarkerAnnotation
Representation of a "marker annotation", i.e.
Java.MemberAnnotationTypeDeclaration
Representation of a member annotation type declaration, a.k.a.
Java.MemberClassDeclaration
Representation of a "member class declaration", i.e.
Java.MemberEnumDeclaration
Representation of a "member enum declaration", i.e.
Java.MemberInterfaceDeclaration
Representation of a "member interface declaration", i.e.
Java.MemberTypeDeclaration
Represents a class or interface declaration where the immediately enclosing scope is another class or interface declaration.
Java.MethodDeclarator
Representation of a method declarator.
Java.MethodInvocation
Representation of a JLS7 15.12 "method invocation expression".
Java.MethodReference
Representation of a "method reference expression", as described in JLS9 15.13, with the form "`<var>referenceType</var>::identifier`.
Java.Modifier
Base for the various modifiers (access modifiers, annotations).
Java.Modifiers
Deprecated.
Many methods that previously accepted a parameter of this type now take a `Java.Modifier``[]` (incompatible API change in JANINO version 3.0.13)
Java.ModularCompilationUnit
Represents a `ModularCompilationUnit` as specified in JLS11 7.3.
Java.ModuleDeclaration
Representation of a "module declaration", as described in JLS9 7.7.
Java.ModuleDirective
Representation of a (Java 9+) "module directive", as explained in JLS9 7.7.
Java.NamedClassDeclaration
Base for the various named class declarations.
Java.NamedTypeDeclaration
Represents the declaration of a class or an interface that has a name.
Java.NewAnonymousClassInstance
Representation of a JLS7 15.9 "anonymous class instance creation expression".
Java.NewArray
Representation of a JLS7 15.10 "array creation expression".
Java.NewClassInstance
Representation of a JLS7 "class instance creation expression".
Java.NewInitializedArray
Representation of a JLS7 15.10 "array creation expression".
Java.NormalAnnotation
A "normal annotation", i.e.
Java.NullLiteral
Representation of a "null literal" (JLS7 3.10.7).
Java.OpensModuleDirective
Representation of a (Java 9+) "opens directive", as explained in JLS9 7.7.2.
Java.Package
Representation of a JLS7 6.5.2.1.5 "package name".
Java.PackageDeclaration
Representation of a package declaration like `package com.acme.tools;`.
Java.PackageMemberAnnotationTypeDeclaration
Representation of a package member annotation type declaration, a.k.a.
Java.PackageMemberClassDeclaration
Implementation of a "package member class declaration", a.k.a.
Java.PackageMemberEnumDeclaration
Implementation of a "package member enum declaration", a.k.a.
Java.PackageMemberInterfaceDeclaration
Representation of a "package member interface declaration", a.k.a.
Java.PackageMemberTypeDeclaration
Represents a class or interface declaration on compilation unit level.
Java.ParameterAccess
"Artificial" operation for accessing the parameters of the synthetic constructor of an anonymous class.
Java.ParenthesizedExpression
Representation of a JLS7 15.8.5 "parenthesized expression".
Java.Primitive
Java's primitive types.
Java.PrimitiveType
Representation of a JLS7 4.2 "primitive type", i.e a primitive type "usage", which has a location.
Java.ProvidesModuleDirective
Representation of a (Java 9+) "provides directive", as explained in JLS9 7.7.4.
Java.QualifiedThisReference
Representation of an JLS7 15.8.4 access to the current object or an enclosing instance.
Java.ReferenceType
Representation of a JLS7 4.3 reference type.
Java.RequiresModuleDirective
Representation of a (Java 9+) "requires directive", as explained in JLS9 7.7.1.
Java.ReturnStatement
Representation of the JLS7 14.17 RETURN statement.
Java.Rvalue
Representation of an "rvalue", i.e.
Java.RvalueMemberType
Representation of the first part of a JLS7 15.9 "Qualified class instance creation expression": The "`a.new MyClass`" part of "`a.new MyClass(...)`" expression.
Java.Scope
Representation of a Java "scope", e.g.
Java.SimpleConstant
This class is not used when code is parsed; it is intended for "programmatic" literals.
Java.SimpleType
This class is not used when code is parsed; it is intended for "programmatic" types.
Java.SingleElementAnnotation
Representation of a "single-element annotation", i.e.
Java.Statement
Everything that can occur in the body of a method or in a block.
Java.StringLiteral
Representation of a "string literal" (JLS7 3.10.5) (type `String`).
Java.SuperclassFieldAccessExpression
Representation of an JLS7 "superclass field access expression", e.g.
Java.SuperclassMethodInvocation
Representation of a JLS7 15.12.1.1.3 "superclass method invocation".
Java.SuperConstructorInvocation
Representation of a JLS7 8.8.7.1.
Java.SwitchStatement
The JLS7 14.10 `switch` Statement.
Java.SwitchStatement.SwitchBlockStatementGroup
Representation of a "switch block statement group" as defined in JLS7 14.11.
Java.SynchronizedStatement
Representation of a JLS7 14.9 SYNCHRONIZED statement.
Java.TextBlock
Representation of a "text block" (JLS17 3.10.6 Text Blocks) (type `String`).
Java.ThisReference
Representation of an JLS7 15.8.3 access to the innermost enclosing instance.
Java.ThrowStatement
Representation of a JLS7 14.18 THROW statement.
Java.TryStatement
Representation of a JLS7 14.20 TRY statement.
Java.TryStatement.LocalVariableDeclaratorResource
Representation of a JLS9 14.20.2 "local-variable-declarator resource" in a TRY-with-resources statement.
Java.TryStatement.Resource
Representation of a JLS9 14.20.2 "resource" in a TRY-with-resources statement.
Java.TryStatement.VariableAccessResource
Representation of a JLS9 14.20.2 "variable-access resource" in a TRY-with-resources statement.
Java.Type
Representation of a Java type.
Java.TypeArgument
Representation of a JLS7 4.5.1 type argument.
Java.TypeBodyDeclaration
Representation of a "ClassBodyDeclaration" or an "InterfaceMemberDeclaration".
Java.TypeDeclaration
Base for the various kinds of type declarations, e.g.
Java.TypeParameter
Representation of a type parameter (which declares a type variable).
Java.UnaryOperation
Representation of a JLS7 15.15.3 "unary plus operator", a JLS7 15.15.4 "unary minus operator", a JLS7 15.15.5 "bitwise complement operator" or a JLS7 15.15.6 "logical complement operator".
Java.UsesModuleDirective
Representation of a (Java 9+) "uses directive", as explained in JLS9 7.7.3.
Java.VariableDeclarator
Used by FieldDeclaration and LocalVariableDeclarationStatement.
Java.WhileStatement
Representation of the JLS7 14.2 WHILE statement.
Java.Wildcard
Representation of a JLS7 4.5.1 "wildcard".
JavaSourceClassLoader
A `ClassLoader` that, unlike usual `ClassLoader`s, does not load byte code, but reads Java source code and then scans, parses, compiles and loads it into the virtual machine.
JavaSourceIClassLoader
This `IClassLoader` finds, scans and parses compilation units.
MethodDescriptor
Representation of a "method descriptor" (JVMS 4.3.3).
Mod
This class defines constants and convenience methods for the handling of modifiers as defined by the JVM.
Parser
A parser for the Java programming language.
Parser.ClassDeclarationContext
The kinds of context where a class declaration can occur.
Parser.InterfaceDeclarationContext
The kinds of context where an interface declaration can occur.
Parser.MethodDeclarationContext
The kinds of context where a method declaration can occur.
ResourceFinderIClassLoader
This `IClassLoader` loads IClasses through a a `ResourceFinder` that designates `ClassFile`s.
Scanner
Splits up a character stream into tokens and returns them as `String` objects.
ScriptEvaluator
An implementation of `IScriptEvaluator` that utilizes the JANINO Java compiler.
SimpleCompiler
To set up a `SimpleCompiler` object, proceed as described for `ISimpleCompiler`.
Token
Immutable representation of a Java token.
TokenStream
An interface that allows for peeking and consuming a stream of `Token`s.
TokenStreamImpl
Standard implementation for the `TokenStream`.
TokenType
Enumeration of the types of `Token`s that the `Scanner` produces.
UnicodeUnescapeException
Represents a problem that occurred while unescaping a unicode escape sequence through a `UnicodeUnescapeReader`.
UnicodeUnescapeReader
A `FilterReader` that unescapes the "Unicode Escapes" as described in JLS7 3.10.6.
UnitCompiler
This class actually implements the Java compiler.
UnitCompiler.ClassFileConsumer
UnitCompiler.SimpleIField
Short-hand implementation of `IClass.IField` that implements a non-constant, non-static, package-accessible field.
Unparser
Unparses (un-compiles) an AST to a `Writer`.
Visitor
The basis for the "visitor" pattern as described in "Gamma, Helm, Johnson, Vlissides: Design Patterns".
Visitor.AbstractCompilationUnitVisitor<R,EX extends Throwable>
The visitor for the different kinds of `Java.AbstractCompilationUnit`s.
Visitor.AnnotationVisitor<R,EX extends Throwable>
The visitor for all kinds of `Java.Annotation`s.
Visitor.ArrayInitializerOrRvalueVisitor<R,EX extends Throwable>
The visitor for `Java.ArrayInitializerOrRvalue`.
Visitor.AtomVisitor<R,EX extends Throwable>
The visitor for all kinds of `Java.Atom`s.
Visitor.BlockStatementVisitor<R,EX extends Throwable>
The visitor for all kinds of `Java.BlockStatement`s (statements that may appear with a block).
Visitor.ConstructorInvocationVisitor<R,EX extends Throwable>
The visitor for all kinds of `Java.ConstructorInvocation`s.
Visitor.ElementValueVisitor<R,EX extends Throwable>
Visitor.FieldDeclarationOrInitializerVisitor<R,EX extends Throwable>
The visitor for all kinds of `Java.BlockStatement`s (statements that may appear with a block).
Visitor.FunctionDeclaratorVisitor<R,EX extends Throwable>
The visitor for all kinds of `Java.FunctionDeclarator`s.
Visitor.ImportVisitor<R,EX extends Throwable>
The visitor for all kinds of `Java.AbstractCompilationUnit.ImportDeclaration`s.
Visitor.LambdaBodyVisitor<R,EX extends Throwable>
The visitor for the different kinds of `Java.LambdaBody`s.
Visitor.LambdaParametersVisitor<R,EX extends Throwable>
The visitor for the different kinds of `Java.LambdaParameters` styles.
Visitor.LvalueVisitor<R,EX extends Throwable>
The visitor for all kinds of `Java.Lvalue`s.
Visitor.ModifierVisitor<R,EX extends Throwable>
The visitor for the different kinds of `Java.Modifier`s.
Visitor.ModuleDirectiveVisitor<R,EX extends Throwable>
The visitor for the different kinds of `Java.ModuleDirective`s.
Visitor.RvalueVisitor<R,EX extends Throwable>
The visitor for all kinds of `Java.Rvalue`s.
Visitor.TryStatementResourceVisitor<R,EX extends Throwable>
The visitor for all kinds of `Java.TryStatement.Resource`s.
Visitor.TypeArgumentVisitor<R,EX extends Throwable>
The visitor for all kinds of `Java.TypeArgument`s.
Visitor.TypeBodyDeclarationVisitor<R,EX extends Throwable>
The visitor for all kinds of `Java.TypeBodyDeclaration`s (declarations that may appear in the body of a type declaration).
Visitor.TypeDeclarationVisitor<R,EX extends Throwable>
The visitor for all kinds of `Java.TypeDeclaration`s.
Visitor.TypeVisitor<R,EX extends Throwable>
The visitor for all kinds of `Java.Type`s.