javaparser
RepositoryFreeJava 1-25 Parser and Abstract Syntax Tree for Java with advanced analysis functionalities.
Capabilities12 decomposed
java source code parsing with full ast generation (java 1-25 support)
Medium confidenceConverts Java source code into a complete Abstract Syntax Tree using a recursive descent parser that handles Java language features from version 1.0 through Java 25 including preview features. The parser generates a hierarchical node structure (CompilationUnit → ClassOrInterfaceDeclaration → MethodDeclaration, etc.) that preserves all syntactic information including comments, annotations, and modifiers. The parsing pipeline tokenizes input, applies grammar rules, and constructs typed AST nodes that can be traversed and manipulated programmatically.
Supports Java 1-25 with preview features through a metamodel-driven parser generator (javaparser-core-metamodel-generator) that auto-generates AST node classes from a grammar specification, enabling rapid adaptation to new Java language features without manual node class creation
More comprehensive Java version support (1-25) than ANTLR-based parsers and includes built-in symbol resolution, whereas generic parser generators require separate semantic analysis layers
ast node traversal and visitor pattern implementation
Medium confidenceProvides visitor pattern implementations (GenericVisitor, ModifierVisitor, VoidVisitor) that enable traversal and transformation of the AST without modifying the node classes themselves. The visitor pattern allows developers to define custom logic that executes on specific node types (e.g., MethodDeclaration, FieldDeclaration) as the tree is walked. ModifierVisitor enables in-place AST transformation by returning modified nodes, while VoidVisitor supports side-effect operations like analysis and reporting.
Implements three distinct visitor variants (GenericVisitor for read-only traversal, ModifierVisitor for in-place transformation, VoidVisitor for side-effects) generated from a metamodel, allowing developers to choose the appropriate pattern without boilerplate
More flexible than tree-walking interpreters because visitors are composable and can be chained; more type-safe than reflection-based AST manipulation because visitor methods are generated with correct node type signatures
annotation processing and metadata extraction
Medium confidenceExtracts and analyzes Java annotations from AST nodes, providing access to annotation values, targets, and metadata. Developers can query annotations on classes, methods, fields, and parameters, and extract annotation values (strings, numbers, arrays, nested annotations) for use in code analysis and generation. This enables tools to leverage annotation-driven development patterns and extract configuration from annotated code.
Provides direct AST-level access to annotations through AnnotationExpr nodes, enabling extraction of annotation values without reflection or runtime processing, making it suitable for static analysis and code generation
More flexible than reflection-based annotation processing because it works with source code; more complete than regex-based annotation matching because it understands annotation syntax and values
method and field resolution with overload resolution
Medium confidenceResolves method calls and field accesses to their definitions by analyzing method signatures, parameter types, and inheritance hierarchies to determine which overloaded method is being invoked. The resolution system handles method overloading, varargs, type erasure, and inheritance-based method lookup (including interface default methods). It returns ResolvedMethodDeclaration objects that provide access to the method's signature, return type, and declaring class.
Implements overload resolution that respects Java's method selection rules (exact match, widening conversion, boxing, varargs) and handles inheritance-based lookup including interface default methods, enabling accurate determination of which method is invoked
More accurate than name-based matching because it considers parameter types and inheritance; more complete than simple signature matching because it handles overloading and method overriding
lexical preservation and comment attribution
Medium confidencePreserves original source formatting, whitespace, and comments during parsing and AST manipulation through a lexical preservation system that tracks token positions and associates comments with AST nodes. When the AST is modified and pretty-printed, the original formatting is maintained where possible, and comments are reattached to their corresponding code elements. This is critical for tools that need to preserve developer intent and code style during transformations.
Uses a token-position tracking system (Range objects) that maps AST nodes to their source locations and associates comments through proximity analysis, enabling round-trip preservation where code can be parsed, modified, and printed with original formatting intact
Preserves formatting better than ANTLR-based parsers which typically discard whitespace; more accurate comment attribution than regex-based comment matching because it uses syntactic context
symbol resolution and type inference across compilation units
Medium confidenceResolves Java symbols (types, methods, fields, variables) to their definitions across multiple compilation units using a context-based resolution system (javaparser-symbol-solver-core). The symbol solver uses type resolvers (ReflectionTypeSolver, JavaParserTypeSolver, CombinedTypeSolver) to locate symbol definitions in the classpath, source code, or runtime reflection. It performs type inference on expressions and method calls, handling generics, inheritance hierarchies, and method overloading to determine the exact symbol being referenced.
Implements a pluggable type resolver architecture (TypeSolver interface) that combines multiple resolution strategies (reflection, source parsing, classpath scanning) through CombinedTypeSolver, enabling resolution across heterogeneous codebases mixing compiled and source code
More accurate than simple name-based matching because it respects Java scoping rules and inheritance; more flexible than IDE-specific symbol tables because it works with arbitrary codebases without IDE integration
code generation from ast templates and builders
Medium confidenceGenerates Java source code from AST structures using a builder pattern API (CompilationUnitBuilder, ClassOrInterfaceBuilder, MethodBuilder, etc.) that constructs AST nodes programmatically without parsing. Developers can fluently build AST hierarchies by chaining builder methods, then pretty-print the resulting AST to Java source code. This enables code generation tools to create Java code dynamically based on templates, configurations, or runtime decisions.
Provides a fluent builder API (CompilationUnitBuilder, ClassOrInterfaceBuilder) that mirrors the AST structure, allowing developers to construct code programmatically without parsing, with type-safe method chaining and automatic node hierarchy management
More type-safe and discoverable than string-based code generation because builders enforce valid AST construction; more maintainable than template strings because changes to code structure are refactored automatically
ast serialization and deserialization to json
Medium confidenceSerializes parsed AST structures to JSON format and deserializes JSON back into AST objects through the javaparser-core-serialization module. This enables AST persistence, transmission over networks, and integration with tools that work with JSON representations of code structure. The serialization preserves all AST node information including types, positions, and metadata.
Provides bidirectional JSON serialization that preserves all AST node types and metadata, enabling round-trip conversion (AST → JSON → AST) without information loss, unlike generic JSON serialization which would lose type information
More complete than generic JSON serialization because it preserves AST node types; more efficient than re-parsing because deserialization is faster than parsing for cached ASTs
pretty printing with customizable formatting rules
Medium confidenceConverts AST structures back to formatted Java source code using a configurable pretty printer that supports custom indentation, line breaks, and spacing rules. The pretty printer traverses the AST and generates source code that respects the original formatting when lexical preservation is enabled, or applies default formatting rules otherwise. Developers can customize output through PrettyPrinterConfiguration to enforce code style standards.
Integrates with lexical preservation system to maintain original formatting when available, while falling back to configurable default rules, enabling both preservation of existing code style and enforcement of new standards
More flexible than fixed formatters because rules are customizable; more accurate than regex-based formatting because it understands AST structure and respects Java syntax
metamodel-driven ast node generation and evolution
Medium confidenceUses a metamodel specification (javaparser-core-metamodel-generator) to automatically generate AST node classes, visitor implementations, and serialization code, enabling rapid adaptation to new Java language features without manual coding. The metamodel describes the structure of each AST node type (fields, relationships, constraints), and code generators produce the corresponding Java classes, ensuring consistency and reducing maintenance burden.
Implements a metamodel-driven code generation pipeline that produces AST nodes, visitors, and serialization code from a single specification, enabling consistent evolution of the parser as Java language features are added without manual duplication
More maintainable than hand-coded AST nodes because changes propagate automatically; more consistent than manual implementations because all generated code follows the same patterns
multi-file codebase analysis with project-wide symbol resolution
Medium confidenceAnalyzes entire Java projects by parsing multiple compilation units and resolving symbols across file boundaries using a project-aware symbol solver. The JavaParserTypeSolver indexes source directories and enables symbol resolution that spans the entire codebase, allowing tools to understand cross-file dependencies, inheritance hierarchies, and method call chains. This enables project-wide refactoring and analysis without processing files in isolation.
Combines JavaParserTypeSolver (source-based resolution) with CombinedTypeSolver to enable symbol resolution across entire projects, maintaining a unified symbol table that spans multiple compilation units and respects Java scoping rules
More comprehensive than file-by-file analysis because it understands cross-file dependencies; more accurate than IDE-based analysis because it works with arbitrary codebases without IDE integration
generic type parameter resolution and constraint solving
Medium confidenceResolves Java generic type parameters to their concrete types through a constraint-solving system that handles type bounds, wildcards, and inheritance hierarchies. When analyzing code like `List<String>` or method calls with generic parameters, the symbol solver infers the concrete type arguments by analyzing type constraints from assignments, method signatures, and inheritance relationships. This enables accurate type information for generic code.
Implements a constraint-based type inference system that solves for generic type parameters by analyzing type bounds, inheritance relationships, and assignment contexts, enabling resolution of complex generic patterns without explicit type annotations
More accurate than simple name-based matching because it respects Java's type system; more complete than reflection-based approaches because it works with source code and handles type erasure
Capabilities are decomposed by AI analysis. Each maps to specific user intents and improves with match feedback.
Related Artifactssharing capabilities
Artifacts that share capabilities with javaparser, ranked by overlap. Discovered automatically through the match graph.
Semgrep
** - Enable AI agents to secure code with [Semgrep](https://semgrep.dev/).
Scaffold
** - Scaffold is a Retrieval-Augmented Generation (RAG) system designed to structural understanding of large codebases. It transforms your source code into a living knowledge graph, allowing for precise, context-aware interactions that go far beyond simple file retrieval.
codebase-memory-mcp
High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 66 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.
CodeGraphContext
An MCP server plus a CLI tool that indexes local code into a graph database to provide context to AI assistants.
MutahunterAI
MutahunterAI: Accelerate developer productivity and code security with our open-source AI
ts-morph
TypeScript Compiler API wrapper for static analysis and programmatic code changes.
Best For
- ✓Java code analysis tool builders
- ✓IDE developers needing AST infrastructure
- ✓Static analysis and linting tool creators
- ✓Code refactoring and transformation frameworks
- ✓Developers building custom code analysis tools
- ✓Refactoring tool implementers
- ✓Code generation framework builders
- ✓Teams needing extensible AST processing without modifying core node classes
Known Limitations
- ⚠Parser is single-threaded; parsing large codebases requires sequential processing
- ⚠No built-in caching of parsed ASTs across invocations
- ⚠Preview features support depends on parser version alignment with Java release cycle
- ⚠Memory overhead scales with codebase size (full AST retained in memory)
- ⚠Visitor pattern requires explicit method overrides for each node type; no automatic delegation
- ⚠Deep AST traversal can be memory-intensive for large codebases
Requirements
Input / Output
UnfragileRank
UnfragileRank is computed from adoption signals, documentation quality, ecosystem connectivity, match graph feedback, and freshness. No artifact can pay for a higher rank.
Repository Details
Last commit: Apr 1, 2026
About
Java 1-25 Parser and Abstract Syntax Tree for Java with advanced analysis functionalities.
Categories
Alternatives to javaparser
Are you the builder of javaparser?
Claim this artifact to get a verified badge, access match analytics, see which intents users search for, and manage your listing.
Get the weekly brief
New tools, rising stars, and what's actually worth your time. No spam.
Data Sources
Looking for something else?
Search →