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.1. Multi-Language Virtual Machines<br />

guage <strong>de</strong>signers and implementers, who built hundreds of languages on top<br />

of them. 4,5<br />

Often the motivation for such language implementations is to fill a particular<br />

niche in which the language-specific properties promise higher productivity,<br />

even when the performance might be sacrificed. Another motivation<br />

might be adoption. While a new language with its own runtime typically<br />

lacks tooling and libraries for productive use, targeting an existing platform<br />

such as the JVM and CLI can ease the integration with existing systems, and<br />

thus, facilitate adoption. To give a single example, Clojure 6 integrates well<br />

with the ecosystem of the JVM, which enabled adoption and brought concurrent<br />

programming concepts such as agents, atoms, and software transactional<br />

memory to a wi<strong>de</strong>r audience.<br />

Support for dynamic languages was exten<strong>de</strong>d to strengthen VMs as general<br />

purpose platforms. Over the years, the JVM and CLI grew into fully<br />

adopted general purpose platforms and with their success grew the adoption<br />

of new JVM and CLI languages. This motivated efforts to reduce the performance<br />

cost of dynamic languages. The various method dispatch semantics of<br />

dynamic languages were one of the largest performance concerns. To improve<br />

the situation, the JVM specification was exten<strong>de</strong>d by infrastructure around<br />

the new invokedynamic byteco<strong>de</strong> [Rose, 2009; Thalinger and Rose, 2010],<br />

which gives language <strong>de</strong>signers a framework to specify method dispatch semantics<br />

and enables the just-in-time compiler to optimize the dispatch for<br />

performance. With the Dynamic Language Runtime for the CLI, Microsoft went<br />

a different route and provi<strong>de</strong>s a common dynamic type system and infrastructure<br />

for runtime co<strong>de</strong> generation. However, both approaches have in common<br />

that they extend the reach of the un<strong>de</strong>rlying platform to new languages, and<br />

thus application domains.<br />

Multi-language VMs are targets for library and language implementers.<br />

With the additional infrastructure for dynamic languages in place, the JVM<br />

and the CLI became multi-language VMs. While the notion has been used<br />

4 A list of languages targeting the .NET Framework, Brian Ritchie, access date: 28 September 2012<br />

http://www.dotnetpowered.com/languages.aspx<br />

5 Programming languages for the Java Virtual Machine JVM and Javascript, Robert Tolksdorf, access<br />

date: 28 September 2012 http://www.is-research.<strong>de</strong>/info/vmlanguages/<br />

6 http://clojure.org<br />

15

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

Saved successfully!

Ooh no, something went wrong!