Last Update: March 29, 2019

With IO64 PL/SQL to Java Conversion Toolkit, you can convert from PL/SQL to Java with a fully automated process and run on an open source pure Java runtime library. You can rewrite or refactor provided library according to your needs. Since converted code preserves the logic, it can be used as a baseline for other migration paths.

Contact for
- Pricing
- Free write-enabled credentials for demo application
- Any other questions

Access Demo Application Here
Use readonly/readonly for readonly access.

Follow us on Twitter for upcoming news..


-On-premise installation is available via custom Linux VM. ( Ubuntu 16.04 LTS + Custom GLIBC + Custom JVM )
-Conversion as a service option is available.

Upcoming Events:

- Pricing schema
- Documentation for on-premise installation

PL/SQL to Java Conversion Console (InMemory Mode)

IO64 Conversion Console is developed for functional examination of the toolkit as of first phase. It does not include any functional limitation. All conversion steps are executed in-memory.

PL/SQL to Java Conversion Process (Batch Mode)

The following video shows complete conversion process in batch mode; DDL export, indexing source codes for fast lookups through conversion, PL/SQL to Java conversion and execution of resulting Java code. Example package first selects records with cursor from a source table and inserts or updates to target table. After each iteration inserts changelog to another table.

How It Works

Both batch and in-memory modes expect a valid schema for a successful conversion. An invalid source schema may result incomplete Java class output or variables that are declared as "Object", which will increase manual post editing.

First 3 steps are for boosting continuous conversion speed. Continuous conversion is suggested for environments where PL/SQL maintenance is done in parallel during migration period. Please feel free to contact for discussing installation and your migration path alternatives.

Below are the steps for batch mode. In-memory mode starts from Step 4 and executes intermediary steps just before when necessary with directly accessing data dictionary tables at runtime.

Step 1 - Exporting: Object definitions are exported from data dictionary tables (DBA_XXX) to files.

Step 2 - AST Indexing: Indexer parses all exported files and saves AST(Abstract Syntax Tree) for each source file. These index files are used for fast lookups during conversion.

Step 3 - Type Tree Building: Relevant AST Index files are read and a tree is built for resolving types of referenced objects.

Step 4 - Java Generation: All necessary AST Index files are read, combined with Type Tree, complete Java package structure and classes are generated.


-PL/SQL to Java Conversion Toolkit is developed for 100% complete Java conversion and removing PL/SQL dependency in mind. Or even Oracle DB dependency
Any additional usage of commercial or open source library is avoided. This allows generating portable and refactorable Java code. Resulting code may run in any container (E.g. Application Server) or even without a container as a pure Java executable.

-All conversion process generates source for only one schema
Migration of multiple schemas is possible through regular conversion process and manually combining outputs. In single schema conversion scenario, a Java Project that contains non-functional facades of objects and methods in the neighbour schemas is generated, They are left as-is for manual linking to underlying database through JDBC or imitating functionality in Java. (or running another IO64 conversion process to generate Java code)

-As a result, migration process ends up with 3 Java Projects;
one for the schema under focus,
one for all other custom neighbour schemas, and
one for PL/SQL standard functionality to be used as a runtime library.
The third one continuously get updates as standard functionality is continuously implemented.(Snapshot is delivered at conversion)

While some PL/SQL specifications are valid, the Java equivalent is forbidden.
Unreachable code in PL/SQL is allowed and compilable but in Java it is not compilable in any way.
PL/SQL functions having return type may or may not return appropriate values in flow but in Java if a function has a return type, it must be returned in the execution flow.
To automate these quick fixes, an Eclipse plug-in is implemented and will be delivered for on-premise installations. In service model engagements it will be executed before delivery. This plug-in adds the quick fixes automatically with one click and will not impact original PL/SQL logic since it never really runs in the original source.

Requirements & Limitations

Source schema should be valid. Other custom schemas and third-party libraries need NOT to be exported but should be verifiable via data dictionary tables(or exports of them).

Type resolution at remote end of DBLINK will result a generic Java "Object" type and thus will cause manual editing of the output. This may be prevented by providing additional configuration files that describes the remote end tables for continuous conversion environment (only if requested as on-premise deployment for continuous conversion).

Currently, triggers are not supported.