SlideShare a Scribd company logo
1 of 26
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Copyright © 2015 Oracle and/or its affiliates. All rights reserved.Copyright © 2015 Oracle and/or its affiliates. All rights reserved.
@JaroslavTulach
Oracle Labs
On the Quest Towards
Fastest (Java) Virtual Machine
on the Planet!
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Jaroslav Tulach
1
2
3
4
NetBeans Founder
NetBeans Initial Architect
Practical API Design book
Oracle Labs: Graal/Truffle
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Program Agenda
1
2
3
4
The Vision
Graal VM
Truffle Languages
References & Discussion
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Oracle Labs Vision
●
Vision without speculation would be today's reality
●
Radical innovation
●
New approach to existing technologies
●
Research + Engineering
●
Hardware & Software
●
Engineered to work together
●
Java/bytecode/IR/assembly/processors/memory
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Graal Compiler Vision Statement
“Create an extensible, modular,
dynamic, and aggressive compiler using
object-oriented and reflective Java programming,
a graph-based
and visualizable intermediate representation,
and Java snippets.”
Thomas Würthinger
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Graal Virtual Machine
• Modern alternative to HotSpot C2
l
Maintainable code base
l
Toolable, approachable
l
Ready for today's code
l
JEP 243: Java Compiler Interface
• Partial evaluation
• Aggressive speculations
• Smooth de-optimizations
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Truffle: “Write Your Own Language”
Prototype a new language
Parser and language work to build
syntax tree (AST), AST Interpreter
Write a “real” VM
In C/C++, still using AST interpreter,
spend a lot of time implementing
runtime system, GC, …
People start using it
Define a bytecode format and
write bytecode interpreter
People complain about performance
Write a JIT compiler
Improve the garbage collector
Performance is still bad
Prototype a new language in Java
Parser and language work to build
syntax tree (AST)
Execute using AST interpreter
Integrate with VM-building framework
Integrate with Modular VM
Add small language-specific parts
People start using it
And it is already fast
Current situation How it should be
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
A Spectrum of Programming Languages
Static typing
Faster execution
Targeting larger projects
More flexible
Easier to use
Targeting exploratory programming,
rapid prototyping,
domain-specific programming,
customization of existing applications
Java, C#
Visual Basic
Python, Ruby
R
There is no single language that fulfills all
needs
JavaScript
Do you care about your code or your data?
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. 10
3
One VM for all languages means
interoperability and being able to
choose the best language for the task!
Lowerisbetter
The goal:
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. 11
You can execute any language on the JVM /
CLR
- as long as it looks like Java / C#.
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. 12
C
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. 13
a + b
Objectint String
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. 14
U
U U
U
U I
I I
G
G I
I I
G
G
NodeRewriting
for ProfilingFeedback
AST Interpreter
Rewritten Nodes
AST Interpreter
Uninitialized Nodes
Compilationusing
Partial Evaluation
Compiled Code
Node Transitions
S
U
I
D
G
Uninitialized Integer
Generic
DoubleString
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. 15
I
I I
G
G I
I I
G
G
Deoptimization
toASTInterpreter
D
I D
G
G D
I D
G
G
NodeRewritingtoUpdate
ProfilingFeedback
Recompilationusing
Partial Evaluation
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Safe Harbor Statement
The preceding and 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.
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Demo
The Speed(s) of Ruby
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Multi, Multi, Multi, Multi, Multi VM
●
Multi-language
●
Multi-threaded
●
Multi-tenant
●
Multi-node
●
Multi-tooling
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Multi Language
• Single launcher for all
tenant = PolyglotEngine.buildNew().config(...).build();
fourtyTwo = tenant.eval(“text/x-javascript”, “32 + 10”);
twoAndFourty = tenant.eval(“application/x-ruby”, “10 + 32”);
• Languages can export and import symbols
window = tenant.findGlobalSymbol(“window”);
// and JavaScript provides it by overriding
@Override protected Object findGlobalSymbol(String name) {
return “window”.equals(name) ? jsWindowGlobal : null;
}
19
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Multi Tenant
• Create as many tenants as needed
tenant1 = PolyglotEngine.buildNew().config(...).build();
tenant2 = PolyglotEngine.buildNew().config(...).build();
fourtyTwo = tenant1.eval(“text/x-javascript”, “x = this.x ? x + 1 : 42”);
// sees previous value in x:
fourtyThree = tenant1.eval(“text/x-javascript”, “x = this.x ? x + 1 : 42”);
// no x defined, as this is different tenant:
twoAndFourty = tenant2.eval(“text/x-javascript”, “x = this.x ? x + 1 : 42”);
• Isolation enforced by TCK
20
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Multi Threaded
• PolyglotEngine is inherently single-threaded API
l
Access from a single (creator) thread enforced
• Easy to dispatch execution to different thread
tenantAsync = PolyglotEngine.buildNew()
.executor(Executors.newSingleThreadedExecutor())
.build();
• Tenants can exchange messages
– Orchestrate multiple tenants running in parallel from a single thread
21
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Multi Node (under consideration)
• PolyglotEngine as a facade for remote object protocol
tenantAway = PolyglotEngine.buildNew()
.nodeIP(“192.168.34.65”) // the execution will happen on different node
.build();
result = tenantAway.eval(“text/javascript”, “'Remote and slow ' + 42”);
• Keeping the same API facade: PolyglotEngine
– Get multi language, multi threaded, multi tenant
– Multi tooling and multi node virtual machine!
22
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Multi Tooling
• JPDA debugging always on
l
Attach Java IDE and all Truffle language details will be shown
• Turn on your debugger protocol
tenantWithDebugger = PolyglotEngine.buildNew()
.onEvent(new ExecutionEventHandler() {…})
.onEvent(new SuspendedEventHandler() {…})
.build();
• Other instrumentation based tools available as well
23
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Demo
Polyglot Debugging
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
The Fastest (J)VM on the Planet
• Try it now!
– Download jvm: http://www.oracle.com/technetwork/oracle-labs/program-languages/
– Open source:
●
http://openjdk.java.net/projects/graal/
●
https://github.com/graalvm
– JRuby, Python, JavaScript, R, C
• Speed is Great!
– In need of completeness
• We are hiring!
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

More Related Content

What's hot

Why Python In Entertainment Industry?
Why Python In Entertainment Industry?Why Python In Entertainment Industry?
Why Python In Entertainment Industry?Shuen-Huei Guan
 
Linux GUI Applications on Windows Subsystem for Linux
Linux GUI Applications on Windows Subsystem for LinuxLinux GUI Applications on Windows Subsystem for Linux
Linux GUI Applications on Windows Subsystem for LinuxEmbarcadero Technologies
 
FMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for LinuxFMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for LinuxEmbarcadero Technologies
 
Rancher master class globalized edge workloads with k3s
Rancher master class   globalized edge workloads with k3sRancher master class   globalized edge workloads with k3s
Rancher master class globalized edge workloads with k3sJoseph Marhee
 
Meetup 2020 - Back to the Basics part 101 : IaC
Meetup 2020 - Back to the Basics part 101 : IaCMeetup 2020 - Back to the Basics part 101 : IaC
Meetup 2020 - Back to the Basics part 101 : IaCDamienCarpy
 
MuleSoft Surat Virtual Meetup#34 - OAS 3.0 full API lifecycle support with An...
MuleSoft Surat Virtual Meetup#34 - OAS 3.0 full API lifecycle support with An...MuleSoft Surat Virtual Meetup#34 - OAS 3.0 full API lifecycle support with An...
MuleSoft Surat Virtual Meetup#34 - OAS 3.0 full API lifecycle support with An...Jitendra Bafna
 
Revamping Mailjet API documentation @ ParisAPI meetup
Revamping Mailjet API documentation @ ParisAPI meetupRevamping Mailjet API documentation @ ParisAPI meetup
Revamping Mailjet API documentation @ ParisAPI meetupMailjet
 
平行化你的工作 part1
平行化你的工作 part1平行化你的工作 part1
平行化你的工作 part1Shuen-Huei Guan
 
Python for Delphi Developers - Part 1 Introduction
Python for Delphi Developers - Part 1 IntroductionPython for Delphi Developers - Part 1 Introduction
Python for Delphi Developers - Part 1 IntroductionEmbarcadero Technologies
 
Guided overview of software frameworks qt framework
Guided overview of software frameworks   qt frameworkGuided overview of software frameworks   qt framework
Guided overview of software frameworks qt frameworkBenjamin Cottrell
 
Kotlin for Android
Kotlin for AndroidKotlin for Android
Kotlin for AndroidHan Yin
 
Tycho Tutorial EclipseCon 2013
Tycho Tutorial EclipseCon 2013Tycho Tutorial EclipseCon 2013
Tycho Tutorial EclipseCon 2013jsievers
 
Getting started with the NDK
Getting started with the NDKGetting started with the NDK
Getting started with the NDKKirill Kounik
 
JBUG 11 - Outside The Java Box
JBUG 11 - Outside The Java BoxJBUG 11 - Outside The Java Box
JBUG 11 - Outside The Java BoxTikal Knowledge
 
LSM 2011 AdaLabs presentation slides: How to make my business opensource & vi...
LSM 2011 AdaLabs presentation slides: How to make my business opensource & vi...LSM 2011 AdaLabs presentation slides: How to make my business opensource & vi...
LSM 2011 AdaLabs presentation slides: How to make my business opensource & vi...AdaLabs
 
Agile Development with Smalltalk - Long
Agile Development with Smalltalk - LongAgile Development with Smalltalk - Long
Agile Development with Smalltalk - LongTomáš Kukol
 
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013dotCloud
 
Lua as a business logic language in high load application
Lua as a business logic language in high load applicationLua as a business logic language in high load application
Lua as a business logic language in high load applicationIlya Martynov
 

What's hot (20)

Why Python In Entertainment Industry?
Why Python In Entertainment Industry?Why Python In Entertainment Industry?
Why Python In Entertainment Industry?
 
Linux GUI Applications on Windows Subsystem for Linux
Linux GUI Applications on Windows Subsystem for LinuxLinux GUI Applications on Windows Subsystem for Linux
Linux GUI Applications on Windows Subsystem for Linux
 
FMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for LinuxFMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for Linux
 
Rancher master class globalized edge workloads with k3s
Rancher master class   globalized edge workloads with k3sRancher master class   globalized edge workloads with k3s
Rancher master class globalized edge workloads with k3s
 
Python for Delphi Developers - Part 2
Python for Delphi Developers - Part 2Python for Delphi Developers - Part 2
Python for Delphi Developers - Part 2
 
Meetup 2020 - Back to the Basics part 101 : IaC
Meetup 2020 - Back to the Basics part 101 : IaCMeetup 2020 - Back to the Basics part 101 : IaC
Meetup 2020 - Back to the Basics part 101 : IaC
 
MuleSoft Surat Virtual Meetup#34 - OAS 3.0 full API lifecycle support with An...
MuleSoft Surat Virtual Meetup#34 - OAS 3.0 full API lifecycle support with An...MuleSoft Surat Virtual Meetup#34 - OAS 3.0 full API lifecycle support with An...
MuleSoft Surat Virtual Meetup#34 - OAS 3.0 full API lifecycle support with An...
 
Revamping Mailjet API documentation @ ParisAPI meetup
Revamping Mailjet API documentation @ ParisAPI meetupRevamping Mailjet API documentation @ ParisAPI meetup
Revamping Mailjet API documentation @ ParisAPI meetup
 
平行化你的工作 part1
平行化你的工作 part1平行化你的工作 part1
平行化你的工作 part1
 
Python for Delphi Developers - Part 1 Introduction
Python for Delphi Developers - Part 1 IntroductionPython for Delphi Developers - Part 1 Introduction
Python for Delphi Developers - Part 1 Introduction
 
Guided overview of software frameworks qt framework
Guided overview of software frameworks   qt frameworkGuided overview of software frameworks   qt framework
Guided overview of software frameworks qt framework
 
Kotlin for Android
Kotlin for AndroidKotlin for Android
Kotlin for Android
 
Tycho Tutorial EclipseCon 2013
Tycho Tutorial EclipseCon 2013Tycho Tutorial EclipseCon 2013
Tycho Tutorial EclipseCon 2013
 
Getting started with the NDK
Getting started with the NDKGetting started with the NDK
Getting started with the NDK
 
Ruby in mule
Ruby in muleRuby in mule
Ruby in mule
 
JBUG 11 - Outside The Java Box
JBUG 11 - Outside The Java BoxJBUG 11 - Outside The Java Box
JBUG 11 - Outside The Java Box
 
LSM 2011 AdaLabs presentation slides: How to make my business opensource & vi...
LSM 2011 AdaLabs presentation slides: How to make my business opensource & vi...LSM 2011 AdaLabs presentation slides: How to make my business opensource & vi...
LSM 2011 AdaLabs presentation slides: How to make my business opensource & vi...
 
Agile Development with Smalltalk - Long
Agile Development with Smalltalk - LongAgile Development with Smalltalk - Long
Agile Development with Smalltalk - Long
 
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
 
Lua as a business logic language in high load application
Lua as a business logic language in high load applicationLua as a business logic language in high load application
Lua as a business logic language in high load application
 

Viewers also liked

Atmosphere 2014: RE:SPONSIBILITY - Matt Harasymczuk
Atmosphere 2014: RE:SPONSIBILITY - Matt HarasymczukAtmosphere 2014: RE:SPONSIBILITY - Matt Harasymczuk
Atmosphere 2014: RE:SPONSIBILITY - Matt HarasymczukPROIDEA
 
JDD2015: Ratpack: core of your micro-services - Andrey Adamovich
JDD2015: Ratpack: core of your micro-services - Andrey AdamovichJDD2015: Ratpack: core of your micro-services - Andrey Adamovich
JDD2015: Ratpack: core of your micro-services - Andrey AdamovichPROIDEA
 
Atmosphere 2014: Scaling and securing node.js apps - Maciej Lasyk
Atmosphere 2014: Scaling and securing node.js apps - Maciej LasykAtmosphere 2014: Scaling and securing node.js apps - Maciej Lasyk
Atmosphere 2014: Scaling and securing node.js apps - Maciej LasykPROIDEA
 
JDD2015: Migrating to continuous delivery in the world of financial trading -...
JDD2015: Migrating to continuous delivery in the world of financial trading -...JDD2015: Migrating to continuous delivery in the world of financial trading -...
JDD2015: Migrating to continuous delivery in the world of financial trading -...PROIDEA
 
JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...
JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...
JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...PROIDEA
 
CONFidence 2014: Alexander Timorin: SCADA deep inside: protocols and security...
CONFidence 2014: Alexander Timorin: SCADA deep inside: protocols and security...CONFidence 2014: Alexander Timorin: SCADA deep inside: protocols and security...
CONFidence 2014: Alexander Timorin: SCADA deep inside: protocols and security...PROIDEA
 
Atmosphere 2014: Centralized log management based on Logstash and Kibana - ca...
Atmosphere 2014: Centralized log management based on Logstash and Kibana - ca...Atmosphere 2014: Centralized log management based on Logstash and Kibana - ca...
Atmosphere 2014: Centralized log management based on Logstash and Kibana - ca...PROIDEA
 
CONFidence 2014: Dimitriy Chastuhin: All your sap p@$$w0яd z belong to us
CONFidence 2014: Dimitriy Chastuhin:  All your sap p@$$w0яd z belong to usCONFidence 2014: Dimitriy Chastuhin:  All your sap p@$$w0яd z belong to us
CONFidence 2014: Dimitriy Chastuhin: All your sap p@$$w0яd z belong to usPROIDEA
 
Atmosphere 2014: JUnit: beyond the basics - Adam Dudczak
Atmosphere 2014: JUnit: beyond the basics - Adam DudczakAtmosphere 2014: JUnit: beyond the basics - Adam Dudczak
Atmosphere 2014: JUnit: beyond the basics - Adam DudczakPROIDEA
 
CONFidence 2014: Vlatko Kosturjak: Exploring treasures of 77FEh
CONFidence 2014: Vlatko Kosturjak: Exploring treasures of 77FEhCONFidence 2014: Vlatko Kosturjak: Exploring treasures of 77FEh
CONFidence 2014: Vlatko Kosturjak: Exploring treasures of 77FEhPROIDEA
 
Atmosphere 2014: Helping the Internet to scale since 1998 - Paweł Kuśmierski
Atmosphere 2014: Helping the Internet to scale since 1998 - Paweł KuśmierskiAtmosphere 2014: Helping the Internet to scale since 1998 - Paweł Kuśmierski
Atmosphere 2014: Helping the Internet to scale since 1998 - Paweł KuśmierskiPROIDEA
 
JDD2015: Trudne Rozmowy [WORKSHOP] - Mariusz Sieraczkiewicz
JDD2015: Trudne Rozmowy [WORKSHOP] - Mariusz SieraczkiewiczJDD2015: Trudne Rozmowy [WORKSHOP] - Mariusz Sieraczkiewicz
JDD2015: Trudne Rozmowy [WORKSHOP] - Mariusz SieraczkiewiczPROIDEA
 
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...PROIDEA
 
PLNOG15 :Contagious SDN - consequences of dealing with it, Paweł Korzec
PLNOG15 :Contagious SDN - consequences of dealing with it, Paweł KorzecPLNOG15 :Contagious SDN - consequences of dealing with it, Paweł Korzec
PLNOG15 :Contagious SDN - consequences of dealing with it, Paweł KorzecPROIDEA
 
PLNOG15: NFV: Lessons learned from production deployments and current observa...
PLNOG15: NFV: Lessons learned from production deployments and current observa...PLNOG15: NFV: Lessons learned from production deployments and current observa...
PLNOG15: NFV: Lessons learned from production deployments and current observa...PROIDEA
 
PLNOG15: Cisco Application Centric Infrastructure - why ...? - Krzysztof Mazepa
PLNOG15: Cisco Application Centric Infrastructure - why ...? - Krzysztof MazepaPLNOG15: Cisco Application Centric Infrastructure - why ...? - Krzysztof Mazepa
PLNOG15: Cisco Application Centric Infrastructure - why ...? - Krzysztof MazepaPROIDEA
 
4Developers: Jak nie zasnąć na telekonferencjach? - Paweł Wrzeszcz
4Developers: Jak nie zasnąć na telekonferencjach? - Paweł Wrzeszcz4Developers: Jak nie zasnąć na telekonferencjach? - Paweł Wrzeszcz
4Developers: Jak nie zasnąć na telekonferencjach? - Paweł WrzeszczPROIDEA
 
PLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
PLNOG15: Yang - latin of XXI centaury - Sławomir JanukowiczPLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
PLNOG15: Yang - latin of XXI centaury - Sławomir JanukowiczPROIDEA
 

Viewers also liked (20)

Atmosphere 2014: RE:SPONSIBILITY - Matt Harasymczuk
Atmosphere 2014: RE:SPONSIBILITY - Matt HarasymczukAtmosphere 2014: RE:SPONSIBILITY - Matt Harasymczuk
Atmosphere 2014: RE:SPONSIBILITY - Matt Harasymczuk
 
JDD2015: Ratpack: core of your micro-services - Andrey Adamovich
JDD2015: Ratpack: core of your micro-services - Andrey AdamovichJDD2015: Ratpack: core of your micro-services - Andrey Adamovich
JDD2015: Ratpack: core of your micro-services - Andrey Adamovich
 
Atmosphere 2014: Scaling and securing node.js apps - Maciej Lasyk
Atmosphere 2014: Scaling and securing node.js apps - Maciej LasykAtmosphere 2014: Scaling and securing node.js apps - Maciej Lasyk
Atmosphere 2014: Scaling and securing node.js apps - Maciej Lasyk
 
JDD2015: Migrating to continuous delivery in the world of financial trading -...
JDD2015: Migrating to continuous delivery in the world of financial trading -...JDD2015: Migrating to continuous delivery in the world of financial trading -...
JDD2015: Migrating to continuous delivery in the world of financial trading -...
 
JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...
JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...
JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...
 
CONFidence 2014: Alexander Timorin: SCADA deep inside: protocols and security...
CONFidence 2014: Alexander Timorin: SCADA deep inside: protocols and security...CONFidence 2014: Alexander Timorin: SCADA deep inside: protocols and security...
CONFidence 2014: Alexander Timorin: SCADA deep inside: protocols and security...
 
Atmosphere 2014: Centralized log management based on Logstash and Kibana - ca...
Atmosphere 2014: Centralized log management based on Logstash and Kibana - ca...Atmosphere 2014: Centralized log management based on Logstash and Kibana - ca...
Atmosphere 2014: Centralized log management based on Logstash and Kibana - ca...
 
CONFidence 2014: Dimitriy Chastuhin: All your sap p@$$w0яd z belong to us
CONFidence 2014: Dimitriy Chastuhin:  All your sap p@$$w0яd z belong to usCONFidence 2014: Dimitriy Chastuhin:  All your sap p@$$w0яd z belong to us
CONFidence 2014: Dimitriy Chastuhin: All your sap p@$$w0яd z belong to us
 
Atmosphere 2014: JUnit: beyond the basics - Adam Dudczak
Atmosphere 2014: JUnit: beyond the basics - Adam DudczakAtmosphere 2014: JUnit: beyond the basics - Adam Dudczak
Atmosphere 2014: JUnit: beyond the basics - Adam Dudczak
 
CONFidence 2014: Vlatko Kosturjak: Exploring treasures of 77FEh
CONFidence 2014: Vlatko Kosturjak: Exploring treasures of 77FEhCONFidence 2014: Vlatko Kosturjak: Exploring treasures of 77FEh
CONFidence 2014: Vlatko Kosturjak: Exploring treasures of 77FEh
 
Atmosphere 2014: Helping the Internet to scale since 1998 - Paweł Kuśmierski
Atmosphere 2014: Helping the Internet to scale since 1998 - Paweł KuśmierskiAtmosphere 2014: Helping the Internet to scale since 1998 - Paweł Kuśmierski
Atmosphere 2014: Helping the Internet to scale since 1998 - Paweł Kuśmierski
 
JDD2015: Trudne Rozmowy [WORKSHOP] - Mariusz Sieraczkiewicz
JDD2015: Trudne Rozmowy [WORKSHOP] - Mariusz SieraczkiewiczJDD2015: Trudne Rozmowy [WORKSHOP] - Mariusz Sieraczkiewicz
JDD2015: Trudne Rozmowy [WORKSHOP] - Mariusz Sieraczkiewicz
 
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...
 
PLNOG15 :Contagious SDN - consequences of dealing with it, Paweł Korzec
PLNOG15 :Contagious SDN - consequences of dealing with it, Paweł KorzecPLNOG15 :Contagious SDN - consequences of dealing with it, Paweł Korzec
PLNOG15 :Contagious SDN - consequences of dealing with it, Paweł Korzec
 
Introduction to HTML
Introduction to HTMLIntroduction to HTML
Introduction to HTML
 
PLNOG15: NFV: Lessons learned from production deployments and current observa...
PLNOG15: NFV: Lessons learned from production deployments and current observa...PLNOG15: NFV: Lessons learned from production deployments and current observa...
PLNOG15: NFV: Lessons learned from production deployments and current observa...
 
PLNOG15: Cisco Application Centric Infrastructure - why ...? - Krzysztof Mazepa
PLNOG15: Cisco Application Centric Infrastructure - why ...? - Krzysztof MazepaPLNOG15: Cisco Application Centric Infrastructure - why ...? - Krzysztof Mazepa
PLNOG15: Cisco Application Centric Infrastructure - why ...? - Krzysztof Mazepa
 
4Developers: Jak nie zasnąć na telekonferencjach? - Paweł Wrzeszcz
4Developers: Jak nie zasnąć na telekonferencjach? - Paweł Wrzeszcz4Developers: Jak nie zasnąć na telekonferencjach? - Paweł Wrzeszcz
4Developers: Jak nie zasnąć na telekonferencjach? - Paweł Wrzeszcz
 
Interest
InterestInterest
Interest
 
PLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
PLNOG15: Yang - latin of XXI centaury - Sławomir JanukowiczPLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
PLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
 

Similar to Fastest Java Virtual Machine Using Graal and Truffle

Coding from Application Container Cloud to Oracle JET
Coding from Application Container Cloud to Oracle JETCoding from Application Container Cloud to Oracle JET
Coding from Application Container Cloud to Oracle JETGeertjan Wielenga
 
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...Bart Jonkers
 
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světěJaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světěDevelcz
 
Graal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution PlatformGraal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution PlatformThomas Wuerthinger
 
Introducing Fn Project
Introducing Fn ProjectIntroducing Fn Project
Introducing Fn ProjectAyumu Aizawa
 
MWLUG - Universal Java
MWLUG  -  Universal JavaMWLUG  -  Universal Java
MWLUG - Universal JavaPhilippe Riand
 
Lightweight Java in the Cloud
Lightweight Java in the CloudLightweight Java in the Cloud
Lightweight Java in the CloudBruno Borges
 
Kolla - containerizing the cloud itself
Kolla - containerizing the cloud itselfKolla - containerizing the cloud itself
Kolla - containerizing the cloud itselfMichal Rostecki
 
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 1Curity
 
10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScript10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScriptGeertjan Wielenga
 
Microservices and Container
Microservices and ContainerMicroservices and Container
Microservices and ContainerWolfgang Weigend
 
Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.Oracle Developers
 
Building and Deploying Cloud Native Applications
Building and Deploying Cloud Native ApplicationsBuilding and Deploying Cloud Native Applications
Building and Deploying Cloud Native ApplicationsManish Kapur
 
Cloud Native Meetup Santa Clara 07-11-2019 by Manish Kapur
Cloud Native Meetup Santa Clara 07-11-2019 by Manish KapurCloud Native Meetup Santa Clara 07-11-2019 by Manish Kapur
Cloud Native Meetup Santa Clara 07-11-2019 by Manish KapurOracle Developers
 
Java v/s .NET - Which is Better?
Java v/s .NET - Which is Better?Java v/s .NET - Which is Better?
Java v/s .NET - Which is Better?NIIT India
 
Graal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian WimmerGraal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian WimmerThomas Wuerthinger
 
WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015Pavel Bucek
 
Polyglot! A Lightweight Cloud Platform for Java SE, Node, and More
Polyglot! A Lightweight Cloud Platform for Java SE, Node, and MorePolyglot! A Lightweight Cloud Platform for Java SE, Node, and More
Polyglot! A Lightweight Cloud Platform for Java SE, Node, and MoreShaun Smith
 

Similar to Fastest Java Virtual Machine Using Graal and Truffle (20)

Coding from Application Container Cloud to Oracle JET
Coding from Application Container Cloud to Oracle JETCoding from Application Container Cloud to Oracle JET
Coding from Application Container Cloud to Oracle JET
 
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...
 
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světěJaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
 
Graal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution PlatformGraal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution Platform
 
Introducing Fn Project
Introducing Fn ProjectIntroducing Fn Project
Introducing Fn Project
 
MWLUG - Universal Java
MWLUG  -  Universal JavaMWLUG  -  Universal Java
MWLUG - Universal Java
 
Lightweight Java in the Cloud
Lightweight Java in the CloudLightweight Java in the Cloud
Lightweight Java in the Cloud
 
Kolla - containerizing the cloud itself
Kolla - containerizing the cloud itselfKolla - containerizing the cloud itself
Kolla - containerizing the cloud itself
 
Serverless Kotlin
Serverless KotlinServerless Kotlin
Serverless Kotlin
 
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
 
10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScript10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScript
 
Microservices and Container
Microservices and ContainerMicroservices and Container
Microservices and Container
 
JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...
JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...
JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...
 
Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.
 
Building and Deploying Cloud Native Applications
Building and Deploying Cloud Native ApplicationsBuilding and Deploying Cloud Native Applications
Building and Deploying Cloud Native Applications
 
Cloud Native Meetup Santa Clara 07-11-2019 by Manish Kapur
Cloud Native Meetup Santa Clara 07-11-2019 by Manish KapurCloud Native Meetup Santa Clara 07-11-2019 by Manish Kapur
Cloud Native Meetup Santa Clara 07-11-2019 by Manish Kapur
 
Java v/s .NET - Which is Better?
Java v/s .NET - Which is Better?Java v/s .NET - Which is Better?
Java v/s .NET - Which is Better?
 
Graal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian WimmerGraal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian Wimmer
 
WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015
 
Polyglot! A Lightweight Cloud Platform for Java SE, Node, and More
Polyglot! A Lightweight Cloud Platform for Java SE, Node, and MorePolyglot! A Lightweight Cloud Platform for Java SE, Node, and More
Polyglot! A Lightweight Cloud Platform for Java SE, Node, and More
 

Recently uploaded

ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxnada99848
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 

Recently uploaded (20)

ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptx
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 

Fastest Java Virtual Machine Using Graal and Truffle

  • 1. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
  • 2. Copyright © 2015 Oracle and/or its affiliates. All rights reserved.Copyright © 2015 Oracle and/or its affiliates. All rights reserved. @JaroslavTulach Oracle Labs On the Quest Towards Fastest (Java) Virtual Machine on the Planet!
  • 3. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Jaroslav Tulach 1 2 3 4 NetBeans Founder NetBeans Initial Architect Practical API Design book Oracle Labs: Graal/Truffle
  • 4. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Program Agenda 1 2 3 4 The Vision Graal VM Truffle Languages References & Discussion
  • 5. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle Labs Vision ● Vision without speculation would be today's reality ● Radical innovation ● New approach to existing technologies ● Research + Engineering ● Hardware & Software ● Engineered to work together ● Java/bytecode/IR/assembly/processors/memory
  • 6. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Graal Compiler Vision Statement “Create an extensible, modular, dynamic, and aggressive compiler using object-oriented and reflective Java programming, a graph-based and visualizable intermediate representation, and Java snippets.” Thomas Würthinger
  • 7. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Graal Virtual Machine • Modern alternative to HotSpot C2 l Maintainable code base l Toolable, approachable l Ready for today's code l JEP 243: Java Compiler Interface • Partial evaluation • Aggressive speculations • Smooth de-optimizations
  • 8. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Truffle: “Write Your Own Language” Prototype a new language Parser and language work to build syntax tree (AST), AST Interpreter Write a “real” VM In C/C++, still using AST interpreter, spend a lot of time implementing runtime system, GC, … People start using it Define a bytecode format and write bytecode interpreter People complain about performance Write a JIT compiler Improve the garbage collector Performance is still bad Prototype a new language in Java Parser and language work to build syntax tree (AST) Execute using AST interpreter Integrate with VM-building framework Integrate with Modular VM Add small language-specific parts People start using it And it is already fast Current situation How it should be
  • 9. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | A Spectrum of Programming Languages Static typing Faster execution Targeting larger projects More flexible Easier to use Targeting exploratory programming, rapid prototyping, domain-specific programming, customization of existing applications Java, C# Visual Basic Python, Ruby R There is no single language that fulfills all needs JavaScript Do you care about your code or your data?
  • 10. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. 10 3 One VM for all languages means interoperability and being able to choose the best language for the task! Lowerisbetter The goal:
  • 11. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. 11 You can execute any language on the JVM / CLR - as long as it looks like Java / C#.
  • 12. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. 12 C
  • 13. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. 13 a + b Objectint String
  • 14. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. 14 U U U U U I I I G G I I I G G NodeRewriting for ProfilingFeedback AST Interpreter Rewritten Nodes AST Interpreter Uninitialized Nodes Compilationusing Partial Evaluation Compiled Code Node Transitions S U I D G Uninitialized Integer Generic DoubleString
  • 15. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. 15 I I I G G I I I G G Deoptimization toASTInterpreter D I D G G D I D G G NodeRewritingtoUpdate ProfilingFeedback Recompilationusing Partial Evaluation
  • 16. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Safe Harbor Statement The preceding and 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.
  • 17. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Demo The Speed(s) of Ruby
  • 18. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Multi, Multi, Multi, Multi, Multi VM ● Multi-language ● Multi-threaded ● Multi-tenant ● Multi-node ● Multi-tooling
  • 19. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Multi Language • Single launcher for all tenant = PolyglotEngine.buildNew().config(...).build(); fourtyTwo = tenant.eval(“text/x-javascript”, “32 + 10”); twoAndFourty = tenant.eval(“application/x-ruby”, “10 + 32”); • Languages can export and import symbols window = tenant.findGlobalSymbol(“window”); // and JavaScript provides it by overriding @Override protected Object findGlobalSymbol(String name) { return “window”.equals(name) ? jsWindowGlobal : null; } 19
  • 20. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Multi Tenant • Create as many tenants as needed tenant1 = PolyglotEngine.buildNew().config(...).build(); tenant2 = PolyglotEngine.buildNew().config(...).build(); fourtyTwo = tenant1.eval(“text/x-javascript”, “x = this.x ? x + 1 : 42”); // sees previous value in x: fourtyThree = tenant1.eval(“text/x-javascript”, “x = this.x ? x + 1 : 42”); // no x defined, as this is different tenant: twoAndFourty = tenant2.eval(“text/x-javascript”, “x = this.x ? x + 1 : 42”); • Isolation enforced by TCK 20
  • 21. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Multi Threaded • PolyglotEngine is inherently single-threaded API l Access from a single (creator) thread enforced • Easy to dispatch execution to different thread tenantAsync = PolyglotEngine.buildNew() .executor(Executors.newSingleThreadedExecutor()) .build(); • Tenants can exchange messages – Orchestrate multiple tenants running in parallel from a single thread 21
  • 22. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Multi Node (under consideration) • PolyglotEngine as a facade for remote object protocol tenantAway = PolyglotEngine.buildNew() .nodeIP(“192.168.34.65”) // the execution will happen on different node .build(); result = tenantAway.eval(“text/javascript”, “'Remote and slow ' + 42”); • Keeping the same API facade: PolyglotEngine – Get multi language, multi threaded, multi tenant – Multi tooling and multi node virtual machine! 22
  • 23. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Multi Tooling • JPDA debugging always on l Attach Java IDE and all Truffle language details will be shown • Turn on your debugger protocol tenantWithDebugger = PolyglotEngine.buildNew() .onEvent(new ExecutionEventHandler() {…}) .onEvent(new SuspendedEventHandler() {…}) .build(); • Other instrumentation based tools available as well 23
  • 24. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Demo Polyglot Debugging
  • 25. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | The Fastest (J)VM on the Planet • Try it now! – Download jvm: http://www.oracle.com/technetwork/oracle-labs/program-languages/ – Open source: ● http://openjdk.java.net/projects/graal/ ● https://github.com/graalvm – JRuby, Python, JavaScript, R, C • Speed is Great! – In need of completeness • We are hiring!
  • 26. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Editor's Notes

  1. This is a Safe Harbor Front slide, one of two Safe Harbor Statement slides included in this template. One of the Safe Harbor slides must be used if your presentation covers material affected by Oracle’s Revenue Recognition Policy To learn more about this policy, e-mail: Revrec-americasiebc_us@oracle.com For internal communication, Safe Harbor Statements are not required. However, there is an applicable disclaimer (Exhibit E) that should be used, found in the Oracle Revenue Recognition Policy for Future Product Communications. Copy and paste this link into a web browser, to find out more information.   http://my.oracle.com/site/fin/gfo/GlobalProcesses/cnt452504.pdf For all external communications such as press release, roadmaps, PowerPoint presentations, Safe Harbor Statements are required. You can refer to the link mentioned above to find out additional information/disclaimers required depending on your audience.
  2. This slide can also be used as a Q and A slide
  3. This slide can also be used as a Q and A slide