This document describes the speaker's 20 years of experience working with Java and JVMs from 1995 to 2015. Some key points include:
- The speaker worked on early Java projects in 1996 and helped found a Java consulting firm.
- In 1998, the speaker's firm began developing their own JVM called JRockit to improve performance for application servers.
- In 2002, BEA acquired the speaker's company to gain the performance benefits of JRockit and help develop tools like Java Mission Control.
- The document discusses the evolution of Java features and hardware trends that impacted JVM design over the two decades.
46. 1996
• Java 1.0
• Pure byte code interpretation
• University professor suddenly proud of his interpreted
toy language, not ashamed as previously
• “If Java gets away with it, I can”
• But did it?
• Java Memory Model (broken)
47. 1996
• Java 1.0
• Pure byte code interpretation
• University professor suddenly proud of his interpreted
toy language, not ashamed as previously
• “If Java gets away with it, I can”
• But did it?
• Java Memory Model (broken)
• Thread.stopand all its friends (@deprecated)
48. 1996
• Java 1.0
• Pure byte code interpretation
• University professor suddenly proud of his interpreted
toy language, not ashamed as previously
• “If Java gets away with it, I can”
• But did it?
• Java Memory Model (broken)
• Thread.stopand all its friends (@deprecated)
• “Very 1.0”
83. 2000
• JDK 1.3 “Kestrel”
– HotSpot released before, April 1999 J2SE JVM
– But Kestrel bundles HotSpot with JDK
– JNDI
– JPDA
– RMI/Corba
– JavaSound
84. 2000
• Q1 2000
– JRockit 1.0 released
– “Very 1.0”
– N x M green threads hybrid
– We actually sell some licenses
• We are stupid enough to write it in the year end
financial statement
105. 2004
• x86_64 released – not the Itanium, still 64 bit
– For the first time in history AMD eats Intel’s
lunch
– Full backwards compatibility towards IA32
– Adoption (recognize the parallel to Java)
– Wider register bandwidth
– 2x the number of registers
– EXABYTES of virtual memory space
121. 2006
• Apache Harmony
– Needed to rewrite classes from scratch
– IBM and others contribute a lot of code
• Asks for Java license which it doesn’t get
– Field of use restrictions claimed not compliant with
JCP rules
• Various JCP fights ensue
• Sun opens up JVM/JDK sources under GPL v2
124. 2006
• Dynamic languages are becoming trendy
• JRuby leads the growth
• JSR-292, invokedynamic
• BEA, IBM, Sun all in the process
– We contribute substantially to the spec
• The polyglot JVM effort is starting to be coordinated
• Bytecode is basically serialized Java
– No runtime-only dispatch
128. 2006
• Why is virtualized Java powerful?
– Removal of abstraction
– Zero copy I/O
– Move everything we can to userland
– Minimize syscalls
– Threads can protect memory from other threads
• Cheap read barriers for low latency GC!
– But device drivers?
– That’s what we have the Hypervisor for
– Heavily encouraged by the investment banking industry
129. 2007
• Apache requests TCK
• The JCP stalls
• JRockit needs to hedge its bets, and can run
Harmony after a few months
• BEA/Sun Java license discussions
• No language updates for the forseeable
future?
133. 2008
• Oracle acquires BEA
• JRockit engineering works closely with
ExaData and the Oracle server stacks
• JRockit becomes default Oracle JVM
• Oracle forces the move from VMWare to
Xen for Jrockit VE.