05.08.2014 Views

here - Stefan-Marr.de

here - Stefan-Marr.de

here - Stefan-Marr.de

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

2. Context and Motivation<br />

2.1. Multi-Language Virtual Machines: Foundation for<br />

Software Ecosystems<br />

High-level language VMs are used as general purpose platforms with large<br />

software ecosystems. The role of high-level language VMs has been shifting<br />

over the past <strong>de</strong>ca<strong>de</strong>s. Starting out as interpreted VMs for languages<br />

that offer high productivity, they became VMs that use highly efficient justin-time<br />

compilation technology [Aycock, 2003] and well tuned garbage collectors<br />

[Craig, 2006; Smith and Nair, 2005]. The resulting performance improvements<br />

opened the door for a wi<strong>de</strong> range of application domains. Consequently,<br />

VMs are now the platform for many applications that earlier on<br />

would have been implemented in native languages such as C or C++ and<br />

targeted a particular operating system. With the increased adoption of VMs<br />

came additional support from a wi<strong>de</strong> range of parties. Software and tool vendors,<br />

as well as the various open source communities started to build large<br />

software ecosystems [Gregor, 2009] around VMs. Reasons for this adoption<br />

are availability of libraries, co<strong>de</strong> reuse, portability, and the <strong>de</strong>sire to integrate<br />

different systems on the same platform. Studies such as the one of Ruiz et al.<br />

[2012] show that co<strong>de</strong> reuse in such diverse ecosystems is not merely a theoretical<br />

opportunity, but realized in practice. In addition to co<strong>de</strong> reuse, tooling<br />

is an important motivation. For instance, the availability of IDEs, performance<br />

analysis tools, testing frameworks, and continuous integration techniques are<br />

important factors. Eclipse 1 and Netbeans 2 as IDEs, and tools like VisualVM 3<br />

enable <strong>de</strong>velopers to use multiple languages, while relying on the same common<br />

tools.<br />

Language implementers target VMs to provi<strong>de</strong> appropriate abstractions for<br />

specific problem domains. While the adoption of VMs like JVM and CLI<br />

grew over the years, the <strong>de</strong>sire to use different kinds of languages interoperating<br />

with the existing ecosystem, grew as well. Both, JVM and CLI, were<br />

originally tailored towards either one specific language, i. e., Java for the JVM,<br />

or a set of closely related languages, i. e., VB.NET and C# for the CLI. The<br />

resulting VMs were however efficient enough to attract a vast number of lan-<br />

1 http://www.eclipse.org/<br />

2 http://www.netbeans.org/<br />

3 http://visualvm.java.net/<br />

14

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!