Tailored and business components in a large set of languages, including native ones like C/C++ or Fortran, can be integrated through techniques fully validated with a low extra-cost in memory and CPU. Various approaches can be used depending on the needs of tailored software to be integrated.
Java/JNI Wrapping: The Java/JNI wrapping technique provided a very deep integration of low-level components like libraries. This technique is already used for several large libraries, like VTK or Gmsh in C/C++ or SIG codes or simulation kernels in Fortran. At runtime, the OSGi-based design of Keridwen facilitates the identification and the deployment of the relevant binary package for each targeted platform.This approach also allows an efficient integration of optimised sub-routines, based on a native implementation, into complex simulation loops gathering various languages. Various application cases have confirmed the relevance of such approach in terms of memory and CPU time.
System calls: In alternative, runnable standalone applications can also be integrated through system commands calls. The implemented Keridwen modules take in charge the detection and the adaptation of the call to each platform, the transmission of input and output files and the management of the corresponding job (PID, errors codes...).This approach is especially relevant for pre-existing runnable software where a non-intrusive integration scheme is needed for technical or historical reasons. This technique offers to the scientific expert the possibility to keep the full control of the evolution of his simulation software, having on the other hand the possibilities offered by the integration in a Keridwen-based IME. This approach has been successfully used in several application cases (SPIS, SIG tools...).