MicroEJ MathFlow is a technical computing workbench based on the data flow paradigm. Designed for field engineers, it allows to benefit from MicroEJ SDK’s performance while focusing on the business part of the application.
Making technical computing easy and intuitive, MicroEJ MathFlow provides on the shelf modules based on the powerful Numerical libraries for various domains (image processing, signal processing, big data, …). It also enables to build custom libraries by writing modules in various languages (Java, C, Fortran, Scilab, …), seamlessly integrated inside rich applications by the MicroEJ MathFlow engine.
Integrated Development Environment
MicroEJ MathFlow provides user profiles and tooling to help customers through the whole development process:
- Type editor: create, document and maintain a coherent type library representing the business data model, shared among all module developers. It ensures that all business modules developed by the customer’s team will share a common documented business model.
- Module editor: create, document and maintain on the shelf business modules, easily reusable in different applications. It allows to build up business code through module libraries with version.
- Schema editor: create, document and maintain full applications or libraries.
- Application generator: generate optimized source code for your application, then compile and directly export it to the desired target in one click.
- Unit and integration testing: write unit test for modules and integration tests for applications, to perform test driven development and avoid regressions. Tests can be easily launched from the IDE and a report is generated after each test campain.
MicroEJ MathFlow offers a well defined work frame meant to focus on business application, and avoid usual pitfalls of software development.
MicroEJ is ready for:
- Standalone application and library generation
- Real time applications
- Parallel computation
- Distributed computation
- Hardware in the loop integration
The MicroEJ MathFlow concept
MicroEJ MathFlow offers two main representations of business code:
A simple yet powerful representation, allowing to design data flow schemes.
It allows understanding at a glance the circulation of data along with the process involved.
Each module have input/output ports connected through flows. The type of data exchanged through flows might be basic types, or easily customizable structured types. A port may produce or consume a fixed or variable number of tokens (the number of tokens produced/consumed at each iteration is called the “rhythm” of the port). The engine then handles the execution of the business process through various execution models:
– Synchronous Data Flow (SDF): statically solved execution model where all module production/consumption rhythms are known beforehand.
– Parameterized Synchronous Data Flow (PSDF): dynamically solved execution model where production/consumption rhythms of modules may vary through time, useful for variable amount of data to process.
– Process Network (PN): dynamically solved execution model where each module is executed as an independent task, allowing to easily parallelize computation or design multi threaded applications.
– Discrete Event (DE): statically solved execution model, based on a fixed time frame granted to each module, useful to design real time applications.
A synthetic representation allowing to control the states of an application and perform some branching conditions.
It offers a simple representation of possible states, easily shareable and verifiable through development process.
MicroEJ MathFlow execution engine also supports distributed computation, as modules may be located on different execution nodes. Data exchange between node is automatically handled by the engine, allowing to easily perform hardware in the loop integration or distributed computation on execution clusters.