Late Demarshalling: A Technique for Efficient Multi-language Middleware for Embedded Systems
A major goal of middleware is to allow seamless software integration across programming languages. CORBA, for example, supports multiple languages by specifying communication standards and language-specific bindings. Although this approach works well for desktop systems, it is problematic for embedded systems, where strict memory limits discourage multiple middleware implementations. A common memory-efficient alternative allows sharing of middleware by exposing functionality through language-specific wrappers; for instance, middleware may be implemented in C++ but exposed to Java through the Java Native Interface (JNI). Like most language wrappers, however, JNI degrades performance, especially with aggregate data types.
We present “late demarshalling”: a fast, memory-efficient technique for multi-language middleware. By passing arguments at the middleware message level as a packed stream and unpacking them after crossing the language boundary, we obtain both high performance and reduced memory footprint. We provide a proof-of-concept implementation for Java and C++ with measurements showing improved performance and footprint.
KeywordsVirtual Machine Data Type Embed System Code Size Multiple Language
Unable to display preview. Download preview PDF.
- 1.Group, O.M.: CORBA: Core specification (2004) Google Scholar
- 2.Kirtland, M.: Object-oriented software development made simple with COM+ runtime services. Microsoft Systems Journal (1997)Google Scholar
- 3.Grosso, W.: Java RMI, 1st edn. O’Reilly & Associates, Sebastopol (2001)Google Scholar
- 4.Lowy, J.: Programming.NET Components. O’Reilly & Associates, Sebastopol (2003)Google Scholar
- 5.Klefstad, R., Krishna, A.S., Schmidt, D.C.: Design and performance of a modular portable object adapter for distributed, real-time, embedded CORBA applications. In: Proceedings of the Distributed Objects and Applications conference (2002)Google Scholar
- 6.Group, O.M.: Minimum CORBA specification (2002) Google Scholar
- 7.Lo, S.L., Pope, S.: The implementation of a high performance ORB over multiple network transports. In: Middleware 1998 (1998)Google Scholar
- 8.Lee, E., Dick Porter, e.a.: ORBit2 (2004) Google Scholar
- 9.Klefstad, R., Schmidt, D.C., O’Ryan, C.: Towards highly congurable real-time object request brokers. In: Proceedings of IEEE International Symposium on Object- Oriented Real-time Distributed Computing (2002)Google Scholar
- 10.Kurzyniec, D., Sunderam, V.: Efficient cooperation between Java and native codes – JNI performance benchmark. In: Proceedings of the 2001 International Conference on Parallel and Distributed Processing Techniques and Applications, PDPTA 2001 (2001)Google Scholar
- 12.Schmidt, D.C., et al.: TAO: A Pattern-Oriented Object Request Broker for Distributed Real-time and Embedded Systems. IEEE Distributed Systems Online 3 (2002)Google Scholar
- 13.Schmidt, D.C.: Minimum TAO (2004), http://www.cs.wustl.edu/~schmidt/ace_wrappers/docs/minimumtao.html