awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
ronmamo avatar

ronmamo/reflections

0
View on GitHub↗
4,765 stars·701 forks·Java·WTFPL·23 views

Reflections

Reflections is a Java classpath scanning library and metadata indexer designed to locate classes, methods, and resources at runtime. It functions as a tool for annotation discovery and type hierarchy analysis, allowing the system to identify elements marked with specific annotations or to resolve super-types and subtypes within the Java virtual machine.

The project distinguishes itself through metadata serialization, providing mechanisms to save the scanned index to persistent files or source code. This capability reduces application startup overhead by eliminating the need for repeated, expensive classpath scans.

The library covers broad capability areas including the indexing of class members based on signatures and access modifiers, the discovery of non-bytecode resource files, and the use of functional query composition to filter and transform type system metadata. It also provides configuration utilities to define scan boundaries and inclusion patterns for improved performance.

Features

  • Classpath Metadata Indexing - Builds a searchable index of types and members from the Java classpath to avoid repeated expensive scans.
  • Index Deserialization - Reconstructs a metadata index of the project classpath by reading a persisted source file from an input stream.
  • Class Member Indexing - Scans and extracts signatures of methods, constructors, and fields from compiled Java bytecode.
  • Class Member Search - Locates class members based on criteria such as name, parameter types, or access modifiers.
  • Subtype Discovery - Locates all classes that extend or implement a specific type, including both direct and transitive descendants.
  • Bytecode Analysis - Implements bytecode analysis to extract type signatures and annotations without loading classes into the JVM.
  • Classpath Scanning Libraries - Provides a library for indexing and querying Java classes, methods, and resources at runtime.
  • Java Classpath Scanning - Searches the Java classpath at runtime to locate classes, resources, and methods based on specific patterns.
  • Metadata Serialization - Persists the runtime metadata index to files to eliminate scanning overhead during application startup.
  • Annotated Class Discovery - Automatically detects and registers classes marked with specific Java annotations during runtime.
  • Runtime Hierarchy Analysis - Provides a utility for discovering subtypes and resolving super-types within the Java virtual machine runtime environment.
  • Index Persistence - Provides mechanisms to save in-memory classpath indexes to disk to reduce application initialization time.
  • Non-Bytecode Resource Indexing - Indexes non-bytecode files such as properties or configuration files found on the classpath.
  • Annotation Indexing - Organizes extracted annotations using class names as keys for optimized retrieval of annotated elements.
  • Hierarchy Indexing - Scans the classpath to identify and index all superclasses and interfaces for a given type.
  • Hierarchy Querying - Identifies supertypes, superclasses, and interfaces associated with a given class to analyze inheritance structures.
  • Classpath Resource Retrieval - Identifies and retrieves specific resource files directly from the project classpath.
  • Element Location - Identifies specific methods, constructors, or fields marked with specific Java annotations.
  • Type Metadata Query Composition - Provides a mechanism to compose multiple metadata filters and mapping operations for precise type system querying.
  • Type Metadata Querying - Retrieves member signatures using detailed filters for return types, parameter types, or parameter annotations.
  • Type Metadata Transformations - Applies functional operations like mapping and filtering to transform retrieved runtime type system information.
  • Type Hierarchies - Analyzes inheritance structures at runtime to identify all supertypes and subtypes of a given class.
  • Transitive Subtype Resolution - Recursively resolves the full hierarchy of superclasses and interfaces to identify all transitive subtypes.
  • Classpath Resource Discovery - Locates non-bytecode files and resources on the classpath using regular expression patterns and inclusion filters.
  • Introspection and Reflection - Scans and indexes classpath metadata for runtime querying.

Star history

Star history chart for ronmamo/reflectionsStar history chart for ronmamo/reflections

How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does ronmamo/reflections do?

Reflections is a Java classpath scanning library and metadata indexer designed to locate classes, methods, and resources at runtime. It functions as a tool for annotation discovery and type hierarchy analysis, allowing the system to identify elements marked with specific annotations or to resolve super-types and subtypes within the Java virtual machine.

What are the main features of ronmamo/reflections?

The main features of ronmamo/reflections are: Classpath Metadata Indexing, Index Deserialization, Class Member Indexing, Class Member Search, Subtype Discovery, Bytecode Analysis, Classpath Scanning Libraries, Java Classpath Scanning.

What are some open-source alternatives to ronmamo/reflections?

Open-source alternatives to ronmamo/reflections include: jboss-javassist/javassist — Javassist is a bytecode engineering toolkit for analyzing, modifying, and generating Java bytecode and class files. It… derekyrc/mini-spring — mini-spring is a Java dependency injection framework and inversion of control container. It manages the full lifecycle… scalaz/scalaz — Scalaz is a functional programming library for Scala that provides a collection of purely functional data structures… rocky/python-uncompyle6 — python-uncompyle6 is a Python bytecode decompiler and reverse engineering tool designed to convert compiled bytecode… square/kotlinpoet — KotlinPoet is a Java-based API for programmatically creating and formatting Kotlin source files. It serves as a source… system-f/fp-course — This project is an exercise-based learning platform and functional programming course designed to teach Haskell…

Open-source alternatives to Reflections

Similar open-source projects, ranked by how many features they share with Reflections.
  • derekyrc/mini-springDerekYRC avatar

    DerekYRC/mini-spring

    6,360View on GitHub↗

    mini-spring is a Java dependency injection framework and inversion of control container. It manages the full lifecycle of beans, including instantiation, property population, and scope management, while providing a system for automating the wiring of components. The project implements a Java AOP framework that uses dynamic proxies to intercept method calls for cross-cutting logic. It also functions as a Java component scanner to automatically discover and register managed objects via annotations and as a Java event bus to decouple components through a publish-subscribe multicast system. The

    Javamini-springspringspring-boot
    View on GitHub↗6,360
  • jboss-javassist/javassistjboss-javassist avatar

    jboss-javassist/javassist

    4,230View on GitHub↗

    Javassist is a bytecode engineering toolkit for analyzing, modifying, and generating Java bytecode and class files. It functions as a bytecode manipulation library that allows for the editing of class files through either direct bytecode access or high-level source code syntax. The project provides specialized tools for the programmatic creation of new Java classes and interfaces during runtime. It includes a dynamic proxy generator for intercepting method calls and a class loader interceptor that automatically modifies class definitions as they are loaded into the Java Virtual Machine. Addi

    Javajavajava-bytecode
    View on GitHub↗4,230
  • rocky/python-uncompyle6rocky avatar

    rocky/python-uncompyle6

    4,302View on GitHub↗

    python-uncompyle6 is a Python bytecode decompiler and reverse engineering tool designed to convert compiled bytecode files back into human-readable source code. It functions as a source code recoverer and bytecode disassembler, allowing for the analysis of internal program logic and the reconstruction of original language constructs. The tool provides cross-version support, enabling the analysis and recovery of source code from bytecode created across multiple different versions of the Python interpreter. This allows it to operate as a cross-version bytecode analyzer that can interpret varied

    Python
    View on GitHub↗4,302
  • scalaz/scalazscalaz avatar

    scalaz/scalaz

    4,667View on GitHub↗

    Scalaz is a functional programming library for Scala that provides a collection of purely functional data structures and type classes. It functions as a framework for organizing functional behaviors into hierarchies to enable generic programming and type-safe transformations. The library includes tools for composing and managing nested functional effects within a single type stack through a monad transformer system. It provides data structures for representing and combining input, output, and optionality effects. The project covers a broad surface of functional abstractions, including the im

    Scala
    View on GitHub↗4,667
  • See all 18 alternatives to Reflections→