Moderne & OpenRewrite Language Support

One platform. Every language
in your codebase.

Moderne and OpenRewrite deliver safe, deterministic code transformation across your entire repository estate — Java, Python, C#, Kotlin, and more. The same LST-powered engine. The same governed recipe workflow. Every language, at enterprise scale.
$ mod run . --recipe UpgradeToJava21
Scanning 312 repositories across Java, Python, C# portfolios...
Found 312 repositories | 4.2M lines of code | 7 languages
Running recipes across language boundaries...
✔ Java 21 migration: 247 repos — 18,420 files changed
✔ JavaScript ESLint cleanup: 54 repos repos — 1,247 files refactored
✔ Python type annotations: 38 repos — 2,811 files updated
MOD SUCCEEDED · 285 repos updated · 312 PRs open for review
Java Programming Language
JAVA
Spring
SPRING
C# Programming Language
C# / .NET
Javascript
Python Programming Language
PYTHON
Kotlin
KOTLIN
+ CONFIG
Java.java
Spring@Bean
C# / .NET.cs
JS / TS.ts · .js
Python.py
Kotlin.kt
BuildGradle · Maven
Moderne
LST
Java.java
Spring@Bean
C# / .NET.cs
JS / TS.ts · .js
Python.py
Kotlin.kt
BuildGradle · Maven
Moderne
LST

Enterprise codebases aren't monolingual.

Java services call Python ML pipelines. C# APIs depend on shared libraries. Spring Boot applications sit alongside Kotlin microservices. But most modernization tools treat each language as a separate problem — separate tooling, separate processes, separate teams.

The Lossless Semantic Tree (LST) changes that. Every supported language builds the same compiler-accurate structural model — enabling the same recipe-driven workflow, the same governed pull request process, and the same enterprise-scale orchestration regardless of what's in the file header.
Supported Languages

Deep support across the enterprise stack

Each language benefits from the full Moderne platform — recipe-driven transformations, multi-repository orchestration, and LST-powered semantic correctness.
Java Programming Language
MOST MATURE
Java & JVM
The broadest recipe catalog in the ecosystem — spanning Java 8 through 21+, Spring Framework, security CVE remediation, static analysis, and dependency management. Trusted by Fortune 500 teams with thousands of repositories.
1,000+
Recipes
Java 8-25
Version coverage
CVE
Security recipes
Java Modernization
Spring
FRAMEWORK
Spring Boot
Comprehensive Spring Boot migration coverage from 1.x through 3.x — and now tracking Spring Boot 4. Automate the full upgrade path including Spring Security, dependency updates, and breaking API changes across hundreds of services.
1.x → 4.x
Migration path
#1
Spring Boot 4 Ranking
Spring Boot Migration
C# Programming Language
NEW
C# / .NET
C# is now fully represented in the OpenRewrite LST — enabling .NET Core to .NET 10 migrations, nearly 500 code quality recipes modeled on Roslynator diagnostics, NuGet dependency management, and xUnit to TUnit test migration at portfolio scale.
700+
C# recipes
.NET 10
Migration target
Nov 2026
.NET 8/9 EOL
C# / .NET Modernization
Growing
JavaScript & TypeScript
The JavaScript and TypeScript LST brings type-aware analysis to Node.js and front-end codebases, built on the TypeScript compiler and shipped with recipes for npm dependency management, ES6 and TypeScript migration, and code cleanup.
Type-aware
Via TS compiler
Node.js
Ecosystem
Javascript Modernization
Python Programming Language
GROWING
Python
OpenRewrite's Python support brings semantic code analysis and automated transformation to Python repositories — enabling dependency modernization, import restructuring, and large-scale change coordination across Python codebases at enterprise scale.
Semantic
LST analysis
pip / PyPI
Dependency mgmt
Python transformation
ECOSYSTEM
Build files & config
OpenRewrite includes recipes for Gradle (41), Maven (69), YAML (17), XML (18), JSON (8), Toml (10), HCL (5), and Properties files — covering the build and configuration layer of your repository estate alongside application code.
Browse Recipe Catalog
On-demand webinar

Automated Code Changes at Scale

Engineers from Netflix, Airbnb, and LinkedIn share how they tackle automated code changes across thousands of repositories — and get developers to actually review and merge the PRs.
Watch Now
The Technology

One engine under every language

The Lossless Semantic Tree (LST) is Moderne's core differentiator — and the reason the same recipe-driven approach works across Java, Python, C#, and beyond.

An LST is a compiler-accurate structural model of source code: it preserves comments, formatting, and whitespace while capturing full type and symbol information. Every supported language generates an LST, and every recipe operates against that model — making transformations deterministic, format-preserving, and safe across your entire codebase.
Parse and index
Moderne ingests repositories and builds LSTs for every supported language. LSTs are updated as code changes so the model stays current.
Select and configure recipes
Choose from the OpenRewrite recipe catalog — or compose custom recipes for your organization's specific patterns. Recipes are language-aware; the right transformations apply to the right files automatically.
Review and merge
Moderne generates commits and reviewable pull requests for all affected files. Your team reviews; Moderne does the coordination.
LST-Powered Execution Model
Source repositories (all languages)
Java · Python · C# · Kotlin · Gradle · YAML · XML
Lossless Semantic Tree (LST)
Compiler-accurate · Format-preserving · Type-aware
OpenRewrite Recipe Engine
Deterministic · Governed · Composable
Pull Requests at scale
Reviewed · Accurate · Ready to merge
LST-Powered Execution Model
Java
Spring Boot
C# / .NET
JavaScript
Python
Kotlin
Gradle / Maven
YAML / XML
Scala
z/OS Cobol

What enterprise modernization requires — across every language

Platform capabilities that apply regardless of whether you're upgrading Java, migrating Python, or modernizing a C# portfolio.
Semantic correctness
The LST captures full type and symbol information — not regex substitutions. Changes are accurate across the entire codebase, regardless of language.
Composable recipe catalog
Recipes chain together and reuse logic across languages. A governance standard applied in Java can be mirrored in Python and C# with the same workflow.
Portfolio-wide visibility
A unified view of migration progress, coverage gaps, and risk across every language and repository — not siloed dashboards per tool.
Multi-repository orchestration
Coordinates changes across hundreds of repositories in a single run — with impact analysis, coordinated pull requests, and centralized progress tracking.
Format-preserving output
LST-powered transformations maintain existing formatting and coding conventions. Changes integrate cleanly without diff noise or style conflicts.
Human-in-the-loop for behavioral changes
Automated wins apply immediately. Changes requiring judgment are flagged with inline markers — your team decides before anything runs.
Migrating hundreds of .NET repositories to .NET 10 would have cost us hundreds of engineering hours. With Moderne, we did it at a scale and speed that simply wouldn't have been possible otherwise.
David Thoma · Head of Engineering, Billtrust

7,000+

OpenRewrite recipes across Java, Python, C#, Spring Boot, and more

Thousands

Repositories transformed in a single run — across all supported languages

Fortune 500

Engineering teams running Moderne across multi-language estates
Why Moderne

Moderne vs. language-specific tools

Most modernization tools solve one problem in one language. Moderne's LST engine operates across your entire polyglot codebase from day one.
MODERNE + OPENREWRITE
Cross-language orchestration
A single platform coordinates Java, Python, C#, and more — consistent workflow, consistent governance, and consistent pull request structure regardless of language.
Semantic correctness across languages
The LST captures full type and symbol information for each supported language — not regex substitutions. Changes are accurate, format-preserving, and reviewable.
Recipe composability
Recipes chain together and reuse logic across languages. A security remediation recipe can run across Java and Python repositories in the same coordinated run.
Enterprise-scale orchestration
One run. Hundreds of repositories. Coordinated pull requests with impact analysis — not a pile of one-off scripts to maintain.
AI agent-ready
Every supported language is represented in the LST, giving coding agents a semantic model of your full codebase — not just whatever files happen to be in context.
Language-specific tooling
Tool sprawl
Java teams use one tool, Python teams use another, .NET teams use a third. No shared workflow, no shared visibility, no shared governance — coordination becomes the bottleneck.
Syntax-level transforms
Many tools operate on text or AST patterns without full type information — producing changes that look correct but introduce subtle bugs that surface later in CI or production.
Single-purpose recipes
Logic built for Java doesn't transfer to Python. Each new language requires new tooling investment, new expertise, and new maintenance burden.
Repo-by-repo execution
Most tools require running per-project — scaling from 1 repo to 500 means 500x the work, with no central visibility into progress or coverage.
Context-window limitations
LLM-based tools see only what fits in context — missing cross-file dependencies, transitive relationships, and cross-language interactions that the LST captures precisely.
Recipe Coverage

Thousands of recipes.Every language.

OpenRewrite recipes are the unit of transformation — composable, versioned, and validated against real codebases before release.

Every recipe in the catalog operates against the LST — meaning it works with the full semantic model of the code, not just its text representation. This is what makes recipes safe to run at scale without manual review of every change.
Java Programming Language
Java & JVM Recipes
Version upgrades, Spring Boot migrations, security CVE remediation, static analysis, dependency management
C# Programming Language
C# / .NET Recipes
Version upgrades, Spring Boot migrations, security CVE remediation, static analysis, dependency management
JavaScript & TypeScript Recipes
Type-aware refactoring for JavaScript and TypeScript. Node upgrades, ES6 migrations, dependency analysis.
Python Programming Language
Python Recipes
Semantic analysis, dependency modernization, import restructuring, code quality enforcement
Browse the Recipe Catalog
Code Block
Get started

Modernize your entire codebase. Every language. One platform.

Moderne applies safe, deterministic transformations across your full repository estate — Java, Python, C#, and more — so modernization stays done and doesn't compete with product delivery.
Schedule demo

Frequently asked questions

Which languages does Moderne support today?
Do all languages use the same LST engine?
Can I run recipes across multiple languages in a single run?
How does Moderne compare to running language-specific tools separately?
Can Moderne work with polyglot monorepos?
How do coding agents benefit from Moderne's language support?