Change search
ReferencesLink to record
Permanent link

Direct link
On implementing multiple pluggable dynamic language frontends on the JVM, using the Nashorn runtime
KTH, School of Computer Science and Communication (CSC).
2015 (English)Independent thesis Advanced level (degree of Master (Two Years)), 20 credits / 30 HE creditsStudent thesisAlternative title
Om att implementera flera dynamiska språk-frontends på JVM med användning av Nashorns exekveringsmiljö (Swedish)
Abstract [en]

Nashorn is a JavaScript engine that compiles JavaScript source code to Java bytecode and executes it on a Java Virtual Machine. The new bytecode in-struction invokedynamic that was introduced in Java 7 to make it easier for dynamic languages to handle linking at runtime is used frequently by Nashorn. Nashorn also has a type system that optimizes the code by using primitive bytecode instructions where possible. They are known to be the fastest imple-mentations for particular operations.

Either types are proved statically or a method called optimistic type guess-ing is used. That means that expressions are assumed to have an int value, the narrowest and fastest possible type, until that assumption proves to be wrong. When that happens, the code is deoptimized to use types that can hold the current value.

In this thesis a new architecture for Nashorn is presented that makes Nashorn’s type system reusable to other dynamic language implementations. The solution is an intermediate representation very similar to bytecode but with untyped instructions. It is referred to as Nashorn bytecode in this thesis.

A TypeScript front-end has been implemented on top of Nashorn’s cur-rent architecture. TypeScript is a language that is very similar to JavaScript with the main difference being that it has type annotations. Performance mea-surements which show that the type annotations can be used to improve the performance of the type system are also presented in this thesis. The results show that it indeed has an impact but that it is not as big as anticipated.

Abstract [sv]

Nashorn är en JavaScriptmotor som kompilerar JavaScriptkod till Java bytekod och exekverar den på en Java Virtuell Maskin. Nashorn använder sig av den nya bytekodinstruktionen invokedynamic som introducerades i Java 7 för att göra det lättare för dynamiska språk att hantera dynamisk länkning. I Nashorn finns ett typsystem som optimerar koden genom att i så stor utsträckning som möjligt använda de primitiva bytekodinstruktioner som är kända för att vara de snabbaste implementationerna för specifika operationer. Antingen bevisas typen för ett uttryck statiskt om det är möjligt eller så används något som kallas för optimistisk typgissning. Det innebär att uttrycket antas ha typen int, den kompaktaste och snabbaste typen, ända tills det antagandet visar sig vara falskt. När det händer deoptimeras koden med typer som kan hålla det nuvarande värdet.

I det här dokumentet presenteras en ny arkitektur för Nashorn som gör det möjligt för andra dynamiska språk att återanvända Nashorns typsystem för bättre prestanda. Lösningen är en intermediate representation som påminner om bytekod men som är uttökat men otypade instruktioner. I det här doku-mentet refereras den som Nashorn bytekod.

En TypeScript front-end har implementerats ovanpå Nashorns nuvaran-de arkitektur. TypeScript är ett språk som liknar JavaScript på många sätt, den största skillnaden är att det har typannoteringar. Prestandamätningar som visar att typannoteringarna kan användas för att förbättra prestandan av Nashorns typsystem presenteras i det här dokumentet. Resultaten visar att typannoteringar kan användas för att förbättra prestandan men de har inte så stor inverkan som förväntat.

Place, publisher, year, edition, pages
Keyword [en]
Nashorn, Javascript, Typescript, invoke dynamic, bytecode
National Category
Computer Science
URN: urn:nbn:se:kth:diva-175443OAI: diva2:860991
Educational program
Master of Science in Engineering - Computer Science and Technology
Available from: 2015-10-15 Created: 2015-10-14 Last updated: 2015-10-15Bibliographically approved

Open Access in DiVA

fulltext(1027 kB)175 downloads
File information
File name FULLTEXT01.pdfFile size 1027 kBChecksum SHA-512
Type fulltextMimetype application/pdf

By organisation
School of Computer Science and Communication (CSC)
Computer Science

Search outside of DiVA

GoogleGoogle Scholar
Total: 175 downloads
The number of downloads is the sum of all downloads of full texts. It may include eg previous versions that are now no longer available

Total: 1720 hits
ReferencesLink to record
Permanent link

Direct link