SlideShare a Scribd company logo
1 of 100
Download to read offline
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Full Speed Ahead! (Ahead-of-Time
Compilation for Java SE)
CON3738
David Buck
Principal Member of Technical Staff
Java Platform Group
October 4th, 2017
Confidential – Oracle Internal/Restricted/Highly Restricted 3
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Safe Harbor Statement
The following is intended to outline our general product direction. It is intended for
information purposes only, and may not be incorporated into any contract. It is not a
commitment to deliver any material, code, or functionality, and should not be relied upon
in making purchasing decisions. The development, release, and timing of any features or
functionality described for Oracle’s products remains at the sole discretion of Oracle.
Confidential – Oracle Internal/Restricted/Highly Restricted 4
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
• JVM Sustaining Engineer
• OpenJDK 8 Update Project
Maintainer
• JavaOne Rock Star
• Co-author of Oracle WebLogic
Server 11g 構築・運用ガイド
• @DavidBuckJP
• https://blogs.oracle.com/buck/
Hi There!
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Program Agenda
Warnings
AoT Basics
Similar Functionality
Usage
1
2
3
4
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Warnings
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Warnings
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Warnings
• AoT is still experimental and not yet officially supported
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Warnings
• AoT is still experimental and not yet officially supported
• Currently only Linux on AMD64 (w/ libelf.so) is supported
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Warnings
• AoT is still experimental and not yet officially supported
• Currently only Linux on AMD64 (w/ libelf.so) is supported
• No official documentation (only the JEP)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Warnings
• AoT is still experimental and not yet officially supported
• Currently only Linux on AMD64 (w/ libelf.so) is supported
• No official documentation (only the JEP)
• There is no official roadmap for support yet
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
AoT Basics
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why learn about Java AoT?
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why learn about Java AoT?
• May be supported in the future
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why learn about Java AoT?
• May be supported in the future
• Excuse to study other HotSpot technologies
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why learn about Java AoT?
• May be supported in the future
• Excuse to study other HotSpot technologies
• Fun
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Java Build / Execution Model (Interpreter)
MyClass.java MyClass.class java
(HotSpot)
javac
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Java Build / Execution Model (JIT)
MyClass.java MyClass.class java
(HotSpot)
javac
Machine
Language
(in memory)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Just in Time Compilation (JIT)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Just in Time Compilation (JIT)
• Methods get compiled
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Just in Time Compilation (JIT)
• Methods get compiled
• Compilation is expensive (both in cpu time and memory)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Just in Time Compilation (JIT)
• Methods get compiled
• Compilation is expensive (both in cpu time and memory)
• ML version is fast
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Just in Time Compilation (JIT)
• Methods get compiled
• Compilation is expensive (both in cpu time and memory)
• ML version is fast
• Is JIT really faster than an interpreter?
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Just in Time Compilation (JIT)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Just in Time Compilation (JIT)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Just in Time Compilation (JIT)
Better performance than an interpreter?
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Just in Time Compilation (JIT)
Better performance than an interpreter?
Depends on your definition of “performance”
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
$ time ./hello_j1
Hello JavaOne!
real 0m0.002s
user 0m0.001s
$ time java HelloJ1
Hello JavaOne!
real 0m0.104s
user 0m0.077s
sys 0m0.020s
Just in Time Compilation (JIT)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Just in Time Compilation (JIT)
Weak Point
• Compilation overhead is high
– Delay before native code can be executed
– Heavy resource (memory / CPU cycles) consumption
• Interpretation is better for non-hot methods
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Just in Time Compilation (JIT)
(HotSpot’s Implimentation)
• All methods start off being interpreted
• Hot methods identified by sample-based profiling
• Hot methods are compiled
• Non-hot methods continue to be interpreted
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Even with HotSpot’s JIT
• Application startup time is longer
• It takes longer to achieve peak performance
• Compilation consumes a lot of memory
• There are platforms where runtime code generation is not allowed
Compared to native (C/C++) compilation
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Just in Time Compilation (JIT) HotSpot’s Implementation
A tale of two compilers…
• C2
– For server use
– Heavy optimization
– Dependent on profiling data collected by the interpreter
– Default CompileThreshold: 10000
• C1
– For client use
– Less optimization
– Not dependent on profiling data
– Default CompileThreshold : 1500
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Ahead of Time (AoT) Strategy
• Generate machine code before runtime
• Load preexisting machine code during runtime
• No need to JIT compile code at runtime
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Java Build / Execution Model (AoT)
MyClass.java MyClass.class java
(HotSpot)
javac
Machine
Language
(in memory)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Java Build / Execution Model (AoT)
MyClass.java MyClass.class java
(HotSpot)
javac
my_class.so
jaotc
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Java Build / Execution Model
java
(HotSpot)
Machine
Language
(in memory)
java
(HotSpot)
Machine
Language
(in memory)
java
(HotSpot)
Machine
Language
(in memory)
java
(HotSpot)
Machine
Language
(in memory)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Java Build / Execution Model
java
(HotSpot)
java
(HotSpot)
java
(HotSpot)
java
(HotSpot)
my_class.so
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Advantages of Ahead of Time (AoT)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Advantages of Ahead of Time (AoT)
• Faster startup times ★
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Advantages of Ahead of Time (AoT)
• Faster startup times ★
• Less time to peak performance / steady state ★
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Advantages of Ahead of Time (AoT)
• Faster startup times ★
• Less time to peak performance / steady state ★
• Less runtime compilation overhead (CPU / memory) ★
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Advantages of Ahead of Time (AoT)
• Faster startup times ★
• Less time to peak performance / steady state ★
• Less runtime compilation overhead (CPU / memory) ★
• Native code can be shared across multiple processes ★
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Advantages of Ahead of Time (AoT)
• Faster startup times ★
• Less time to peak performance / steady state ★
• Less runtime compilation overhead (CPU / memory) ★
• Native code can be shared across multiple processes ★
• Native code performance even on platforms that disallow JIT ★
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Advantages of Ahead of Time (AoT)
• Faster startup times ★
• Less time to peak performance / steady state ★
• Less runtime compilation overhead (CPU / memory) ★
• Native code can be shared across multiple processes ★
• Native code performance even on platforms that disallow JIT ★
★ YMMV
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
?
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Similar Functionality
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Similar Functionality
• Tiered Compilation
• Class Data Sharing(CDS) / AppCDS
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Tiered Compilation
• Server JVM without Tiered Compilation
– Interpreter (w/ profiling)
– C2
• Server JVM with Tiered Compilation
– Interpreter (w/ profiling)
– C1 (w/ profiling)
– C2
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
No Class Data Sharing
java
(HotSpot)
Class Data
(in memory)java
(HotSpot)
Class Data
(in memory)
java
(HotSpot)
Class Data
(in memory)
java
(HotSpot)
Class Data
(in memory)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Class Data Sharing
java
(HotSpot)
java
(HotSpot)
java
(HotSpot)
java
(HotSpot)
Class Data
classes.jsa
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
• Class Data Sharing
– Only Java SE Class Library
• AppCDS
– Includes application classes as well
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Same as AoT
• Tiered Compilation
– Quicker warm up
• Class Data Sharing(CDS) / AppCDS
– Quicker warm up
– Lower total memory footprint
Different from AoT
• No machine (native) code is
persisted or shared
Similar Functionality
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Corporate Photography Collection
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Usage
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
A New Tool: jaotc
MyClass.class my_class.sojaotc
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
$ jaotc --output libHelloAOT.so HelloAoT.class
jaotc
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
$ jaotc --help
Usage: jaotc <options> list
list A : separated list of class names, modules, jar files
or directories which contain class files.
where options include:
--output <file> Output file name
--class-name <class names> List of classes to compile
--jar <jarfiles> List of jar files to compile
--module <modules> List of modules to compile
--directory <dirs> List of directories where to search for files to compile
--search-path <dirs> List of directories where to search for specified files
--compile-commands <file> Name of file with compile commands
--compile-for-tiered Generate profiling code for tiered compilation
--compile-with-assertions Compile with java assertions
--compile-threads <number> Number of compilation threads to be used
--ignore-errors Ignores all exceptions thrown during class loading
--exit-on-error Exit on compilation errors
--info Print information during compilation
--verbose Print verbose information
--debug Print debug information
--help Print this usage message
--version Version information
-J<flag> Pass <flag> directly to the runtime system
jaotc (On-line Help)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
$ jaotc --info --output libHelloAOT.so HelloAoT.class
Compiling libHelloAOT...
1 classes found (30 ms)
2 methods total, 2 methods to compile (4 ms)
Compiling with 8 threads
.
2 methods compiled, 0 methods failed (409 ms)
Parsing compiled code (1 ms)
Processing metadata (15 ms)
Preparing stubs binary (1 ms)
Preparing compiled binary (1 ms)
Creating binary: libHelloAOT.o (8 ms)
Creating shared library: libHelloAOT.so (13 ms)
Total time: 912 ms
jaotc (--info Flag)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
$ jaotc --info --compile-with-assertions --output libHelloAOT.so HelloAoT.class
jaotc (--compile-with-assertions Flag)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
$ jaotc --compile-commands cc.txt --output libHelloAOT.so HelloAoT.class
$ cat cc.txt
exclude org.sample.code.MyClass.method*
exclude org.sample.code.MyClass.<init>
jaotc (--compile-commands Flag)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
$ jaotc --output libjava.base.so --module java.base
jaotc (Modules)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
$ jaotc --output libjava.base.so --jar my-spiffy-app.jar
jaotc (Jar Files)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
$ jaotc -J-XX:-UseCompressedOop --output libHelloAOT.so HelloAoT.class
VM Options are important here! (more to come…)
jaotc (VM Options)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
jaotc (--compile-for-tiered Flag)
• jaotc uses Graal to compile
• Performance is similar to C1
• --compile-for-tiered generates code that includes profiling instrumentation
needed by C2
Confidential – Oracle Internal/Restricted/Highly Restricted 65
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
$ java -XX:AOTLibrary=./libHelloAoT.so HelloAoT
Runtime
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
$ java -XX:AOTLibrary=./libHelloAoT.so HelloAoT
Hello AoT!
$
Runtime
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
$ java -XX:+PrintAOT -XX:AOTLibrary=./libHelloAoT.so HelloAoT
Runtime (-XX:+/-PrintAOT)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
$ builds/jdk-9/bin/java -XX:+PrintAOT -XX:AOTLibrary=./libHelloAoT.so HelloAoT
13 1 loaded ./libHelloAoT.so aot library
76 1 aot[ 1] HelloAoT.<init>()V
76 2 aot[ 1] HelloAoT.main([Ljava/lang/String;)V
Hello AoT!
$
Runtime (-XX:+/-PrintAOT)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
$ java -XX:-UseCompressedOops -XX:+PrintAOT -XX:AOTLibrary=./libHelloAoT.so HelloAoT
Runtime (Compressed Oops Disabled)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
$ java -XX:-UseCompressedOops -XX:+PrintAOT -XX:AOTLibrary=./libHelloAoT.so HelloAoT
Shared file ./libHelloAoT.so error: UseCompressedOops has different value 'true' from
current 'false'
7 1 skipped ./libHelloAoT.so aot library
Hello AoT!
$
Runtime (Compressed Oops Disabled)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
$ builds/jdk-9/bin/java -XX:-UseCompressedOops -XX:AOTLibrary=./libHelloAoT.so HelloAoT
Hello AoT!
$
Runtime (Compressed Oops Disabled)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
$ jaotc -J-XX:-UseCompressedOop --output libHelloAOT.so HelloAoT.class
jaotc (Be sure to synchronize VM options)
Compressed OOPs Normal OOPs
G1 -J-XX:+UseCompressedOops
-J-XX:+UseG1GC
-J-XX:-UseCompressedOops
-J-XX:+UseG1GC
ParallelGC -J-XX:+UseCompressedOops
-J-XX:+UseParallelGC
-J-XX:-UseCompressedOops
-J-XX:+UseParallelGC
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why do we need to synchronize VM Options?
• If heap is < 4GB, 32 MSB of every heap address is the same!
• We can store just the 32 LSB of each address
• Each reference field is half the size
Confidential – Oracle Internal/Restricted/Highly Restricted 74
Compressed Oops
64-bit Address
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why do we need to synchronize VM Options?
• If heap is < 4GB, 32 MSB of every heap address is the same!
• We can store just the 32 LSB of each address
• Each reference field is half the size
Confidential – Oracle Internal/Restricted/Highly Restricted 75
Compressed Oops
32 MSB 32 LSB
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why do we need to synchronize VM Options?
• If heap is < 4GB, 32 MSB of every heap address is the same!
• We can store just the 32 LSB of each address
• Each reference field is half the size
Confidential – Oracle Internal/Restricted/Highly Restricted 76
Compressed Oops
Always the same! 32 LSB
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why do we need to synchronize VM Options?
• If heap is < 4GB, 32 MSB of every heap address is the same!
• We can store just the 32 LSB of each address
• Each reference field is half the size
Confidential – Oracle Internal/Restricted/Highly Restricted 77
Compressed Oops
32 LSB
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why do we need to synchronize VM Options?
• If heap is < 4GB, 32 MSB of every heap address is the same!
• We can store just the 32 LSB of each address
• Each reference field is half the size
• uncompressed_oop = heap_base + compressed_oop
Confidential – Oracle Internal/Restricted/Highly Restricted 78
Compressed Oops
32 LSB
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why do we need to synchronize VM Options?
• If heap is > than 4GB but < 32GB we can still compress the Oop
• 64-bit platform has an 8-byte alignment requirement
• 3 LSB of every heap address are always zero
• So we can shift the address 3 bits right/left to compress/uncompress
Confidential – Oracle Internal/Restricted/Highly Restricted 79
Compressed Oops
64-bit Address
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why do we need to synchronize VM Options?
• If heap is > than 4GB but < 32GB we can still compress the Oop
• 64-bit platform has an 8-byte alignment requirement
• 3 LSB of every heap address are always zero
• So we can shift the address 3 bits right/left to compress/uncompress
Confidential – Oracle Internal/Restricted/Highly Restricted 80
Compressed Oops
64-bit Address 000
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why do we need to synchronize VM Options?
• If heap is > than 4GB but < 32GB we can still compress the Oop
• 64-bit platform has an 8-byte alignment requirement
• 3 LSB of every heap address are always zero
• So we can shift the address 3 bits right/left to compress/uncompress
Confidential – Oracle Internal/Restricted/Highly Restricted 81
Compressed Oops
32-bit 000
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why do we need to synchronize VM Options?
• If heap is > than 4GB but < 32GB we can still compress the Oop
• 64-bit platform has an 8-byte alignment requirement
• 3 LSB of every heap address are always zero
• So we can shift the address 3 bits right/left to compress/uncompress
Confidential – Oracle Internal/Restricted/Highly Restricted 82
Compressed Oops
32-bit
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why do we need to synchronize VM Options?
• If heap is > than 4GB but < 32GB we can still compress the Oop
• 64-bit platform has an 8-byte alignment requirement
• 3 LSB of every heap address are always zero
• So we can shift the address 3 bits right/left to compress/uncompress
• uncompressed_oop = heap_base + (compressed_oop << 3)
Confidential – Oracle Internal/Restricted/Highly Restricted 83
Compressed Oops
32-bit
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why do we need to synchronize VM Options?
• To avoid marking the entire heap, we need to keep track of changes
Confidential – Oracle Internal/Restricted/Highly Restricted 84
Write Barriers
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why do we need to synchronize VM Options?
• To avoid marking the entire heap, we need to keep track of changes
Confidential – Oracle Internal/Restricted/Highly Restricted 85
Write Barriers
Young Not Young
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why do we need to synchronize VM Options?
• To avoid marking the entire heap, we need to keep track of changes
Confidential – Oracle Internal/Restricted/Highly Restricted 86
Write Barriers
Young Not Young! New
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why do we need to synchronize VM Options?
• To avoid marking the entire heap, we need to keep track of changes
Confidential – Oracle Internal/Restricted/Highly Restricted 87
Write Barriers
Young Not Young! New !
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why do we need to synchronize VM Options?
• To avoid marking the entire heap, we need to keep track of changes
Confidential – Oracle Internal/Restricted/Highly Restricted 88
Write Barriers
Young Not Young
Card Table
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why do we need to synchronize VM Options?
• To avoid marking the entire heap, we need to keep track of changes
Confidential – Oracle Internal/Restricted/Highly Restricted 89
Write Barriers
Young Not Young! New
Card Table
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Why do we need to synchronize VM Options?
• To avoid marking the entire heap, we need to keep track of changes
Confidential – Oracle Internal/Restricted/Highly Restricted 90
Write Barriers
Young Not Young! New !
Card Table
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Known Library Locations ($JAVA_HOME/lib/)
• -XX:-UseCompressedOops -XX:+UseG1GC : libjava.base.so
• -XX:+UseCompressedOops -XX:+UseG1GC : libjava.base-coop.so
• -XX:-UseCompressedOops -XX:+UseParallelGC : libjava.base-nong1.so
• -XX:+UseCompressedOops -XX:+UseParallelGC : libjava.base-coop-nong1.so
Confidential – Oracle Internal/Restricted/Highly Restricted 91
VMOptions must match library name
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Known Library Locations ($JAVA_HOME/lib/)
• jdk.compiler
• jdk.scripting.nashorn
• jdk.vm.ci
• jdk.vm.compiler
Confidential – Oracle Internal/Restricted/Highly Restricted 92
Other known JDK modules
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Summary
• Value
– System reaches peak performance quicker ★
– Reduced total footprint of multiple JVMs running same code ★
– Native code performance on platforms that do not allow JIT ★
• Risks
– Still experimental, not officially supported
– No official documentation (besides the JEP)
– Only available on AMD64 Linux
– Does not support invokedynamic (JSR 292) or custom classloaders
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Summary
• Value
– System reaches peak performance quicker ★
– Reduced total footprint of multiple JVMs running same code ★
– Native code performance on platforms that do not allow JIT ★
• Risks
– Still experimental, not officially supported
– No official documentation (besides the JEP)
– Only available on AMD64 Linux
– Does not support invokedynamic (JSR 292) or custom classloaders
★ YMMV
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Other AoT Sessions at J1
• HotSpot AOT Internals and AOT + CDS Performance Results [CON7772]
– Thursday, Oct 05, 11:00 a.m. - 11:45 a.m. | Marriott Marquis (Yerba Buena Level) -
Salon 12
– JVMLS version of talk: https://www.youtube.com/watch?v=n5DCg6M2MDM
• JIT Versus AOT: Unity and Conflict of Dynamic and Static Compilers for Java
[CON3230]
– Thursday, Oct 05, 1:00 p.m. - 1:45 p.m. | Marriott Marquis (Yerba Buena Level) - Salon
14
Confidential – Oracle Internal/Restricted/Highly Restricted 95
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
References
• JEP 295: Ahead-of-Time Compilation
http://openjdk.java.net/jeps/295
• Tiered Compilation
https://docs.oracle.com/javase/8/docs/technotes/guides/vm/performance-enhancements-7.html#tieredcompilation
• Class Data Sharing
https://docs.oracle.com/javase/8/docs/technotes/guides/vm/class-data-sharing.html
• JEP draft: Application Class Data Sharing
http://openjdk.java.net/jeps/8185996
• Ahead Of Time (AOT) Internals with Vladimir Kozlov and Igor Veresov
https://www.youtube.com/watch?v=n5DCg6M2MDM
Confidential – Oracle Internal/Restricted/Highly Restricted 96
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Stay connected
• Join us: DevOps Corner (Developer Lounge – Moscone West)
• Learn more: openjdk.java.net | wercker.com/java
• Follow: @OpenJDK, @wercker #JavaOne #DevOps
97
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Safe Harbor Statement
The preceding is intended to outline our general product direction. It is intended for
information purposes only, and may not be incorporated into any contract. It is not a
commitment to deliver any material, code, or functionality, and should not be relied upon
in making purchasing decisions. The development, release, and timing of any features or
functionality described for Oracle’s products remains at the sole discretion of Oracle.
Confidential – Oracle Internal/Restricted/Highly Restricted 98
Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) [JavaOne 2017 CON3738]
Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) [JavaOne 2017 CON3738]

More Related Content

What's hot

Tweet4Beer - Beertap powered by Java goes IoT and JavaFX
Tweet4Beer - Beertap powered by Java goes IoT and JavaFXTweet4Beer - Beertap powered by Java goes IoT and JavaFX
Tweet4Beer - Beertap powered by Java goes IoT and JavaFX
Bruno Borges
 

What's hot (20)

Dockerizing Oracle Database
Dockerizing Oracle Database Dockerizing Oracle Database
Dockerizing Oracle Database
 
JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...
JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...
JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...
 
JSF 2.3 Adopt-a-JSR 10 Minute Infodeck
JSF 2.3 Adopt-a-JSR 10 Minute InfodeckJSF 2.3 Adopt-a-JSR 10 Minute Infodeck
JSF 2.3 Adopt-a-JSR 10 Minute Infodeck
 
20191119 Cloud Native Java : GraalVM
20191119 Cloud Native Java : GraalVM20191119 Cloud Native Java : GraalVM
20191119 Cloud Native Java : GraalVM
 
JavaCro'15 - HTTP2 Comes to Java! - David Delabassee
JavaCro'15 - HTTP2 Comes to Java! - David DelabasseeJavaCro'15 - HTTP2 Comes to Java! - David Delabassee
JavaCro'15 - HTTP2 Comes to Java! - David Delabassee
 
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute InfodeckServlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
 
Apache Harmony: An Open Innovation
Apache Harmony: An Open InnovationApache Harmony: An Open Innovation
Apache Harmony: An Open Innovation
 
WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015
 
Oracle Cloud: Anything as a Service
Oracle Cloud: Anything as a ServiceOracle Cloud: Anything as a Service
Oracle Cloud: Anything as a Service
 
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?
 
JavaCro'15 - Java Cloud - Marin Tadić
JavaCro'15 - Java Cloud - Marin TadićJavaCro'15 - Java Cloud - Marin Tadić
JavaCro'15 - Java Cloud - Marin Tadić
 
Server Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David DelabasseeServer Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David Delabassee
 
GraphPipe - Blazingly Fast Machine Learning Inference by Vish Abrams
GraphPipe - Blazingly Fast Machine Learning Inference by Vish AbramsGraphPipe - Blazingly Fast Machine Learning Inference by Vish Abrams
GraphPipe - Blazingly Fast Machine Learning Inference by Vish Abrams
 
JavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee
JavaCro'15 - Java EE 8 - An instant snapshot - David DelabasseeJavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee
JavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee
 
Supercharge your Code to get optimal Database Performance
Supercharge your Code to get optimal Database PerformanceSupercharge your Code to get optimal Database Performance
Supercharge your Code to get optimal Database Performance
 
Tweet4Beer - Beertap powered by Java goes IoT and JavaFX
Tweet4Beer - Beertap powered by Java goes IoT and JavaFXTweet4Beer - Beertap powered by Java goes IoT and JavaFX
Tweet4Beer - Beertap powered by Java goes IoT and JavaFX
 
JCP 20 Year Anniversary
JCP 20 Year AnniversaryJCP 20 Year Anniversary
JCP 20 Year Anniversary
 
Introdução ao Oracle NoSQL
Introdução ao Oracle NoSQLIntrodução ao Oracle NoSQL
Introdução ao Oracle NoSQL
 
EJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and StrategyEJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and Strategy
 
WebSockets - Realtime em Mundo Conectado
WebSockets - Realtime em Mundo ConectadoWebSockets - Realtime em Mundo Conectado
WebSockets - Realtime em Mundo Conectado
 

Similar to Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) [JavaOne 2017 CON3738]

Similar to Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) [JavaOne 2017 CON3738] (20)

Cloud Native 자바 플랫폼: Graalvm Overview
Cloud Native 자바 플랫폼: Graalvm OverviewCloud Native 자바 플랫폼: Graalvm Overview
Cloud Native 자바 플랫폼: Graalvm Overview
 
Another compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilationAnother compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilation
 
20190615 hkos-mysql-troubleshootingandperformancev2
20190615 hkos-mysql-troubleshootingandperformancev220190615 hkos-mysql-troubleshootingandperformancev2
20190615 hkos-mysql-troubleshootingandperformancev2
 
APAC Tour 2019 update
APAC Tour 2019 updateAPAC Tour 2019 update
APAC Tour 2019 update
 
Bringing Java into the Open
Bringing Java into the Open Bringing Java into the Open
Bringing Java into the Open
 
Streaming solutions for real time problems
Streaming solutions for real time problems Streaming solutions for real time problems
Streaming solutions for real time problems
 
Java Cloud and Container Ready
Java Cloud and Container ReadyJava Cloud and Container Ready
Java Cloud and Container Ready
 
The Future of Java and You
The Future of Java and YouThe Future of Java and You
The Future of Java and You
 
JUG Tour November 2017
JUG Tour November 2017JUG Tour November 2017
JUG Tour November 2017
 
The Future of Java and You
The Future of Java and YouThe Future of Java and You
The Future of Java and You
 
Java and Serverless - A Match Made In Heaven, Part 1
Java and Serverless - A Match Made In Heaven, Part 1Java and Serverless - A Match Made In Heaven, Part 1
Java and Serverless - A Match Made In Heaven, Part 1
 
Serverless Kotlin
Serverless KotlinServerless Kotlin
Serverless Kotlin
 
Serverless Java - Challenges and Triumphs
Serverless Java - Challenges and TriumphsServerless Java - Challenges and Triumphs
Serverless Java - Challenges and Triumphs
 
Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018
 
Oracle Code Online: Building a Serverless State Service for the Cloud
Oracle Code Online: Building a Serverless State Service for the CloudOracle Code Online: Building a Serverless State Service for the Cloud
Oracle Code Online: Building a Serverless State Service for the Cloud
 
MySQL Enterprise Backup: Better Very Large Database Backup & Recovery and More!!
MySQL Enterprise Backup: Better Very Large Database Backup & Recovery and More!!MySQL Enterprise Backup: Better Very Large Database Backup & Recovery and More!!
MySQL Enterprise Backup: Better Very Large Database Backup & Recovery and More!!
 
Java, the JCP & YOU
Java, the JCP & YOU Java, the JCP & YOU
Java, the JCP & YOU
 
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
 
Seminole County Teach In 2017: Crooms Acadamy of Information Technology
Seminole County Teach In 2017: Crooms Acadamy of Information TechnologySeminole County Teach In 2017: Crooms Acadamy of Information Technology
Seminole County Teach In 2017: Crooms Acadamy of Information Technology
 
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data CenterMigrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
 

More from David Buck

More from David Buck (20)

JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
 
JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...
JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...
JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...
 
Java Bytecode Crash Course [Code One 2019]
Java Bytecode Crash Course [Code One 2019]Java Bytecode Crash Course [Code One 2019]
Java Bytecode Crash Course [Code One 2019]
 
CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...
CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...
CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...
 
invokedynamic for Mere Mortals [Code One 2019]
invokedynamic for Mere Mortals [Code One 2019]invokedynamic for Mere Mortals [Code One 2019]
invokedynamic for Mere Mortals [Code One 2019]
 
Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...
Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...
Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...
 
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
 
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
 
Z Garbage Collector
Z Garbage CollectorZ Garbage Collector
Z Garbage Collector
 
Valhalla Update JJUG CCC Spring 2019
Valhalla Update JJUG CCC Spring 2019Valhalla Update JJUG CCC Spring 2019
Valhalla Update JJUG CCC Spring 2019
 
Var handles jjug_ccc_spring_2018
Var handles jjug_ccc_spring_2018Var handles jjug_ccc_spring_2018
Var handles jjug_ccc_spring_2018
 
JDK 10 へようこそ
JDK 10 へようこそJDK 10 へようこそ
JDK 10 へようこそ
 
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
 
HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ JVM 特集 2015年8月]
HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ  JVM 特集  2015年8月]HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ  JVM 特集  2015年8月]
HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ JVM 特集 2015年8月]
 
Java Concurrency, A(nother) Peek Under the Hood [JavaOne 2016 CON1497]
Java Concurrency, A(nother) Peek Under the Hood [JavaOne 2016 CON1497]Java Concurrency, A(nother) Peek Under the Hood [JavaOne 2016 CON1497]
Java Concurrency, A(nother) Peek Under the Hood [JavaOne 2016 CON1497]
 
Bytecode Verification, the Hero That Java Needs [JavaOne 2016 CON1500]
Bytecode Verification, the Hero That Java Needs [JavaOne 2016 CON1500]Bytecode Verification, the Hero That Java Needs [JavaOne 2016 CON1500]
Bytecode Verification, the Hero That Java Needs [JavaOne 2016 CON1500]
 
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
 
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
 
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
 
InvokeDynamic for Mere Mortals [JavaOne 2015 CON7682]
InvokeDynamic for Mere Mortals [JavaOne 2015 CON7682]InvokeDynamic for Mere Mortals [JavaOne 2015 CON7682]
InvokeDynamic for Mere Mortals [JavaOne 2015 CON7682]
 

Recently uploaded

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 

Recently uploaded (20)

10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 

Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) [JavaOne 2017 CON3738]

  • 1.
  • 2.
  • 3. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) CON3738 David Buck Principal Member of Technical Staff Java Platform Group October 4th, 2017 Confidential – Oracle Internal/Restricted/Highly Restricted 3
  • 4. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. Confidential – Oracle Internal/Restricted/Highly Restricted 4
  • 5. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | • JVM Sustaining Engineer • OpenJDK 8 Update Project Maintainer • JavaOne Rock Star • Co-author of Oracle WebLogic Server 11g 構築・運用ガイド • @DavidBuckJP • https://blogs.oracle.com/buck/ Hi There!
  • 6. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Program Agenda Warnings AoT Basics Similar Functionality Usage 1 2 3 4
  • 7. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Warnings
  • 8. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Warnings
  • 9. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Warnings • AoT is still experimental and not yet officially supported
  • 10. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Warnings • AoT is still experimental and not yet officially supported • Currently only Linux on AMD64 (w/ libelf.so) is supported
  • 11. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Warnings • AoT is still experimental and not yet officially supported • Currently only Linux on AMD64 (w/ libelf.so) is supported • No official documentation (only the JEP)
  • 12. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Warnings • AoT is still experimental and not yet officially supported • Currently only Linux on AMD64 (w/ libelf.so) is supported • No official documentation (only the JEP) • There is no official roadmap for support yet
  • 13. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | AoT Basics
  • 14. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why learn about Java AoT?
  • 15. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why learn about Java AoT? • May be supported in the future
  • 16. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why learn about Java AoT? • May be supported in the future • Excuse to study other HotSpot technologies
  • 17. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why learn about Java AoT? • May be supported in the future • Excuse to study other HotSpot technologies • Fun
  • 18. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Java Build / Execution Model (Interpreter) MyClass.java MyClass.class java (HotSpot) javac
  • 19. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Java Build / Execution Model (JIT) MyClass.java MyClass.class java (HotSpot) javac Machine Language (in memory)
  • 20. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Just in Time Compilation (JIT)
  • 21. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Just in Time Compilation (JIT) • Methods get compiled
  • 22. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Just in Time Compilation (JIT) • Methods get compiled • Compilation is expensive (both in cpu time and memory)
  • 23. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Just in Time Compilation (JIT) • Methods get compiled • Compilation is expensive (both in cpu time and memory) • ML version is fast
  • 24. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Just in Time Compilation (JIT) • Methods get compiled • Compilation is expensive (both in cpu time and memory) • ML version is fast • Is JIT really faster than an interpreter?
  • 25. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Just in Time Compilation (JIT)
  • 26. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Just in Time Compilation (JIT)
  • 27. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Just in Time Compilation (JIT) Better performance than an interpreter?
  • 28. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Just in Time Compilation (JIT) Better performance than an interpreter? Depends on your definition of “performance”
  • 29. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | $ time ./hello_j1 Hello JavaOne! real 0m0.002s user 0m0.001s $ time java HelloJ1 Hello JavaOne! real 0m0.104s user 0m0.077s sys 0m0.020s Just in Time Compilation (JIT)
  • 30. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Just in Time Compilation (JIT) Weak Point • Compilation overhead is high – Delay before native code can be executed – Heavy resource (memory / CPU cycles) consumption • Interpretation is better for non-hot methods
  • 31. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Just in Time Compilation (JIT) (HotSpot’s Implimentation) • All methods start off being interpreted • Hot methods identified by sample-based profiling • Hot methods are compiled • Non-hot methods continue to be interpreted
  • 32. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Even with HotSpot’s JIT • Application startup time is longer • It takes longer to achieve peak performance • Compilation consumes a lot of memory • There are platforms where runtime code generation is not allowed Compared to native (C/C++) compilation
  • 33. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Just in Time Compilation (JIT) HotSpot’s Implementation A tale of two compilers… • C2 – For server use – Heavy optimization – Dependent on profiling data collected by the interpreter – Default CompileThreshold: 10000 • C1 – For client use – Less optimization – Not dependent on profiling data – Default CompileThreshold : 1500
  • 34. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Ahead of Time (AoT) Strategy • Generate machine code before runtime • Load preexisting machine code during runtime • No need to JIT compile code at runtime
  • 35. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Java Build / Execution Model (AoT) MyClass.java MyClass.class java (HotSpot) javac Machine Language (in memory)
  • 36. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Java Build / Execution Model (AoT) MyClass.java MyClass.class java (HotSpot) javac my_class.so jaotc
  • 37. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Java Build / Execution Model java (HotSpot) Machine Language (in memory) java (HotSpot) Machine Language (in memory) java (HotSpot) Machine Language (in memory) java (HotSpot) Machine Language (in memory)
  • 38. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Java Build / Execution Model java (HotSpot) java (HotSpot) java (HotSpot) java (HotSpot) my_class.so
  • 39. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Advantages of Ahead of Time (AoT)
  • 40. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Advantages of Ahead of Time (AoT) • Faster startup times ★
  • 41. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Advantages of Ahead of Time (AoT) • Faster startup times ★ • Less time to peak performance / steady state ★
  • 42. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Advantages of Ahead of Time (AoT) • Faster startup times ★ • Less time to peak performance / steady state ★ • Less runtime compilation overhead (CPU / memory) ★
  • 43. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Advantages of Ahead of Time (AoT) • Faster startup times ★ • Less time to peak performance / steady state ★ • Less runtime compilation overhead (CPU / memory) ★ • Native code can be shared across multiple processes ★
  • 44. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Advantages of Ahead of Time (AoT) • Faster startup times ★ • Less time to peak performance / steady state ★ • Less runtime compilation overhead (CPU / memory) ★ • Native code can be shared across multiple processes ★ • Native code performance even on platforms that disallow JIT ★
  • 45. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Advantages of Ahead of Time (AoT) • Faster startup times ★ • Less time to peak performance / steady state ★ • Less runtime compilation overhead (CPU / memory) ★ • Native code can be shared across multiple processes ★ • Native code performance even on platforms that disallow JIT ★ ★ YMMV
  • 46. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | ?
  • 47. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Similar Functionality
  • 48. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Similar Functionality • Tiered Compilation • Class Data Sharing(CDS) / AppCDS
  • 49. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Tiered Compilation • Server JVM without Tiered Compilation – Interpreter (w/ profiling) – C2 • Server JVM with Tiered Compilation – Interpreter (w/ profiling) – C1 (w/ profiling) – C2
  • 50. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | No Class Data Sharing java (HotSpot) Class Data (in memory)java (HotSpot) Class Data (in memory) java (HotSpot) Class Data (in memory) java (HotSpot) Class Data (in memory)
  • 51. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Class Data Sharing java (HotSpot) java (HotSpot) java (HotSpot) java (HotSpot) Class Data classes.jsa
  • 52. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | • Class Data Sharing – Only Java SE Class Library • AppCDS – Includes application classes as well
  • 53. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Same as AoT • Tiered Compilation – Quicker warm up • Class Data Sharing(CDS) / AppCDS – Quicker warm up – Lower total memory footprint Different from AoT • No machine (native) code is persisted or shared Similar Functionality
  • 54. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Corporate Photography Collection
  • 55. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Usage
  • 56. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | A New Tool: jaotc MyClass.class my_class.sojaotc
  • 57. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | $ jaotc --output libHelloAOT.so HelloAoT.class jaotc
  • 58. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | $ jaotc --help Usage: jaotc <options> list list A : separated list of class names, modules, jar files or directories which contain class files. where options include: --output <file> Output file name --class-name <class names> List of classes to compile --jar <jarfiles> List of jar files to compile --module <modules> List of modules to compile --directory <dirs> List of directories where to search for files to compile --search-path <dirs> List of directories where to search for specified files --compile-commands <file> Name of file with compile commands --compile-for-tiered Generate profiling code for tiered compilation --compile-with-assertions Compile with java assertions --compile-threads <number> Number of compilation threads to be used --ignore-errors Ignores all exceptions thrown during class loading --exit-on-error Exit on compilation errors --info Print information during compilation --verbose Print verbose information --debug Print debug information --help Print this usage message --version Version information -J<flag> Pass <flag> directly to the runtime system jaotc (On-line Help)
  • 59. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | $ jaotc --info --output libHelloAOT.so HelloAoT.class Compiling libHelloAOT... 1 classes found (30 ms) 2 methods total, 2 methods to compile (4 ms) Compiling with 8 threads . 2 methods compiled, 0 methods failed (409 ms) Parsing compiled code (1 ms) Processing metadata (15 ms) Preparing stubs binary (1 ms) Preparing compiled binary (1 ms) Creating binary: libHelloAOT.o (8 ms) Creating shared library: libHelloAOT.so (13 ms) Total time: 912 ms jaotc (--info Flag)
  • 60. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | $ jaotc --info --compile-with-assertions --output libHelloAOT.so HelloAoT.class jaotc (--compile-with-assertions Flag)
  • 61. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | $ jaotc --compile-commands cc.txt --output libHelloAOT.so HelloAoT.class $ cat cc.txt exclude org.sample.code.MyClass.method* exclude org.sample.code.MyClass.<init> jaotc (--compile-commands Flag)
  • 62. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | $ jaotc --output libjava.base.so --module java.base jaotc (Modules)
  • 63. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | $ jaotc --output libjava.base.so --jar my-spiffy-app.jar jaotc (Jar Files)
  • 64. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | $ jaotc -J-XX:-UseCompressedOop --output libHelloAOT.so HelloAoT.class VM Options are important here! (more to come…) jaotc (VM Options)
  • 65. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | jaotc (--compile-for-tiered Flag) • jaotc uses Graal to compile • Performance is similar to C1 • --compile-for-tiered generates code that includes profiling instrumentation needed by C2 Confidential – Oracle Internal/Restricted/Highly Restricted 65
  • 66. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | $ java -XX:AOTLibrary=./libHelloAoT.so HelloAoT Runtime
  • 67. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | $ java -XX:AOTLibrary=./libHelloAoT.so HelloAoT Hello AoT! $ Runtime
  • 68. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | $ java -XX:+PrintAOT -XX:AOTLibrary=./libHelloAoT.so HelloAoT Runtime (-XX:+/-PrintAOT)
  • 69. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | $ builds/jdk-9/bin/java -XX:+PrintAOT -XX:AOTLibrary=./libHelloAoT.so HelloAoT 13 1 loaded ./libHelloAoT.so aot library 76 1 aot[ 1] HelloAoT.<init>()V 76 2 aot[ 1] HelloAoT.main([Ljava/lang/String;)V Hello AoT! $ Runtime (-XX:+/-PrintAOT)
  • 70. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | $ java -XX:-UseCompressedOops -XX:+PrintAOT -XX:AOTLibrary=./libHelloAoT.so HelloAoT Runtime (Compressed Oops Disabled)
  • 71. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | $ java -XX:-UseCompressedOops -XX:+PrintAOT -XX:AOTLibrary=./libHelloAoT.so HelloAoT Shared file ./libHelloAoT.so error: UseCompressedOops has different value 'true' from current 'false' 7 1 skipped ./libHelloAoT.so aot library Hello AoT! $ Runtime (Compressed Oops Disabled)
  • 72. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | $ builds/jdk-9/bin/java -XX:-UseCompressedOops -XX:AOTLibrary=./libHelloAoT.so HelloAoT Hello AoT! $ Runtime (Compressed Oops Disabled)
  • 73. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | $ jaotc -J-XX:-UseCompressedOop --output libHelloAOT.so HelloAoT.class jaotc (Be sure to synchronize VM options) Compressed OOPs Normal OOPs G1 -J-XX:+UseCompressedOops -J-XX:+UseG1GC -J-XX:-UseCompressedOops -J-XX:+UseG1GC ParallelGC -J-XX:+UseCompressedOops -J-XX:+UseParallelGC -J-XX:-UseCompressedOops -J-XX:+UseParallelGC
  • 74. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why do we need to synchronize VM Options? • If heap is < 4GB, 32 MSB of every heap address is the same! • We can store just the 32 LSB of each address • Each reference field is half the size Confidential – Oracle Internal/Restricted/Highly Restricted 74 Compressed Oops 64-bit Address
  • 75. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why do we need to synchronize VM Options? • If heap is < 4GB, 32 MSB of every heap address is the same! • We can store just the 32 LSB of each address • Each reference field is half the size Confidential – Oracle Internal/Restricted/Highly Restricted 75 Compressed Oops 32 MSB 32 LSB
  • 76. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why do we need to synchronize VM Options? • If heap is < 4GB, 32 MSB of every heap address is the same! • We can store just the 32 LSB of each address • Each reference field is half the size Confidential – Oracle Internal/Restricted/Highly Restricted 76 Compressed Oops Always the same! 32 LSB
  • 77. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why do we need to synchronize VM Options? • If heap is < 4GB, 32 MSB of every heap address is the same! • We can store just the 32 LSB of each address • Each reference field is half the size Confidential – Oracle Internal/Restricted/Highly Restricted 77 Compressed Oops 32 LSB
  • 78. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why do we need to synchronize VM Options? • If heap is < 4GB, 32 MSB of every heap address is the same! • We can store just the 32 LSB of each address • Each reference field is half the size • uncompressed_oop = heap_base + compressed_oop Confidential – Oracle Internal/Restricted/Highly Restricted 78 Compressed Oops 32 LSB
  • 79. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why do we need to synchronize VM Options? • If heap is > than 4GB but < 32GB we can still compress the Oop • 64-bit platform has an 8-byte alignment requirement • 3 LSB of every heap address are always zero • So we can shift the address 3 bits right/left to compress/uncompress Confidential – Oracle Internal/Restricted/Highly Restricted 79 Compressed Oops 64-bit Address
  • 80. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why do we need to synchronize VM Options? • If heap is > than 4GB but < 32GB we can still compress the Oop • 64-bit platform has an 8-byte alignment requirement • 3 LSB of every heap address are always zero • So we can shift the address 3 bits right/left to compress/uncompress Confidential – Oracle Internal/Restricted/Highly Restricted 80 Compressed Oops 64-bit Address 000
  • 81. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why do we need to synchronize VM Options? • If heap is > than 4GB but < 32GB we can still compress the Oop • 64-bit platform has an 8-byte alignment requirement • 3 LSB of every heap address are always zero • So we can shift the address 3 bits right/left to compress/uncompress Confidential – Oracle Internal/Restricted/Highly Restricted 81 Compressed Oops 32-bit 000
  • 82. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why do we need to synchronize VM Options? • If heap is > than 4GB but < 32GB we can still compress the Oop • 64-bit platform has an 8-byte alignment requirement • 3 LSB of every heap address are always zero • So we can shift the address 3 bits right/left to compress/uncompress Confidential – Oracle Internal/Restricted/Highly Restricted 82 Compressed Oops 32-bit
  • 83. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why do we need to synchronize VM Options? • If heap is > than 4GB but < 32GB we can still compress the Oop • 64-bit platform has an 8-byte alignment requirement • 3 LSB of every heap address are always zero • So we can shift the address 3 bits right/left to compress/uncompress • uncompressed_oop = heap_base + (compressed_oop << 3) Confidential – Oracle Internal/Restricted/Highly Restricted 83 Compressed Oops 32-bit
  • 84. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why do we need to synchronize VM Options? • To avoid marking the entire heap, we need to keep track of changes Confidential – Oracle Internal/Restricted/Highly Restricted 84 Write Barriers
  • 85. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why do we need to synchronize VM Options? • To avoid marking the entire heap, we need to keep track of changes Confidential – Oracle Internal/Restricted/Highly Restricted 85 Write Barriers Young Not Young
  • 86. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why do we need to synchronize VM Options? • To avoid marking the entire heap, we need to keep track of changes Confidential – Oracle Internal/Restricted/Highly Restricted 86 Write Barriers Young Not Young! New
  • 87. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why do we need to synchronize VM Options? • To avoid marking the entire heap, we need to keep track of changes Confidential – Oracle Internal/Restricted/Highly Restricted 87 Write Barriers Young Not Young! New !
  • 88. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why do we need to synchronize VM Options? • To avoid marking the entire heap, we need to keep track of changes Confidential – Oracle Internal/Restricted/Highly Restricted 88 Write Barriers Young Not Young Card Table
  • 89. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why do we need to synchronize VM Options? • To avoid marking the entire heap, we need to keep track of changes Confidential – Oracle Internal/Restricted/Highly Restricted 89 Write Barriers Young Not Young! New Card Table
  • 90. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Why do we need to synchronize VM Options? • To avoid marking the entire heap, we need to keep track of changes Confidential – Oracle Internal/Restricted/Highly Restricted 90 Write Barriers Young Not Young! New ! Card Table
  • 91. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Known Library Locations ($JAVA_HOME/lib/) • -XX:-UseCompressedOops -XX:+UseG1GC : libjava.base.so • -XX:+UseCompressedOops -XX:+UseG1GC : libjava.base-coop.so • -XX:-UseCompressedOops -XX:+UseParallelGC : libjava.base-nong1.so • -XX:+UseCompressedOops -XX:+UseParallelGC : libjava.base-coop-nong1.so Confidential – Oracle Internal/Restricted/Highly Restricted 91 VMOptions must match library name
  • 92. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Known Library Locations ($JAVA_HOME/lib/) • jdk.compiler • jdk.scripting.nashorn • jdk.vm.ci • jdk.vm.compiler Confidential – Oracle Internal/Restricted/Highly Restricted 92 Other known JDK modules
  • 93. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Summary • Value – System reaches peak performance quicker ★ – Reduced total footprint of multiple JVMs running same code ★ – Native code performance on platforms that do not allow JIT ★ • Risks – Still experimental, not officially supported – No official documentation (besides the JEP) – Only available on AMD64 Linux – Does not support invokedynamic (JSR 292) or custom classloaders
  • 94. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Summary • Value – System reaches peak performance quicker ★ – Reduced total footprint of multiple JVMs running same code ★ – Native code performance on platforms that do not allow JIT ★ • Risks – Still experimental, not officially supported – No official documentation (besides the JEP) – Only available on AMD64 Linux – Does not support invokedynamic (JSR 292) or custom classloaders ★ YMMV
  • 95. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Other AoT Sessions at J1 • HotSpot AOT Internals and AOT + CDS Performance Results [CON7772] – Thursday, Oct 05, 11:00 a.m. - 11:45 a.m. | Marriott Marquis (Yerba Buena Level) - Salon 12 – JVMLS version of talk: https://www.youtube.com/watch?v=n5DCg6M2MDM • JIT Versus AOT: Unity and Conflict of Dynamic and Static Compilers for Java [CON3230] – Thursday, Oct 05, 1:00 p.m. - 1:45 p.m. | Marriott Marquis (Yerba Buena Level) - Salon 14 Confidential – Oracle Internal/Restricted/Highly Restricted 95
  • 96. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | References • JEP 295: Ahead-of-Time Compilation http://openjdk.java.net/jeps/295 • Tiered Compilation https://docs.oracle.com/javase/8/docs/technotes/guides/vm/performance-enhancements-7.html#tieredcompilation • Class Data Sharing https://docs.oracle.com/javase/8/docs/technotes/guides/vm/class-data-sharing.html • JEP draft: Application Class Data Sharing http://openjdk.java.net/jeps/8185996 • Ahead Of Time (AOT) Internals with Vladimir Kozlov and Igor Veresov https://www.youtube.com/watch?v=n5DCg6M2MDM Confidential – Oracle Internal/Restricted/Highly Restricted 96
  • 97. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Stay connected • Join us: DevOps Corner (Developer Lounge – Moscone West) • Learn more: openjdk.java.net | wercker.com/java • Follow: @OpenJDK, @wercker #JavaOne #DevOps 97
  • 98. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Safe Harbor Statement The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. Confidential – Oracle Internal/Restricted/Highly Restricted 98