Platform migration from PowerBuilder to Java

Convert PowerBuilder to Java

Move PowerBuilder client-server applications onto Java without losing the business rules sealed inside binary PBL libraries and DataWindow objects. Spec-first, validated, and governed end to end.

Six reasons to move off PowerBuilder

PowerBuilder still runs working line-of-business systems, but the risk of standing still compounds every year.

customer.pbl
read
search
diff

Logic is locked in binaries

Application logic ships inside compiled .pbl libraries that cannot be read, searched, or diffed in source control without the proprietary IDE. Nobody can review what they cannot open.

PowerBuilderbehavior
Javasame behavior

Same functionality, new platform

Migration does not mean rebuilding features. Forge reconstructs what your PowerBuilder objects actually do into a Living Spec, then generates Java that preserves that behavior.

BEHAVIOR PRESERVED

PowerScript engineers available, declining

Talent is disappearing

The pool of engineers fluent in PowerScript shrinks every year, driving up maintenance cost and concentrating key-person risk in a handful of people close to retirement.

Security patches
Dependency scanning
Audit logging
PowerBuilder runtime

Security and compliance

Actively maintained Java frameworks receive the patches and audit tooling that aging PowerBuilder runtimes and their client-server assumptions no longer get.

desktop .exeinstall on each
Java servicedeploy once

Escape the desktop deployment model

Client-server executables pushed to every workstation become web-deployable JVM services, removing an install-and-update burden from every release.

PowerBuilder
risk review
Java
ship
time to ship one change

Velocity returns

Teams ship features far faster on the JVM ecosystem than on a frozen PowerBuilder platform where every change is a risk review.

See your ForgeScore before you commit

Every import is scored across eight engineering-health dimensions before a Work Order is planned, so you know what you are dealing with up front.

Every PowerBuilder-to-Java project on Forge starts the same way: your codebase is imported, scored across eight engineering-health dimensions with ForgeScore, and reconstructed into a Living Spec before a single line of Java is generated. That is what keeps behavior intact and architecture on plan.

8

ForgeScore dimensions

Every stage

Approval gates

6

Pipeline stages

What changes when you move to Java

The shift is more than syntax. Paradigms, data access, and runtime assumptions all move, and each one needs an explicit mapping.

01

Language & paradigm

PowerScript event handlers attached to visual objects are restructured into idiomatic, well-factored Java classes and services rather than transliterated event for event.

02

Data access

DataWindow objects, which bind query, layout, and update logic in a single artifact, are decomposed into explicit JDBC or JPA data access plus a separate presentation layer.

03

Runtime & packaging

Client-server executables deployed to desktops give way to services deployable on the JVM, with the database connection moved behind an application tier.

04

Tooling & workflow

The proprietary PowerBuilder IDE and binary PBLs are replaced by standard IDEs, plain-text sources under Git, automated tests, and CI pipelines.

How the migration actually worksFrom import to verified output, every step is scored, specified, and tracked.
Import PowerBuilder
ForgeScore assessment
Approved specification
Work orders
Verified & shipped
Works in your editor
01Import PowerBuilderYour existing PowerBuilder codebase is ingested as-is, PowerScript sources and DataWindow definitions included. No prior documentation needed.
Import PowerBuilder
02ForgeScore assessmentScored across 8 engineering-health dimensions, including DataWindow coupling and decimal-precision risk, before you commit to anything.
ForgeScore assessment
03Approved specificationBusiness rules, including DataWindow validation and undocumented PowerScript event logic, are reconstructed from source into a spec your team approves.
Approved specification
04Work ordersThe spec becomes Build, Migrate, and Decommission work orders, scoped and sequenced.
Work orders
05Verified & shippedEach Migrate work order is checked against the original PowerBuilder behavior, including numeric precision, before it ships as Java.
Verified & shipped
06Works in your editorWork orders connect into Claude Code, Cursor, Windsurf, and other AI code editors over MCP, so the governed spec travels with you instead of staying in a document.
Works in your editor

What Forge actually produces

Every PowerBuilder import is scored across 8 engineering-health dimensions, then broken into Build, Migrate, and Decommission work orders. Here is what that looks like for a DataWindow coupling finding.

ForgeScore finding

Data Weight

54

How data is modeled, moved, and owned. Moderate score: DataWindow objects bind query, layout, and update rules into a single artifact, so each concern needs separating first.

Medium severity finding

Migration work order

Migrate: d_customer_list

Migrate

Decompose the customer DataWindow into a typed Java model, explicit data access, and a separate presentation layer with equivalent validation. Includes verification against the original PowerBuilder behavior before this work order is marked complete.

Common challenges

Most PowerBuilder migrations fail for the same handful of reasons, and it is rarely the technology itself.

customer.pblnot reviewable
Living Specreviewable
reconstructed from source, no IDE required

Logic sealed in binary PBLs

Business rules live inside compiled library files that cannot be read or searched without the proprietary IDE, so discovery has to happen before any planning.

d_customer_list3-in-1
SELECT
layout
update rules

DataWindow coupling

A single DataWindow binds SQL, layout, validation, and update behavior together, and each concern has to be separated before it can move.

decimalPowerBuilder decimal
BigDecimalexact precision
1234.56 → 1234.56 · verified

Type & semantic mismatches

PowerScript's decimal handling and implicit conversions rarely map cleanly onto Java's type system without explicit precision decisions.

unit tests0
integration0
parity suitenone
Forge generates the parity suite

No test coverage

Legacy PowerBuilder systems usually ship with nothing to prove behavioral parity against.

Frequently asked questions

How long does migrating PowerBuilder to Java take?

Can Forge read our compiled PBL files?

Will the generated Java be maintainable?

What happens to our DataWindows?

How do you prove the migrated system behaves the same?