# janino-compiler/janino

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/janino-compiler-janino).**

_How this analysis was created: the description and tags below were written by an AI model that read this project's README and public documentation pages; stars, license and language come straight from the GitHub API. The model does not read the source code._

1,322 stars · 212 forks · Java · NOASSERTION

## Links

- GitHub: https://github.com/janino-compiler/janino
- Homepage: http://janino-compiler.github.io/janino
- awesome-repositories: https://awesome-repositories.com/repository/janino-compiler-janino.md

## Topics

`compiler` `in-memory-java-compiler` `janino` `java-compiler`

## Description

Janino is a lightweight Java compiler and scripting engine designed to transform source code into executable bytecode directly within the application heap. It functions as a runtime compiler and class loading library, enabling the dynamic definition and execution of Java classes, methods, and expressions without requiring a full application restart.

The project distinguishes itself through its ability to perform in-memory compilation and recursive descent parsing, which allows for the resolution of complex dependencies and circular references during the translation process. It provides a framework for sandboxed execution, ensuring that dynamically generated logic operates within defined security constraints to restrict access to system resources.

Beyond its core compilation capabilities, the library supports static analysis and programmatic code manipulation by parsing source files into structured trees. It maintains metadata links between generated bytecode and original source lines, facilitating the use of standard debuggers for interactive inspection of dynamic logic. The software is distributed as a library intended for integration into existing Java applications.

## Tags

### Programming Languages & Runtimes

- [Source-to-Bytecode Compilers](https://awesome-repositories.com/f/programming-languages-runtimes/bytecode-compiled-languages/source-to-bytecode-compilers.md) — Compiles Java source code into executable bytecode at runtime. ([source](http://janino-compiler.github.io/janino))
- [In-Memory Compilation](https://awesome-repositories.com/f/programming-languages-runtimes/source-code-compilers/in-memory-compilation.md) — Compiles Java source code directly into bytecode within the application heap at runtime.
- [Dynamic Script Execution](https://awesome-repositories.com/f/programming-languages-runtimes/dynamic-script-execution.md) — Executes Java code blocks and scripts on the fly without requiring application restarts. ([source](http://janino-compiler.github.io/janino/))
- [Dynamic Logic Evaluators](https://awesome-repositories.com/f/programming-languages-runtimes/expression-evaluators/dynamic-logic-evaluators.md) — Computes standalone Java expressions and logic at runtime for flexible configuration. ([source](https://github.com/janino-compiler/janino/custom-properties))
- [Runtime Generators](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/data-structure-type-helpers/data-structures/hierarchical-tree-structures/source-code-abstract-syntax-trees/java-code-generators/runtime-generators.md) — Enables the dynamic definition and execution of Java classes and methods without requiring application restarts.
- [Runtime Bytecode Compilation](https://awesome-repositories.com/f/programming-languages-runtimes/source-code-compilers/runtime-bytecode-compilation.md) — Compiles Java source code and expressions into bytecode directly in memory for immediate execution.
- [Abstract Syntax Tree Parsing](https://awesome-repositories.com/f/programming-languages-runtimes/abstract-syntax-tree-parsing.md) — Parses Java source code into hierarchical tree structures for programmatic analysis and manipulation.
- [Class Loading Mechanisms](https://awesome-repositories.com/f/programming-languages-runtimes/dynamic-class-creation/class-loading-mechanisms.md) — Enables dynamic loading of compiled Java classes into the application runtime.
- [Source-Based Loaders](https://awesome-repositories.com/f/programming-languages-runtimes/dynamic-class-creation/class-loading-mechanisms/source-based-loaders.md) — Extends standard class loading to define and execute new Java classes dynamically from source strings.
- [Programmatic Code Refactoring](https://awesome-repositories.com/f/programming-languages-runtimes/language-interoperability/interoperability/typescript-execution/programmatic-code-refactoring.md) — Reads compilation units into memory as structured trees to enable programmatic code updates. ([source](http://janino-compiler.github.io/janino))
- [Java Parsers](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/data-structure-type-helpers/data-structures/hierarchical-tree-structures/source-code-abstract-syntax-trees/java-parsers.md) — Provides a framework for parsing Java source files into structured trees for analysis and modification.
- [Java Source Code Analyzers](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/data-structure-type-helpers/data-structures/hierarchical-tree-structures/source-code-abstract-syntax-trees/java-source-code-analyzers.md) — Parses Java source files into structured abstract syntax trees to enable static analysis and programmatic code manipulation.

### Software Engineering & Architecture

- [Dynamic Expression Evaluators](https://awesome-repositories.com/f/software-engineering-architecture/dynamic-expression-evaluators.md) — Evaluates Java expressions dynamically at runtime to process logic and formulas. ([source](https://github.com/janino-compiler/janino/search))

### Data & Databases

- [Method Body Generators](https://awesome-repositories.com/f/data-databases/data-structure-definitions/data-class-generators/generated-class-customization/arbitrary-structure-class-generators/method-body-generators.md) — Constructs class definitions and method bodies at runtime to execute custom behaviors. ([source](http://janino-compiler.github.io/janino/))
- [Recursive Descent Parsers](https://awesome-repositories.com/f/data-databases/data-transformation-functions/recursive-processors/recursive-logic-implementations/recursive-descent-parsers.md) — Implements recursive descent parsing to resolve complex dependencies and circular references during compilation.

### Security & Cryptography

- [Execution Sandboxes](https://awesome-repositories.com/f/security-cryptography/execution-sandboxes.md) — Provides sandboxed execution environments to restrict system resource access for dynamically generated logic.
