The document discusses challenges in implementing a dynamic language like JavaScript on the Java Virtual Machine (JVM). Some key points:
- Nashorn is a JavaScript runtime written in Java that generates JVM bytecode, aiming to be 2-10x faster than previous solutions like Rhino.
- Compiling JavaScript to JVM bytecode is difficult as JavaScript has dynamic types, runtime changes, and number representations that don't map cleanly to Java's static types.
- Nashorn uses static analysis to infer types where possible and optimize for primitive number representations, but this only goes so far with JavaScript's dynamic nature.
- As JavaScript code changes, Nashorn may need to transition to more dynamic, adaptive and optimistic techniques