skip to main content
article

Integrated IoT programming with selective abstraction

Published:21 June 2017Publication History
Skip Abstract Section

Abstract

The explosion of networked devices has driven a new computing environment called the Internet of Things (IoT), enabling various services such as home automation and health monitoring. Despite the promising applicability of the IoT, developing an IoT service is challenging for programmers, because the programmers should integrate multiple programmable devices and heterogeneous third-party devices. Recent works have proposed integrated programming platforms, but they either require device-specific implementation for third-party devices without any device abstraction, or abstract all the devices to the standard interfaces requiring unnecessary abstraction of programmable devices. To integrate IoT devices with selective abstraction, this work revisits the object oriented programming (OOP) model, and proposes a new language extension and its compiler-runtime framework, called Esperanto. With three annotations that map each object to its corresponding IoT device, the Esperanto language allows programmers to integrate multiple programmable devices into one OOP program and to abstract similar third-party devices into their common ancestor classes. Given the annotations, the Esperanto compiler automatically partitions the integrated program into multiple sub-programs for each programmable IoT device, and inserts communication and synchronization code. Moreover, for the ancestor classes, the Esperanto runtime dynamically identifies connected third-party devices, and links their corresponding descendent objects. Compared to an existing approach on the integrated IoT programming, Esperanto requires 33.3% fewer lines of code to implement 5 IoT services, and reduces their response time by 44.8% on average.

References

  1. Google Web Toolkit. https://developers.google.com/ web-toolkit/.Google ScholarGoogle Scholar
  2. C. Amza, A. L. Cox, S. Dwarkadas, P. Keleher, H. Lu, R. Rajamony, W. Yu, and W. Zwaenepoel. Treadmarks: Shared memory computing on networks of workstations. Computer, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. H. E. Bal, M. F. Kaashoek, and A. S. Tanenbaum. Orca: A language for parallel programming of distributed systems. IEEE transactions on software engineering, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. M. Blackstock and R. Lea. Toward a distributed data flow platform for the web of things (distributed node-red). In Proceedings of the 5th International Workshop on Web of Things, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. J. B. Carter. Design of the Munin Distributed Shared Memory System. Journal of Parallel and Distributed Computing, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. S. Chong, J. Liu, A. C. Myers, X. Qi, K. Vikram, L. Zheng, and X. Zheng. Secure web applications via automatic partitioning. In Proceedings of Twenty-first ACM SIGOPS Symposium on Operating Systems Principles, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. H.-h. Chu, H. Song, C. Wong, S. Kurakake, and M. Katagiri. Roam, a seamless application framework. Journal of Systems and Software, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. B.-G. Chun, S. Ihm, P. Maniatis, M. Naik, and A. Patti. CloneCloud: Elastic execution between mobile device and cloud. In Proceedings of the Sixth Conference on Computer Systems, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. E. Cooper, S. Lindley, P. Wadler, and J. Yallop. Links: Web programming without tiers. In Proceedings of the 5th International Conference on Formal Methods for Components and Objects, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. E. Cuervo, A. Balasubramanian, D.-k. Cho, A. Wolman, S. Saroiu, R. Chandra, and P. Bahl. MAUI: Making smartphones last longer with code offload. In Proceedings of the 8th International Conference on Mobile Systems, Applications, and Services, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Eclipse SmartHome. http://eclipse.org/smarthome.Google ScholarGoogle Scholar
  12. Esperanto Demo. https://youtu.be/BhrmU5KjX9M.Google ScholarGoogle Scholar
  13. Gartner. Gartner says the Internet of Things installed base will grow to 26 billion units by 2020. http://www.gartner.com/ newsroom/id/2636073.Google ScholarGoogle Scholar
  14. D. Gay, P. Levis, R. von Behren, M. Welsh, E. Brewer, and D. Culler. The nesC language: A holistic approach to networked embedded systems. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. N. K. Giang, M. Blackstock, R. Lea, and V. C. Leung. Developing IoT applications in the fog: a distributed dataflow approach. In Proceedings of International Conference on the Internet of Things, 2015.Google ScholarGoogle ScholarCross RefCross Ref
  16. M. S. Gordon, D. A. Jamshidi, S. Mahlke, Z. M. Mao, and X. Chen. COMET: Code offload by migrating execution transparently. In In Proceedings of the 10th USENIX Conference on Operating Systems Design and Implementation, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Hardkernel:ODROID. https://www.hardkernel.com.Google ScholarGoogle Scholar
  18. G. C. Hunt and M. L. Scott. The coign automatic distributed partitioning system. In Proceedings of the Third Symposium on Operating Systems Design and Implementation, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. IoTivity Project. https://www.iotivity.org.Google ScholarGoogle Scholar
  20. P. Keleher, A. L. Cox, and W. Zwaenepoel. Lazy release consistency for software distributed shared memory. In Proceedings of the 19th Annual International Symposium on Computer Architecture, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. R. Kemp, N. Palmer, T. Kielmann, and H. Bal. Cuckoo: a computation offloading framework for smartphones. In Mobile Computing, Applications, and Services. 2012.Google ScholarGoogle Scholar
  22. C. E. Killian, J. W. Anderson, R. Braud, R. Jhala, and A. M. Vahdat. Mace: Language support for building distributed systems. In Proceedings of the 28th ACM SIGPLAN Conference on Programming Language Design and Implementation, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. B. Kim, S. Heo, G. Lee, S. Park, H. Kim, and J. Kim. Heterogeneous distributed shared memory for lightweight internet of things devices. IEEE Micro, 2016. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. R. Kleinfeld, S. Steglich, L. Radziwonowicz, and C. Doukas. Glue.Things: A mashup platform for wiring the Internet of Things with the Internet of Services. In Proceedings of the 5th International Workshop on Web of Things, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. C. Lattner and V. Adve. LLVM: a compilation framework for lifelong program analysis & transformation. In Proceedings of the International Symposium on Code Generation and Optimization, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. G. Lee, H. Park, S. Heo, K.-A. Chang, H. Lee, and H. Kim. Architecture-aware automatic computation offload for native applications. In Proceedings of the 48th IEEE/ACM International Symposium on Microarchitecture, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. K. Li and P. Hudak. Memory coherence in shared virtual memory systems. ACM Transactions on Computer Systems (TOCS), 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. F. X. Lin, Z. Wang, R. LiKamWa, and L. Zhong. Reflex: Using low-power processors in smartphones without knowing them. In Proceedings of the 17th International Conference on Architectural Support for Programming Languages and Operating Systems, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. R. B. Miller. Response time in man-computer conversational transactions. In Proceedings of AFIPS Fall Joint Computer Conference, 1968. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Node-RED. http://nodered.org.Google ScholarGoogle Scholar
  31. OpenRemote. http://www.openremote.org.Google ScholarGoogle Scholar
  32. D. J. Scales and K. Gharachorloo. Towards transparent and efficient software distributed shared memory. In Proceedings of the Sixteenth Symposium on Operating Systems Principles, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. SmartThings. http://www.smartthings.com.Google ScholarGoogle Scholar
  34. J. Sorber, A. Kostadinov, M. Garber, M. Brennan, M. D. Corner, and E. D. Berger. Eon: A language and runtime system for perpetual systems. In Proceedings of the 5th International Conference on Embedded Networked Sensor Systems, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. The Thing System. http://thethingsystem.com.Google ScholarGoogle Scholar
  36. xively by LogMein. http://www.xively.com.Google ScholarGoogle Scholar
  37. I. Zhang, A. Szekeres, D. V. Aken, I. Ackerman, S. D. Gribble, A. Krishnamurthy, and H. M. Levy. Customizable and extensible deployment for mobile/cloud applications. In 11th USENIX Symposium on Operating Systems Design and Implementation, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. K. Zhang and S. Pande. Efficient application migration under compiler guidance. In Proceedings of the ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. S. Zhou, M. Stumm, K. Li, and D. Wortman. Heterogeneous distributed shared memory. IEEE Transactions on Parallel and Distributed Systems, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Y. Zhou, L. Iftode, and K. Li. Performance evaluation of two homebased lazy release consistency protocols for shared virtual memory systems. In Proceedings of the Second USENIX Symposium on Operating Systems Design and Implementation, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Integrated IoT programming with selective abstraction

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 52, Issue 5
        LCTES '17
        May 2017
        120 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/3140582
        Issue’s Table of Contents
        • cover image ACM Conferences
          LCTES 2017: Proceedings of the 18th ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems
          June 2017
          120 pages
          ISBN:9781450350303
          DOI:10.1145/3078633
          • General Chair:
          • Vijay Nagarajan,
          • Program Chair:
          • Zili Shao

        Copyright © 2017 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 21 June 2017

        Check for updates

        Qualifiers

        • article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!