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
Get notified about new features and conference additions.