Top Banner
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
28

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Jul 14, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

Page 2: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. Copyright © 2006 Oracle and/or its affiliates. All rights reserved.

@JaroslavTulachOracle Labs

Dynamický překladPrakticky!

Page 3: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Jaroslav Tulach

1

2

3

4

NetBeans Founder – 20 years ago

NetBeans Initial Architect – up to 2001

Practical API Design book – published 2008

Java/JavaScript/co. Interop – 2012 - now

Oracle Labs: Graal/Truffle – 2015 - now5

Page 4: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 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.

Page 5: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

● Xelfi student project: Java 1.0.2● AWT, Applets, 1st Java IDE written in Java

● NetBeans 2.0: Java 1.1● Swing preview, JavaBeans, Classpath model

● NetBeans 2.X: Java 1.2● Support for javax.swing

● NetBeans 3.0● Acquired by Sun Microsystems

● Open Sourced, May 2000

Java History from NetBeans Perspective

Page 6: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

● Epilogue of the API book● University vs. software engineering

● Amazed by my first Linz visit

● Make a useful contribution!● No more: create and throw away

● Tons of GitHub repositories (Truffle/Graal related)

● Create a PR and make them accept it

● Summer internship offer

Make it Practical!

http://practical.apidesign.org

Page 7: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Program Agenda

1 Graal VM overview

3 Talk to your compiler

2 Speed up your language

4 Ahead of time compilation

5 Tools – debugger, profiler & co.

6 Static languages on JVM

Page 8: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 8

Aren’t you Already a Polyglot?

Page 9: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

● 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

OracleLabs Vision

Page 10: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 10

Systems come with Various Interfaces

Page 11: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 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#.

Page 12: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 12

??

Can we Connect the Polyglots… Easily!?

Page 13: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

DemoSieve of Eratosthenes with many Polyglot Flavors

Page 14: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 14

GraalVM: One VM to Rule them all!

Page 15: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 15

Graal Vision

High performance for all languages

Shared infrastructure and tooling across languages

Zero overhead interoperability between languages

Page 16: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

• Modern alternative to HotSpot C2l 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

Graal Virtual Machine

Page 17: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

DemoUnderstanding Your Compiler

Page 18: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

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 compilerImprove 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 VMAdd small language-specific parts

People start using it

And it is already fast

Current situation How it should be

Truffle: Write your own language!

Page 19: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

DemoDebugger, profiler, coverage & other tooling for free

Page 20: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Static typing

Faster execution

Targeting larger projectsthat care about code

More flexible

Easier to use

Targeting exploratory programming,rapid prototyping, scripting

Java, C#

Visual Basic

Python, Ruby

R

Are C, C++, Java domain specific languages?

JavaScript

Do you care about code or data?

Page 21: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. 21

3

One VM for all languages means interoperability and being able to

choose the best language for the task!

Low

er

is b

ett

er

The goal:

The Power of Interop with Full Speed!

Page 22: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 22

Java HotSpot VM

JVM Compiler Interface (JVMCI) JEP 243

Graal Compiler

Truffle Framework

Sulong (LLVM)

GraalVM Architecture

Page 23: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

● Dynamic compilation● Speculation needs metadata to deoptimize

● Ahead of Time Compilation: SubstrateVM● Compile bytecode (Java, Kotlin, Scala) to native code

● Native speed

● Java goes native● Compile Java libraries to native ones

● Embed into existing runtimes

Fast Startup + Low Overhead

Page 24: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

DemoAhead-of-time compilation

Page 25: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. 25

a + b

Objectint String

The Biggest Problem of Dynamic Languages

Page 26: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. 26

U

U U

U

U I

I I

G

G I

I I

G

G

Node Rewriting for Profiling Feedback

AST InterpreterRewritten Nodes

AST InterpreterUninitialized Nodes

Compilation usingPartial Evaluation

Compiled Code

Node Transitions

S

U

I

D

G

Uninitialized Integer

Generic

DoubleString

How Does it Work?

Page 27: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. 27

I

I I

G

G I

I I

G

G

Deoptimizationto AST Interpreter

D

I D

G

G D

I D

G

G

Node Rewriting to Update Profiling Feedback

Recompilation usingPartial Evaluation

In case of Invalid Assumptions...

Page 28: Copyright © 2014 Oracle and/or its affiliates. All rights reserved. · Xelfi student project: Java 1.0.2 AWT, Applets, 1st Java IDE written in Java NetBeans 2.0: Java 1.1 Swing preview,

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Become Polyglot!• Try it now!

– Download JVM: http://graalvm.org

– Open source: http://github.com/oracle/graal

• Mix it all!– JRuby, Python, JavaScript, R, C, node.js

• Speed your own language up!– Propose a language – [email protected]

• We are hiring! Praha, Zurich, Linz