NOTE: To use the advanced features of this site you need javascript turned on.

Home Knowledge Base Runtime Support Manual Runtime Migration

Manual Runtime Migration

The manual runtime migration process means human intervention to emulate the interface and behavior of the original libraries. The approach depends on the nature of the translation process as well as on the existence of similar libraries.

Depending on the scope of the manual runtime migration, it can be either full or partial.

Full translation (see figure below) means the complete emulation of the runtime interface and behavior. Every construction from the source library must be made available in the manually translated library. It is the approach with the highest generality, ensuring that every application written in the source language and using a certain library can be fully translated, either manually or by employing a software migrator.



Partial translation (see figure below) is a viable option when performing automated software migration as a service. These services are project-oriented. The runtime can be emulated on a per-project basis, meaning that there is no need to fully emulate the runtime libraries of the source language. Only the parts of the runtime that are used by the specific project are to be translated.



A sufficient number of partial translations of a library, performed in the context of distinct projects, will finally produce a fully-translated library.

There are two major techniques for performing a manual runtime translation, either full or partial:

  • wrapping to a library with comparable features;

  • development from scratch.

Wrapping to a library with comparable features requires the creation of the runtime interface and of the connections between the interface and a third-party library that has features comparable with the original library. Usually there isn't a perfect match between the required and available features and some code needs to be written in order to realize the link.

Development from scratch is the last resort when no library with comparable features is available to help with the runtime emulation. The main disadvantage of this approach is the effort involved, but there are less constraints in the development process.