Compare
PHP to Java migration: manual rewrite vs AI agents vs parity-gated
Kiro and Cursor are general AI coding environments; AWS has shown they can drive a PHP-to-Java migration if you build the harness yourself. MigrateForge ships that harness.
Parity-first is becoming the consensus
In October 2026, AWS published an open-source PHP-to-Java migration engine built on the same core idea: treat the original PHP application as the specification, and build the verification harness before writing the Java.
We agree with their principles, which match how MigrateForge works: discovery before translation, build the judge before the code, fix the loop rather than patching the output, and keep one shared methodology that improves with every project.
Their write-up is also admirably honest about where the sample stops. In their walkthrough, four of thirty-seven models were ported, and the parity harness itself was not built. They call that
“the single biggest gap.”
That gap is the work. Describing a verification approach is straightforward. Building one that refuses to pass when something is untested, and then living with it when it fails you, is the slow part.
Where MigrateForge is today: four migrated waves across two applications, each verified on every recorded journey, comparing responses, database writes and outgoing API calls — not responses alone. We publish coverage alongside parity, and we test the checker itself by planting deliberate bugs.
Read the AWS post → AWS sample repo → See our proof →
The thinking behind this comparison →
AWS and Kiro are products of Amazon Web Services. We’re not affiliated with or endorsed by AWS.
PHP to Java migration: manual rewrite vs AI agents vs parity-gated
Compare · five approaches
Gate on recorded journeys
-
Rewrite
Engineers rebuild the system by hand.
-
AI assistant
Inline autocomplete and code generation.
-
AWS Kiro
General AI coding environment; can drive PHP→Java with a DIY harness.
-
AWS Transform
Agentic portfolio modernization that can reuse the same DIY skills.
-
MigrateForge
Local-first AST engine and 3D shadow replay to Java 21 Spring Boot.
Where the approaches differ
| Capability | Rewrite | AI assistant | AWS Kiro | AWS Transform | MigrateForge |
|---|---|---|---|---|---|
| Behavioural proof on recorded journeys | Partial | No | Partial | Partial | Yes |
| Cutover blocked until journeys match | No | No | No | No | Yes |
| Source stays on your machines | Yes | No | Partial | Partial | Yes |
| Built for PHP → Java modernisation | Partial | No | Partial (DIY methodology via the AWS sample) | Partial (DIY methodology via the AWS sample) | Yes |
Dimension by dimension
Primary focus
Rewrite
Line-by-line refactoring by engineers.
AI assistant
Inline autocomplete and code generation.
AWS Kiro
General AI coding environment; specs and agent hooks for multi-step work.
AWS Transform
Portfolio-scale agentic modernization using shared skill files.
MigrateForge
Legacy modernisation: PHP to Java 21 and Spring Boot, with a shipped parity gate.
Behavioural proof
Rewrite
Manual QA and unit tests.
AI assistant
None built in. A person still has to check behaviour.
AWS Kiro
Specs, agent hooks, property-based tests
AWS Transform
Same DIY methodology as the Kiro sample when you supply the skills.
MigrateForge
Replay of recorded journeys: responses, database writes, and outgoing API calls. Four published waves reached 100% parity, with every data write verified. The match covers journeys that were recorded.
Undocumented logic
Rewrite
A rewrite can miss rules that were never written down.
AI assistant
A prompt can miss side effects the model was not shown.
AWS Kiro
Depends on someone writing the requirements down.
AWS Transform
Depends on discovery skills and human review of flags.
MigrateForge
Recorded live traffic is what gets replayed. Behaviour that was never recorded is outside the claim.
Cutover gate
Rewrite
A person’s sign-off.
AI assistant
A test pass in the editor.
AWS Kiro
You build and run the parity harness yourself.
AWS Transform
You build and run the parity harness yourself.
MigrateForge
Cutover stays blocked until the recorded responses, database writes, and outgoing API calls match. The published waves had 0 write-effect differences.
Source code
Rewrite
Stays with the team doing the rewrite.
AI assistant
Sent to the assistant’s cloud API.
AWS Kiro
Runs in a cloud or IDE workspace.
AWS Transform
Runs in AWS Transform’s agentic environment.
MigrateForge
Local-first. Application source, the database, and the sandbox stay on your machines. Only AI requests leave.
Price
Rewrite
Not a measured figure. An illustrative industry range for a traditional agency rewrite of ~50,000 LOC is on the pricing page ($180k–$350k, 6–9 months).
AI assistant
Not a figure this site measures.
AWS Kiro
Not a figure this site measures.
AWS Transform
Not a figure this site measures.
MigrateForge
A range, not a fixed tier and not a quote. The two published free reports, both medium and HIGH, put Assessment at ₹2.5–3.5 lakh ($3,000–$4,200) and Migration from ₹20,000–₹32,000 per 1,000 PHP lines (HIGH: upper half). For ~50,000 LOC that is about $12k–$19k migration. Duration is not a published figure.
After the move
Once the application is on Java 21 and Spring Boot, tools like Cursor or AWS Kiro can help build new features. MigrateForge is the cutover gate on the way there: local-first AST translation plus 3D shadow replay that holds cutover until write-effects on recorded journeys show 0 differences.