Skip to main content
Log in

A taxonomy of cross-language linking mechanisms in open source frameworks

  • Published:
Computing Aims and scope Submit manuscript

Abstract

Non-trivial software systems are written using multiple programming languages. While the logic of a system is encoded using one or several general-purpose languages, more specialized parts of the systems are realized using domain-specific languages for aspects such as the user interface, configuration mechanisms, querying of databases, or support for internationalization. To bind all of these different parts together, the artifacts in individual languages are connected by using cross-language links which address artifacts across language boundaries. Many different ways for specifying and using such links have been conceived, and developers have to adhere to the concrete rules mandated by the runtime, framework or library which later performs the link resolution. In this paper, we present a taxonomy of the mechanisms of encoding cross-language linking in well-known open source frameworks from a developers perspective, which shows the choices that have been made and the options available in practice. We describe the process we followed, which is based in part on a survey of language combinations on GitHub and a survey of professional developers, list the dimensions and characteristics of our taxonomy in full, show the classifications of 22 frameworks and mechanisms, four of which are described in detail, and discuss the impact of the choices on application developers.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9

Similar content being viewed by others

References

  1. Alexander C, Ishikawa S, Silverstein M (1977) A pattern language: towns, buildings, construction. Center for Environmental Structure series, OUP USA, Center for Environmental Structure Berkeley, Calif

  2. Batory D (2005) Feature models, grammars, and propositional formulas. In: Proceedings of the 9th International Conference on Software Product Lines, Springer-Verlag, Berlin, Heidelberg, SPLC’05, pp 7–20. doi:10.1007/11554844_3

  3. Box D, Pattison T (2002) Essential .NET: the common language runtime. Addison-Wesley Longman Publishing Co., Inc., Boston

  4. Burnette E (2009) Hello, Android: introducing Google’s mobile development platform, 2nd edn. Pragmatic Bookshelf, Raleigh

  5. Burtch K (2004) Linux shell scripting with bash. Pearson Higher Education, London

  6. man Chung K (2013) Java server pages specification, maintenance release v2.3. http://www.oracle.com/technetwork/java/javaee/jsp/index.html. Accessed 15 Sep 2016

  7. Delorey DP, Knutson CD, Giraud-Carrier C (2007) Programming language trends in open source development: an evaluation using data from all production phase sourceforge projects. In: Proceedings of the 2nd international workshop on public data about software development (WoPDaSD’07), June 17, Limerick, Ireland

  8. Ekman T, Mechlenborg P, Schultz UP (2007) Flexible language interoperability. J Obj Technol 6(8):95–116. doi:10.5381/jot.2007.6.8.a2

    Article  Google Scholar 

  9. Favre J, Lämmel R, Varanovich A (2012) Modeling the linguistic architecture of software products. In: France RB, Kazmeier J, Breu R, Atkinson C (eds) Model Driven Engineering Languages and Systems—15th International Conference, MODELS 2012, Innsbruck, Austria, September 30-October 5, 2012. Proceedings, Springer, Lecture Notes in Computer Science, vol 7590, pp 151–167. doi:10.1007/978-3-642-33666-9_11

  10. jQuery Foundation T (2016) jQuery API Documentation. http://api.jquery.com/. Accessed 15 Sep 2016

  11. Gordon R, Essential J (1998) Java native interface. Prentince Hall PTR, Upper Saddle River

  12. Gybels K, Wuyts R, Ducasse S, D’Hondt M (2006) Inter-language reflection: a conceptual model and its implementation. Comput Lang Syst Struct 32(2–3):109–124. doi:10.1016/j.cl.2005.10.003

    MATH  Google Scholar 

  13. Johnson R, Hoeller J, Donald K, Sampaleanu C, Harrop R, Risberg T, Arendsen A, Davison D, Kopylenko D, Pollack M et al (2004) The spring framework, reference documentation. http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/. Accessed 7 Dec 2016

  14. Kalliamvakou E, Gousios G, Blincoe K, Singer L, German DM, Damian D (2016) An in-depth study of the promises and perils of mining github. Emp Softw Eng 21(5):2035–2071. doi:10.1007/s10664-015-9393-5

    Article  Google Scholar 

  15. Lämmel R, Varanovich A (2014) Interpretation of linguistic architecture. In: Cabot J, Rubin J (eds) Modelling foundations and applications—10th European Conference, ECMFA 2014, York, UK, July 21–25, 2014. Proceedings, Springer, Lecture Notes in Computer Science, vol 8569, pp 67–82. doi:10.1007/978-3-319-09195-2_5

  16. de Mauro P (1999) Internationalizing messages in linux programs. Linux J 1999(59es):59–63

  17. Mayer P, Bauer A (2015) An empirical analysis of the utilization of multiple programming languages in open source projects. In: Lv J, Zhang HJ, Babar MA (eds) Proceedings of EASE 2015, Nanjing, China, April 27-29, 2015, ACM, pp 4:1–4:10. doi:10.1145/2745802.2745805

  18. Mayer P, Schroeder A (2014) Automated multi-language artifact binding and rename refactoring between java and dsls used by java frameworks. In: Jones R (ed) ECOOP 2014, Uppsala, Sweden, July 28–August 1, 2014, Springer, Lecture Notes in Computer Science, vol 8586, pp 437–462. doi:10.1007/978-3-662-44202-9_18

  19. Mayer P, Kirsch M, Le MA (2015) On multi-language software development, cross-language links and accompanying tools: A survey of professional software developers. Tech. Rep. TR-2015-09-00, Institute for Informatics, Ludwig-Maximilians-Universität München, Oettingenstr 67, 80538 München, Germany. http://www.pst.ifi.lmu.de/mayer/papers/TR-2015-09-00.pdf. Accessed 15 Sep 2016

  20. Microsoft (2016) Windows Presentation Foundation. https://msdn.microsoft.com/en-us/library/ms754130. Accessed 15 Sep 2016

  21. Nickerson RC, Varshney U, Muntermann J (2013) A method for taxonomy development and its application in information systems. EJIS 22(3):336–359. doi:10.1057/ejis.2012.26

    Google Scholar 

  22. Odersky M (2014) The Scala language specification—version 2.9. http://www.scala-lang.org/docu/files/ScalaReference.pdf. Accessed 7 Dec 2016

  23. Oracle (2016) The Java Properties Format. https://docs.oracle.com/javase/tutorial/essential/environment/properties.html. Accessed 15 Sep 2016

  24. Pfeiffer R, Wasowski A (2015) The design space of multi-language development environments. Softw Syst Model 14(1):383–411. doi:10.1007/s10270-013-0376-y

    Article  Google Scholar 

  25. Potencier F, Hason M, Blanc AL, Schultze T (2015) The twig template engine for php. http://twig.sensiolabs.org/. Accessed 15 Sep 2016

  26. Rappin N (2008) Professional ruby on rails. Wrox, Birmingham

    Google Scholar 

  27. Ray B, Posnett D, Filkov V, Devanbu PT (2014) A large scale study of programming languages and code quality in github. In: Cheung S, Orso A, Storey MD (eds) Proceedings of the FSE-22, Hong Kong, China, November 16 - 22, 2014, ACM, pp 155–165. doi:10.1145/2635868.2635922

  28. Red Hat (2016) Hibernate Object-Relational Mapper. http://hibernate.org/orm/. Accessed 15 Sep 2016

  29. Schafer S (2005) Web standards programmer’s reference: HTML, CSS, JavaScript, Perl, Python, and PHP. Wrox, Birmingham

    Google Scholar 

  30. Slee M, Reiss D, Agarwal A, Kwiatkowski M, Wang J, Piro C, Maurer B, Clark K, Luciani J, Duxbury B, Fernandez E, Lipcon T, McGeachie A, Molinaro A, Meier R, Farrell J, Geyer J, Yeksigian C, Abernethy R, Grochowski K (2015) The apache thrift framework. https://thrift.apache.org/. Accessed 15 Sep 2016

  31. SWIG Developers (2016) Simplified Wrapper and Interface Generator. http://www.swig.org/. Accessed 15 Sep 2016

  32. The Apache Project (2016) Apache Wicket. http://wicket.apache.org/. Accessed 15 Sep 2016

  33. Tomassetti F, Torchiano M (2014) An empirical assessment of polyglot-ism in github. In: Shepperd MJ, Hall T, Myrtveit I (eds) 18th International Conference on Evaluation and Assessment in Software Engineering, EASE ’14, London, England, United Kingdom, May 13-14, 2014, ACM, pp 17:1–17:4. doi:10.1145/2601248.2601269

  34. Tomassetti F, Torchiano M, Vetro A (2013) Classification of language interactions. In: Empirical Software Engineering and Measurement, 2013 ACM/IEEE International Symposium on, pp 287–290

  35. Völter M, Visser E (2010) Language extension and composition with language workbenches. In: Proceedings of OOPSLA 2010, ACM, New York, NY, USA, OOPSLA ’10, pp 301–304

  36. Yellin F, Lindholm T (1996) The java virtual machine specification. Reading, Massachusetts

  37. Zdun U (2004) Using split objects for maintenance and reengineering tasks. In: 8th European Conference on Software Maintenance and Reengineering (CSMR 2004), 24-26 March 2004, Tampere, Finland, Proceedings, IEEE Computer Society, pp 105–114. doi:10.1109/CSMR.2004.1281411

  38. Zdun U (2006) Patterns of component and language integration. In: Manolescu D, Voelter M, Noble J (eds) Pattern languages of program design 5. Addison-Wesley Professional, Boston, pp 357–397

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Philip Mayer.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Mayer, P. A taxonomy of cross-language linking mechanisms in open source frameworks. Computing 99, 701–724 (2017). https://doi.org/10.1007/s00607-016-0528-3

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00607-016-0528-3

Keywords

Mathematics Subject Classification

Navigation