GenApp is a modular framework for multiscale science computations. It enables one to generate web & gui applications from same source.
- The target languages for the user interface side are totally independent of the modules
- Different target applications or deployed systems can be generated from the specifications. There include HTML5 with PHP, Qt3 with C++, Qt4 with C++. Java, Android and iOS version will also be available shortly
- It can generate multiple targets simultaneously
The benefits of GenApp include:
- can add features, create interfaces etc. with minimal effort
- changes to target code can be done without effecting the "base" logic
- i.e. if we generate Qt4 GUI code and want to move to Qt6, our underlying modules don't need change
- text files allow "mouse-free" generation
- this means that further automation is easy
- can later target an application managing the application itself
Integration with Airavata
GenApp provides interfaces in various programming languages which have been integrated with Airavata. This integration has provided GenApp thecapability to run long running, non-interactive jobs on various clusters. Thanks to the integration with airavata, Genapp can harness distributed computing resources including local clusters, supercomputers, national grids, academic and commercial clouds.
The Integration has been achieved using Airavata's thrift based API, which is available in different programming languages. The language interfaces of Genapp integrated with Airavata include PHP/HTML5, C++/Qt3, C++/Qt4. A service has been created which registers all GenApp modules on Airavata with a single command. Airavata PHP and C++ Clients have been developed which make the integration possible, allowing GenApp to submit jobs to Airavata, including creating projects, creating and launching experiments. Besides GenApp also has access to the current status of the launched experiment and automatically processes the output once the the experiment is completed.
The overview of GenApp-Airavata Integration can be seen in the diagram below: