3 The following is intended to provide some insight into a line of research in Oracle Labs. 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 in connection with any Oracle product or service remains at the sole discretion of Oracle. Any views expressed in this presentation are my own and do not necessarily reflect the views of Oracle.
4 Oracle Labs Austria The Mission of Oracle Labs is straightforward: Identify, explore, and transfer new technologies that have the potential to substantially improve Oracle's business.
5 Oracle Labs Austria Yes, there is an Oracle Labs Office in Linz! – Oracle (Sun) cooperation since 2001 with JKU Linz, Institute for Systems Software (Prof. Mössenböck) – ~5 Employees, ~10 Students – Offices located in the Science Park, JKU – Research topic: Compilers, Virtual Machines Yes, we are hiring! – Full-Time at Oracle – PhD / Master at JKU
8 Benchmarking – How to NOT do it So You Want to Write a Micro-Benchmark (John Rose) – https://wikis.oracle.com/display/HotSpotInternals/MicroBenchmarks How to NOT Write a Microbenchmark (Cliff Click) – http://www.azulsystems.com/events/javaone_2002/microbenchmarks.pdf
13 Virtual Calls public abstract class Processor { public abstract int process(int value); } Processor[] processors = new Processor[N]; public int callVirtual (Counter counter) { counter.value++; Processor proc = processors [counter.value&MASK]; return proc.process(counter.value); }
18 Escape Analysis Analyze the scope of a new object's uses and decide whether to allocate it on the Java heap. Done by Server Compiler (C2) since Java SE 6u23. Can enable optimizations like: – Stack Allocation (not currently) – Scalar Replacement – Lock Elision
21 Partial Escape Analysis Control flow sensitive Analysis Moves object allocation to branch(es) where object escapes. No allocation occurs in other branches – optimizations possible there https://wiki.openjdk.java.net/display/Graal/Graal+Partial+Escape+Analysis Lukas Stadler’s PhD thesis (yet to be published)
24 Graal a quest for the JVM to leverage its own J An interpreter and compiler written in Java – Maintainable – Extendable – Excellent code quality – Multi-Language Interpreter Framework (Truffle) – http://openjdk.java.net/projects/graal/
28 Oracle Labs Linz You have an unsolved, compiler/VM related performance issue? – Contact us! – We are looking for (prospective?) Oracle customers with hard, real- world performance challenges (Reminder: we are hiring) Oracle Labs Austria Altenberger Straße 69 4040 Linz thomas.wuerthinger@oracle.com christian.wirth@oracle.com