Special Issue on the Future of Middleware (FOME'11)
- SI: FOME - The Future of Middleware
- Open Access
- Published:
Programming language impact on the development of distributed systems
Journal of Internet Services and Applications volume 3, pages 23–30 (2012)
Abstract
Programming languages have long impacted the development of distributed systems. While much middleware and distributed systems code continues to be developed today using mainstream languages such as Java and C++, several forces have recently combined to drive a renewed interest in other programming languages. The result of these forces has been an increase in the use of programming languages such as Erlang, Scala, Haskell, and Clojure that allow programming at a higher level of abstraction affording better modularity, enhanced speed of development, and added power of reasoning about systems being developed. Such languages can also be used to develop embedded domain specific languages that can expressively and succinctly model issues inherent in distributed systems including concurrency, parallelism, and fault tolerance. In this paper, we first present a history of programming languages and distributed systems, and then explore several alternative languages along with modern systems built using them. We focus on language and application features, how problems of distribution are addressed, concurrency issues, code brevity, extensibility, and maintenance concerns. Finally, we speculate about the possible influences today’s alternative programming languages could have on the future of middleware and distributed systems development.
References
White JE (1975) RFC 707. http://tools.ietf.org/html/rfc707
Nelson BJ (1981) Remote procedure call. PhD Dissertation, Carnegie Mellon Univ, Pittsburgh, PA, USA. AAI8204168
Liskov B (1985) The Argus language and system. In: Paul M, Siegert HJ (eds) Distributed systems—methods and tools for specification, Lecture notes in computer science, vol 190. Springer, Berlin, pp 343–430
Almes G, Black A, Lazowska E, Noe J (1985) The Eden system: a technical review. IEEE Trans Softw Eng SE-11(1):43–59
Black A, Hutchinson N, Jul E, Levy H, Carter L (1987) Distribution and abstract types in Emerald. IEEE Trans Softw Eng SE-13(1):65–76
Zahn L, Dineen T, Leach P, Martin E, Mishkin N, Pato J, Wyant G (1990) Network computing architecture. Prentice-Hall, New York
Sun Microsystems (1988) RPC: remote procedure call protocol specification. Technical Report RFC-1057, Sun Microsystems, Inc, June
Object Management Group (1991) The common object request broker: architecture and specification (CORBA). OMG document number 91-12-1
Waldo J, Wyant G, Wollrath A, Kendall S (1994) A note on distributed computing. Technical Report SMLI TR-94-29, Sun Microsystems Laboratories, Inc
Cox BJ (1991) Object oriented programming: an evolutionary approach. Addison Wesley, Reading
NeXT Computer, Inc (1993) Object-oriented programming and the objective C language. Addison Wesley, Reading
Gosling J, McGilton H (1995) The Java language environment—a white paper
Java remote method invocation over IIOP. http://en.wikipedia.org/wiki/RMI-IIOP
Let it crash. http://c2.com/cgi/wiki?LetItCrash
Hewitt C, Bishop P, Steiger R (1973) A universal modular ACTOR formalism for artificial intelligence. In: Proceedings of the 3rd international joint conference on artificial intelligence (IJCAI’73). Morgan Kaufmann, San Francisco, pp 235–245
Finagle, implementing asynchronous clients and servers. http://twitter.github.com/finagle/
JBoss Netty, the Java NIO client server framework. http://www.jboss.org/netty
Akka—simpler concurrency. http://akka.io
Erlang programming language. http://www.erlang.org/
A taste of 2.8: continuations. http://www.scala-lang.org/node/2096
The Mozart programming system. http://www.mozart-oz.org
Agents and asynchronous actions. http://clojure.org/agents
Software transactional memory. http://dl.acm.org/citation.cfm?id=224987
Ghosh D (2010) DSLs in action. Manning, Shelter Island
Richardson L, Ruby S (2007) Restful web services. O’Reilly, Sebastopol
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
Open Access This article is distributed under the terms of the Creative Commons Attribution 2.0 International License ( https://creativecommons.org/licenses/by/2.0 ), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.
About this article
Cite this article
Ghosh, D., Sheehy, J., Thorup, K.K. et al. Programming language impact on the development of distributed systems. J Internet Serv Appl 3, 23–30 (2012). https://doi.org/10.1007/s13174-011-0042-y
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s13174-011-0042-y
Keywords
- Distributed systems
- Middleware
- Erlang
- Scala
- RPC
- Java
- C++
- Interoperability
- Portability
- Programming languages
- Functional programming