Late Demarshalling: A Technique for Efficient Multi-language Middleware for Embedded Systems

  • Gunar Schirner
  • Trevor Harmon
  • Raymond Klefstad
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3291)


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.


Virtual Machine Data Type Embed System Code Size Multiple Language 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Group, O.M.: CORBA: Core specification (2004) Google Scholar
  2. 2.
    Kirtland, M.: Object-oriented software development made simple with COM+ runtime services. Microsoft Systems Journal (1997)Google Scholar
  3. 3.
    Grosso, W.: Java RMI, 1st edn. O’Reilly & Associates, Sebastopol (2001)Google Scholar
  4. 4.
    Lowy, J.: Programming.NET Components. O’Reilly & Associates, Sebastopol (2003)Google Scholar
  5. 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. 6.
    Group, O.M.: Minimum CORBA specification (2002) Google Scholar
  7. 7.
    Lo, S.L., Pope, S.: The implementation of a high performance ORB over multiple network transports. In: Middleware 1998 (1998)Google Scholar
  8. 8.
    Lee, E., Dick Porter, e.a.: ORBit2 (2004) Google Scholar
  9. 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. 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
  11. 11.
    Welsh, M., Culler, D.: Jaguar: Enabling efficient communication and I/O in Java. Concurrency: Practice and Experience 12, 519–538 (2000)zbMATHCrossRefGoogle Scholar
  12. 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. 13.

Copyright information

© Springer-Verlag Berlin Heidelberg 2004

Authors and Affiliations

  • Gunar Schirner
    • 1
  • Trevor Harmon
    • 1
  • Raymond Klefstad
    • 1
  1. 1.University of CaliforniaIrvineUSA

Personalised recommendations