OpenJDK & Graal
(부제: 자바 생태계의 미래)
Sooyeol, Yang
Oracle Ace, Java Champion
OnFace co.,Ltd , @javaoracle
Java is ….
Java is ….
Language
Platform
Cloud is ….
History and Multi-Dimensional Evolution of Computing
6
7
Cloud Native Environment-I
8
Cloud Native Environment-II
App Definition &
Development:
Observability &
Analysis Prometheus Fluentd Crashcart
Jenkins X Wercker Helm MySQL Spark Kafka
Orchestration &
Management:
Runtime: Docker Kata CRI-O CNI – Calico & Flannel Ceph Gluster
Provisioning: Terraform Vagrant Ansible Chef Puppet Clair Notary
Kubernetes Istio Envoy
We will Continually Enhance and Improve as the Technology Evolves
• Multi-container apps
• Scheduling
• Service Discovery
• Maintaining Desired State
• Orchestration as a service
• Hosted Container Runtime
• Minimize operational overhead
Container Orchestration And Containers as a Service (CaaS)
9
10
The Containerization Journey
Phase I
Developer Focus
Phase II
DevOps Focus
Phase III
Business Focus
Container Adoption Application Deployment Business Integration
SpeedEfficiencyAgility
Docker
Kubernetes
Container
DevOps
Container Centric
User: DevOps / SRE
granular control
highly scriptable
deep introspection
open
PaaS
User: Web/Mobile Dev
limited control
prescriptive
limited introspection
short/efficient onramp
affixed to environment
Enterprise Java/DB
User: Operations
tightly controlled for
consistency
uniform tooling
designed for seamlessness
Visual/Low Code
User: Line of Business
no exposure to
controls
intuitive / UI based
integrated into a suite
low/no complexity
Application Development Spectrum of Users & Needs
Serverless
f(x)
High Control/Productivity vs Prescriptive/Productivity
11
Open Innovation
12
Active Community Participation Innovate in Open Source
railcar
smith
crashcart
Open Sourcing Docker & K8s Utilities
K8S
installer
13
Plethora of Languages
What About Serverless?
• Category of cloud services that raises the abstraction level so that
developers never think about servers, VM’s, and other IaaS components
• Functions-as-a-Service (FaaS) forms the application programming model of
a serverless architecture used in conjunction with data services
• Increases developer productivity and agility while reducing cost
• Services scale per function and customers do not pay for idle
Traditional
infrastructure
Virtualized
infrastructure
FaaS
Compute on demand
14
The Open Source Fn Project – More and More FDKs!
FDKs
Fn Server Fn Flow
http://fnproject.io
15
Cloud Serverless Functions
a functions (triggered events) based platform
• Polyglot function platform based on
Fn (fnproject.io)
• Container Based with Local
Developer Experience
• Cloud and Scheduler Neutral
• Programmatic, multi-function
orchestration with Fn Flow
• Helm charts for Kubernetes
integration
Function
CI/CD
Local
Develop
Fn Flow
Polyglot Function Engine
fn fn fn fn
OCI Container Engine for Kubernetes
16
17
So What?
18
Overview of Compiler
• Compiler???
– The javac tool performs static compilation of Java sources to bytecode
– The JVM may perform dynamic compilation of bytecode to machine code for
optimization using a JIT (Just-in-Time) compiler
• Compiler control (JEP 165)
– Control of C1/C2 JIT, not javac
– Directive file
– Runtime changes via jcmd
19
EXPERIMENTAL JAVA-BASED JIT COMPILER(Java 10)
• A just-in-time (JIT) compiler translates programming code into fast, efficient
machine- optimized computer code only a few moments before it’s needed
by the application. Thanks to the rapid iterations of software driven by the
Java release cadence, developers can get their hands on Graal, an
experimental JIT now included with OpenJDK in Java 10.
• Graal is the basis of the experimental Java ahead-of-time (AOT) compiler,
which was first introduced in JDK 9. Enabling it to be used as an
experimental JIT compiler in Java 10 is one of the initiatives of Project
Metropolis, and is the next step in investigating the feasibility of a Java-
based JIT for the JDK. Graal has the potential to improve application
performance by aggressively optimizing code for specific microprocessor
architectures.
20
GraalVM – High-Performance Polyglot VM
Polyglot Embeddable Performance
Graal Compiler
HotSpot VM Substrate VM
JS R Ruby Python
LLVM
(C, C++,
Fortran, Go)
22
23
Questions?
24
감사합니다.
24
@javaoracle
Thank You
25

OpenJDK & Graalvm

  • 1.
    OpenJDK & Graal (부제:자바 생태계의 미래) Sooyeol, Yang Oracle Ace, Java Champion OnFace co.,Ltd , @javaoracle
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
    History and Multi-DimensionalEvolution of Computing 6
  • 7.
  • 8.
    8 Cloud Native Environment-II AppDefinition & Development: Observability & Analysis Prometheus Fluentd Crashcart Jenkins X Wercker Helm MySQL Spark Kafka Orchestration & Management: Runtime: Docker Kata CRI-O CNI – Calico & Flannel Ceph Gluster Provisioning: Terraform Vagrant Ansible Chef Puppet Clair Notary Kubernetes Istio Envoy We will Continually Enhance and Improve as the Technology Evolves
  • 9.
    • Multi-container apps •Scheduling • Service Discovery • Maintaining Desired State • Orchestration as a service • Hosted Container Runtime • Minimize operational overhead Container Orchestration And Containers as a Service (CaaS) 9
  • 10.
    10 The Containerization Journey PhaseI Developer Focus Phase II DevOps Focus Phase III Business Focus Container Adoption Application Deployment Business Integration SpeedEfficiencyAgility Docker Kubernetes Container DevOps
  • 11.
    Container Centric User: DevOps/ SRE granular control highly scriptable deep introspection open PaaS User: Web/Mobile Dev limited control prescriptive limited introspection short/efficient onramp affixed to environment Enterprise Java/DB User: Operations tightly controlled for consistency uniform tooling designed for seamlessness Visual/Low Code User: Line of Business no exposure to controls intuitive / UI based integrated into a suite low/no complexity Application Development Spectrum of Users & Needs Serverless f(x) High Control/Productivity vs Prescriptive/Productivity 11
  • 12.
    Open Innovation 12 Active CommunityParticipation Innovate in Open Source railcar smith crashcart Open Sourcing Docker & K8s Utilities K8S installer
  • 13.
  • 14.
    What About Serverless? •Category of cloud services that raises the abstraction level so that developers never think about servers, VM’s, and other IaaS components • Functions-as-a-Service (FaaS) forms the application programming model of a serverless architecture used in conjunction with data services • Increases developer productivity and agility while reducing cost • Services scale per function and customers do not pay for idle Traditional infrastructure Virtualized infrastructure FaaS Compute on demand 14
  • 15.
    The Open SourceFn Project – More and More FDKs! FDKs Fn Server Fn Flow http://fnproject.io 15
  • 16.
    Cloud Serverless Functions afunctions (triggered events) based platform • Polyglot function platform based on Fn (fnproject.io) • Container Based with Local Developer Experience • Cloud and Scheduler Neutral • Programmatic, multi-function orchestration with Fn Flow • Helm charts for Kubernetes integration Function CI/CD Local Develop Fn Flow Polyglot Function Engine fn fn fn fn OCI Container Engine for Kubernetes 16
  • 17.
  • 18.
  • 19.
    Overview of Compiler •Compiler??? – The javac tool performs static compilation of Java sources to bytecode – The JVM may perform dynamic compilation of bytecode to machine code for optimization using a JIT (Just-in-Time) compiler • Compiler control (JEP 165) – Control of C1/C2 JIT, not javac – Directive file – Runtime changes via jcmd 19
  • 20.
    EXPERIMENTAL JAVA-BASED JITCOMPILER(Java 10) • A just-in-time (JIT) compiler translates programming code into fast, efficient machine- optimized computer code only a few moments before it’s needed by the application. Thanks to the rapid iterations of software driven by the Java release cadence, developers can get their hands on Graal, an experimental JIT now included with OpenJDK in Java 10. • Graal is the basis of the experimental Java ahead-of-time (AOT) compiler, which was first introduced in JDK 9. Enabling it to be used as an experimental JIT compiler in Java 10 is one of the initiatives of Project Metropolis, and is the next step in investigating the feasibility of a Java- based JIT for the JDK. Graal has the potential to improve application performance by aggressively optimizing code for specific microprocessor architectures. 20
  • 21.
    GraalVM – High-PerformancePolyglot VM Polyglot Embeddable Performance Graal Compiler HotSpot VM Substrate VM JS R Ruby Python LLVM (C, C++, Fortran, Go)
  • 22.
  • 23.
  • 24.
  • 25.