Nashorn War Stories: Dynamic Language Performance on the JVM • Marcus Lagergren • GOTO 2013

607 views · Published 8 April 2014 · 57:15 · Indexed 10 November 2026

Channel: GOTO Conferences · 2014 · Science & Technology

Watch on YouTube

This presentation was recorded at GOTO Aarhus 2013
http://gotocon.com

Marcus Lagergren - Co-author of Oracle JRockit @MarcusLagergren 

ORIGINAL TALK TITLE
The Quest for Dynamic Language Performance on the JVM - Nashorn War Stories

ABSTRACT
This is a highly technical session about dynamic languages on the JVM. Marcus Lagergren discusses the performance challenges encountered during the implementation of Oracle's Nashorn project: a 100% ECMAScript compliant JavaScript implementation on top of the JVM, open source and available in Java 8. We will look at how the biggest paradigm shift in the history of the JVM specification, the invokedynamic bytecode, available as of Java 7, and how it was put to use to get performance in an environment where traditionally the JVM has been lacking. The JVM is becoming more and more feasible as a polyglot runtime, and this session will explain why. We will cover the Nashorn project in some detail, but mostly concentrate on ongoing dynamic language research in the Java team. 

TIMECODES
0:00 Introduction
3:35 What is Nashorn?
5:20 Why Nashorn?
7:07 When is Nashom available?
11:12 Let's talk about JavaScript - Numbers
13:37 Let's talk about JavaScript - Types/Numbers
15:41 Let's talk about JavaScript - Static type info
20:35 Fibonacci calculator
20:58 Callsite specialization
24:22 Type Specialization - Prove ints
24:49 Type Specialization - Prove doubles
25:03 Static range analysis-fold doubles to ints
27:04 Summary - Static analysis
28:07 Statically provable callsites for am3
29:29 We really want to use ints where we can
31:38 Using Ints, problem 1 of 2 - Overflow check
32:29 Solutions Intrinsity math operations
38:29 Continuations, you say?
44:21 JVM issues
48:12 War story: warmup
48:43 Another war story: Metaspace
51:04 Future work. JVM
51:42 Nashorn current performance status
52:08 Nashorn with optimistic types
52:14 Add JVM math intrinsics...
52:18 Patch JVM to keep more type into while
55:12 ORACLE
56:12 UPGRADETIMECODES
0:00 Introduction
3:35 What is Nashorn?
5:20 Why Nashorn?
7:07 When is Nashom available?
11:12 Let's talk about JavaScript - Numbers
13:37 Let's talk about JavaScript - Types/Numbers
15:41 Let's talk about JavaScript - Static type info
20:35 Fibonacci calculator
20:58 Callsite specialization
24:22 Type Specialization - Prove ints
24:49 Type Specialization - Prove doubles
25:03 Static range analysis-fold doubles to ints
27:04 Summary - Static analysis
28:07 Statically provable callsites for am3
29:29 We really want to use ints where we can
31:38 Using Ints, problem 1 of 2 - Overflow check
32:29 Solutions Intrinsity math operations
38:29 Continuations, you say?
44:21 JVM issues
48:12 War story: warmup
48:43 Another war story: Metaspace
51:04 Future work. JVM
51:42 Nashorn current performance status
52:08 Nashorn with optimistic types
52:14 Add JVM math intrinsics...
52:18 Patch JVM to keep more type into while
55:12 ORACLE
56:12 UPGRADE

Download slides and read the full abstract here:
https://gotocon.com/aarhus-2013/presentation/The%20quest%20for%20dynamic%20language%20performance%20on%20the%20JVM%20-%20Nashorn%20war%20stories

https://bsky.app/profile/gotocon.com
https://twitter.com/GOTOcon
https://www.linkedin.com/company/goto-
https://www.instagram.com/goto_con
https://www.facebook.com/GOTOConferences
#Nashorn #JVM #Java #DynamicProgramming #DynamicLanguage #MarcusLagergren

CHANNEL MEMBERSHIP BONUS
Join this channel to get early access to videos & other perks:
https://www.youtube.com/channel/UCs_tLP3AiwYKwdUHpltJPuA/join

Looking for a unique learning experience?
Attend the next GOTO conference near you! Get your ticket at https://gotopia.tech
Sign up for updates and specials at https://gotopia.tech/newsletter

SUBSCRIBE TO OUR CHANNEL - new videos posted almost daily.
https://www.youtube.com/user/GotoConferences/?sub_confirmation=1

More from this channel