SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 2
Serverless Java
Shaun Smith
Director of Product Management
Oracle Cloud Infrastructure—Serverless
@shaunMsmith
May 18, 2019
Challenges and Triumphs
Copyright © 2019, 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, timing, and pricing of any
features or functionality described for Oracle’s products may change and remains at the
sole discretion of Oracle Corporation.
3
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 4
Serverless
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Serverless is an abstraction of infrastructure and its
operations including provisioning, scaling, patching, etc.
FaaS (Functions-as-a-Service) is the compute
component in a serverless platform
5
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 6
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Example Java Function
7
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Serverless Today
8
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 9
Interest in Serverless
Source: Google Trends
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 10
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 11
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 12
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 13
Source: https://jaxenter.com/technologies-dominate-2019-poll-152470.html
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Peak of Inflated Expectations
Plateau of Productivity
Slope of Enlightenment
Trough of Disillusionment
14
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Serverless Java?
15
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 16
https://blog.github.com/2018-11-15-state-of-the-octoverse-top-programming-languages/
Top programming languages by contributors as of September 30, 2018
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 17
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
New Relic: 9.1% of functions are Java 8!?
https://blog.newrelic.com
18
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Serverless.com: 6.1% of all functions are Java!?
https://serverless.com/blog/2018-serverless-community-survey-huge-growth-usage/
19
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Serveless.com, Large Companies > 1000: 14.9% Java
https://serverless.com/blog/2018-serverless-community-survey-huge-growth-usage/
20
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
And the Trend isn’t Great
https://serverless.com/blog/serverless-by-the-numbers-2018-data-report/
21
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
http://redmonk.com/jgovernor/2016/10/12/when-web-companies-grow-up-they-turn-into-java-shops
22
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Why isn’t Java popular for Functions?
• FaaS seen as a scripting platform for the web?
• Doesn't fit normal Java development patterns?
• Java not suitable for short-lived “apps”?
• Not supported?
–Google Cloud Functions—N/A
–AWS Lambda—Java support added June 2015
–Oracle Functions—Limited Availability Dec. 2018
–Azure Functions—Java 8 GA on Feb 2019
23
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Blueprint for Serverless Java
• “Plain old Java”
• Established toolchains
• Ability to build complex applications
• Low latency/high performance
• Java ecosystem
24
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
www.fnproject.io
25
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
• Open-source, Container Naive, Serverless Plajorm
• Apache v2 licence
• Run anywhere - Cloud / Datacenter / Laptop
• Fn ♥
• Funcions are containers
26
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 27
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 28
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Fn Java Function Development Kit (FDK)
• Docker Images
–A build image for repeatable builds
–An optimized runtime image
• JUnit Test Harness
• Maven support
• Input/output coercion
• Flow
• …
29
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 30
Java Functions Demo!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Blueprint for Serverless Java
• “Plain old Java” ✓
• Established toolchains ✓
• Ability to build complex applications
• Low latency/high performance
• JVM ecosystem
31
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 32
Fn Flow
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Fn Flow
• Provides rich concurrency primitives including fork-join, chaining, delays
and error handling
• Java support based on Java 8 CompletableFuture API
• Build reliable and scalable FaaS applications
For long-running, reliable, scalable functions
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Fn Flow Demo
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
http://microservices.io/patterns/data/saga.html
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 36
Fn Flow Demo!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Blueprints for Serverless Java
• “Plain old Java” ✓
• Wide choice of good tooling ✓
• Ability to build complex applications ✓
• Low latency/high performance
• Rich JVM ecosystem
37
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Low Latency/High Performance – Java in Containers
What do we want containerized Java applications to do?
–Respect resource constraints
–Start fast
–Run fast
38
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Container Friendly Java – Respecting Resource Constraints
• JDK-8179498: attach in linux should be relaive
to /proc/pid/root and namespace aware as jcmd, jstack, etc. fail to
arach (resolved in JDK 10)
• JDK-8193710: jcmd -l and jps commands do not list Java processes
running in Docker containers (resolved in JDK 11)
• JDK-8203357: Container Metrics (resolved in JDK 11.0.1)
• JEP 318: Epsilon: A No-Op Garbage Collector (Experimental in JDK 11)
• …
39
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Fast Startup – Moving Costs to Build-Time
1. Class Data Sharing (CDS)
– Avoid parsing JDK classes on start
2. Application CDS
– Avoid parsing App classes on start
3. AOT compilation
– Compile App classes to native .so libraries (experimental)
40
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Fast Startup – Small Container Images
Small JVM container images means faster startup by reducing:
–Image to host transfer time
–Docker Copy on Write (COW) cache creation
–Docker Overlay FS setup
41
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Fast Startup — Building Smaller Java Container Images
1. Use jlink to remove unused core libraries
2. Start with small base images
3. GraaVM native image - compile Java to a static binary
42
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Fast Startup — Small Base Images
Security-oriented, lightweight Linux distribution
with 4MB base image
Lightweight, fast, simple, free, C standard library
implementation
43
Reduce OS layer size
Project Portola’s goal is to run the JVM on Alpine Linux/Musl
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Fast Startup — Smaller Java Applications
44
Reduce Java Runtime layer size - jlink
Modules JLink flags Mb
JDK 12 Whole JDK! 318.7
openjdk:11-jre-slim 11 (default) NB: openjdk:12-jre-slim not yet available! 217
JRE 12 all (explicit) --add-module $(java --list-modules) 168.3 100.0%
+ --no-header-files --no-man-pages --strip-debug 143.0 85.0%
+ --compress=1 107.8 64.1%
+ --compress=2 83.7 49.7%
Custom JRE 12 base, logging --add-module $(jdeps --print-module-deps func.jar) 47.4 28.2% 100.0%
+ --no-header-files --no-man-pages --strip-debug 41.6 24.7% 87.8%
+ --compress=2 32.0 19.0% 67.5%
OpenJDK (build 12-ea+29) - alpine:3.9 x86_64
318 Mb 168 Mb 47 Mb 32 Mb
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Fast Startup — Smaller Java Applications
• GraalVM compiles Java source to a single native binary
• Tiny image sizes
• Low VM overhead
45
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 46
GraalVM
Functions Demo!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Blueprint for Serverless Java
• “Plain old Java” ✓
• Wide choice of good tooling ✓
• Ability to build complex applications ✓
• Low latency/high performance ✓
• Rich JVM ecosystem ✓
47
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 48
Serverless Java?
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 49
Serverless Java? Absolutely!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Shaun Smith
fnproject.io
@shaunMsmith
50
Thank you!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 51

Contenu connexe

Tendances

JVMs in Containers - Best Practices
JVMs in Containers - Best PracticesJVMs in Containers - Best Practices
JVMs in Containers - Best PracticesDavid Delabassee
 
Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9Simon Ritter
 
Cloud Native Java GraalVM 이상과 현실
Cloud Native Java GraalVM 이상과 현실Cloud Native Java GraalVM 이상과 현실
Cloud Native Java GraalVM 이상과 현실Taewan Kim
 
Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014Simon Ritter
 
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemTecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemBruno Borges
 
Java: Create The Future Keynote
Java: Create The Future KeynoteJava: Create The Future Keynote
Java: Create The Future KeynoteSimon Ritter
 
JDK 9 Java Platform Module System
JDK 9 Java Platform Module SystemJDK 9 Java Platform Module System
JDK 9 Java Platform Module SystemWolfgang Weigend
 
JDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java SmallerJDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java SmallerSimon Ritter
 
A Java Implementer's Guide to Better Apache Spark Performance
A Java Implementer's Guide to Better Apache Spark PerformanceA Java Implementer's Guide to Better Apache Spark Performance
A Java Implementer's Guide to Better Apache Spark PerformanceTim Ellison
 
Melhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na NuvemMelhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na NuvemBruno Borges
 
JDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java SmallerJDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java SmallerSimon Ritter
 
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 JavaFXBruno Borges
 
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with OracleMobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with OracleChris Muir
 
JDK 9: Mission Accomplished. What Next For Java?
JDK 9: Mission Accomplished. What Next For Java?JDK 9: Mission Accomplished. What Next For Java?
JDK 9: Mission Accomplished. What Next For Java?Simon Ritter
 
Oracle ADF Architecture TV - Design - Architecting for ADF Mobile Integration
Oracle ADF Architecture TV - Design - Architecting for ADF Mobile IntegrationOracle ADF Architecture TV - Design - Architecting for ADF Mobile Integration
Oracle ADF Architecture TV - Design - Architecting for ADF Mobile IntegrationChris Muir
 
Introduction to JavaFX on Raspberry Pi
Introduction to JavaFX on Raspberry PiIntroduction to JavaFX on Raspberry Pi
Introduction to JavaFX on Raspberry PiBruno Borges
 
Oracle ADF Architecture TV - Design - ADF BC Application Module Design
Oracle ADF Architecture TV - Design - ADF BC Application Module DesignOracle ADF Architecture TV - Design - ADF BC Application Module Design
Oracle ADF Architecture TV - Design - ADF BC Application Module DesignChris Muir
 
Monitoring of Web Applications and GlassFish for Performance and Availability...
Monitoring of Web Applications and GlassFish for Performance and Availability...Monitoring of Web Applications and GlassFish for Performance and Availability...
Monitoring of Web Applications and GlassFish for Performance and Availability...SL Corporation
 

Tendances (20)

JVMs in Containers - Best Practices
JVMs in Containers - Best PracticesJVMs in Containers - Best Practices
JVMs in Containers - Best Practices
 
JDK 10 Java Module System
JDK 10 Java Module SystemJDK 10 Java Module System
JDK 10 Java Module System
 
Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9
 
Cloud Native Java GraalVM 이상과 현실
Cloud Native Java GraalVM 이상과 현실Cloud Native Java GraalVM 이상과 현실
Cloud Native Java GraalVM 이상과 현실
 
Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014
 
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemTecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
 
Java: Create The Future Keynote
Java: Create The Future KeynoteJava: Create The Future Keynote
Java: Create The Future Keynote
 
JDK 9 Java Platform Module System
JDK 9 Java Platform Module SystemJDK 9 Java Platform Module System
JDK 9 Java Platform Module System
 
JDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java SmallerJDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java Smaller
 
A Java Implementer's Guide to Better Apache Spark Performance
A Java Implementer's Guide to Better Apache Spark PerformanceA Java Implementer's Guide to Better Apache Spark Performance
A Java Implementer's Guide to Better Apache Spark Performance
 
Melhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na NuvemMelhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na Nuvem
 
JDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java SmallerJDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java Smaller
 
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
 
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with OracleMobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
 
JDK 9: Mission Accomplished. What Next For Java?
JDK 9: Mission Accomplished. What Next For Java?JDK 9: Mission Accomplished. What Next For Java?
JDK 9: Mission Accomplished. What Next For Java?
 
Oracle ADF Architecture TV - Design - Architecting for ADF Mobile Integration
Oracle ADF Architecture TV - Design - Architecting for ADF Mobile IntegrationOracle ADF Architecture TV - Design - Architecting for ADF Mobile Integration
Oracle ADF Architecture TV - Design - Architecting for ADF Mobile Integration
 
Introduction to JavaFX on Raspberry Pi
Introduction to JavaFX on Raspberry PiIntroduction to JavaFX on Raspberry Pi
Introduction to JavaFX on Raspberry Pi
 
Oracle ADF Architecture TV - Design - ADF BC Application Module Design
Oracle ADF Architecture TV - Design - ADF BC Application Module DesignOracle ADF Architecture TV - Design - ADF BC Application Module Design
Oracle ADF Architecture TV - Design - ADF BC Application Module Design
 
Monitoring of Web Applications and GlassFish for Performance and Availability...
Monitoring of Web Applications and GlassFish for Performance and Availability...Monitoring of Web Applications and GlassFish for Performance and Availability...
Monitoring of Web Applications and GlassFish for Performance and Availability...
 
JDK-9: Modules and Java Linker
JDK-9: Modules and Java LinkerJDK-9: Modules and Java Linker
JDK-9: Modules and Java Linker
 

Similaire à Serverless Java: JJUG CCC 2019

Serverless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsServerless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsDavid Delabassee
 
General Capabilities of GraalVM by Oleg Selajev @shelajev
General Capabilities of GraalVM by Oleg Selajev @shelajevGeneral Capabilities of GraalVM by Oleg Selajev @shelajev
General Capabilities of GraalVM by Oleg Selajev @shelajevOracle Developers
 
Why to Use an Oracle Database?
Why to Use an Oracle Database? Why to Use an Oracle Database?
Why to Use an Oracle Database? Markus Michalewicz
 
Docker Compose Setup for MySQL InnoDB Cluster
Docker Compose Setup for MySQL InnoDB ClusterDocker Compose Setup for MySQL InnoDB Cluster
Docker Compose Setup for MySQL InnoDB ClusterBalasubramanian Kandasamy
 
JDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKJDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKWolfgang Weigend
 
GraalVM: Run Programs Faster Everywhere
GraalVM: Run Programs Faster EverywhereGraalVM: Run Programs Faster Everywhere
GraalVM: Run Programs Faster EverywhereJ On The Beach
 
Functions and DevOps
Functions and DevOpsFunctions and DevOps
Functions and DevOpsShaun Smith
 
Node.js and Oracle Database: New Development Techniques
Node.js and Oracle Database: New Development TechniquesNode.js and Oracle Database: New Development Techniques
Node.js and Oracle Database: New Development TechniquesChristopher Jones
 
GlassFish in Production Environments
GlassFish in Production EnvironmentsGlassFish in Production Environments
GlassFish in Production EnvironmentsBruno Borges
 
Delivering Mobile Apps to the Field with Oracle
Delivering Mobile Apps to the Field with OracleDelivering Mobile Apps to the Field with Oracle
Delivering Mobile Apps to the Field with OracleSimon Haslam
 
Production Time Profiling Out of the Box
Production Time Profiling Out of the BoxProduction Time Profiling Out of the Box
Production Time Profiling Out of the BoxMarcus Hirt
 
Serverless Patterns by Jesse Butler
Serverless Patterns by Jesse ButlerServerless Patterns by Jesse Butler
Serverless Patterns by Jesse ButlerOracle Developers
 
20200613 my sql-ha-deployment
20200613 my sql-ha-deployment20200613 my sql-ha-deployment
20200613 my sql-ha-deploymentIvan Ma
 
Confoo 202 - MySQL Group Replication and ReplicaSet
Confoo 202 - MySQL Group Replication and ReplicaSetConfoo 202 - MySQL Group Replication and ReplicaSet
Confoo 202 - MySQL Group Replication and ReplicaSetDave Stokes
 
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...scalaconfjp
 
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
 
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
 

Similaire à Serverless Java: JJUG CCC 2019 (20)

Serverless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsServerless Java Challenges & Triumphs
Serverless Java Challenges & Triumphs
 
JVMs in Containers
JVMs in ContainersJVMs in Containers
JVMs in Containers
 
General Capabilities of GraalVM by Oleg Selajev @shelajev
General Capabilities of GraalVM by Oleg Selajev @shelajevGeneral Capabilities of GraalVM by Oleg Selajev @shelajev
General Capabilities of GraalVM by Oleg Selajev @shelajev
 
Java Cloud and Container Ready
Java Cloud and Container ReadyJava Cloud and Container Ready
Java Cloud and Container Ready
 
Why to Use an Oracle Database?
Why to Use an Oracle Database? Why to Use an Oracle Database?
Why to Use an Oracle Database?
 
Docker Compose Setup for MySQL InnoDB Cluster
Docker Compose Setup for MySQL InnoDB ClusterDocker Compose Setup for MySQL InnoDB Cluster
Docker Compose Setup for MySQL InnoDB Cluster
 
JDK versions and OpenJDK
JDK versions and OpenJDKJDK versions and OpenJDK
JDK versions and OpenJDK
 
JDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKJDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDK
 
GraalVM: Run Programs Faster Everywhere
GraalVM: Run Programs Faster EverywhereGraalVM: Run Programs Faster Everywhere
GraalVM: Run Programs Faster Everywhere
 
Functions and DevOps
Functions and DevOpsFunctions and DevOps
Functions and DevOps
 
Node.js and Oracle Database: New Development Techniques
Node.js and Oracle Database: New Development TechniquesNode.js and Oracle Database: New Development Techniques
Node.js and Oracle Database: New Development Techniques
 
GlassFish in Production Environments
GlassFish in Production EnvironmentsGlassFish in Production Environments
GlassFish in Production Environments
 
Delivering Mobile Apps to the Field with Oracle
Delivering Mobile Apps to the Field with OracleDelivering Mobile Apps to the Field with Oracle
Delivering Mobile Apps to the Field with Oracle
 
Production Time Profiling Out of the Box
Production Time Profiling Out of the BoxProduction Time Profiling Out of the Box
Production Time Profiling Out of the Box
 
Serverless Patterns by Jesse Butler
Serverless Patterns by Jesse ButlerServerless Patterns by Jesse Butler
Serverless Patterns by Jesse Butler
 
20200613 my sql-ha-deployment
20200613 my sql-ha-deployment20200613 my sql-ha-deployment
20200613 my sql-ha-deployment
 
Confoo 202 - MySQL Group Replication and ReplicaSet
Confoo 202 - MySQL Group Replication and ReplicaSetConfoo 202 - MySQL Group Replication and ReplicaSet
Confoo 202 - MySQL Group Replication and ReplicaSet
 
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
 
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...
 
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
 

Plus de Shaun Smith

Democratizing Serverless
Democratizing ServerlessDemocratizing Serverless
Democratizing ServerlessShaun Smith
 
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
 
Lightweight Java in the Cloud
Lightweight Java in the CloudLightweight Java in the Cloud
Lightweight Java in the CloudShaun Smith
 
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5Shaun Smith
 
Practical RESTful Persistence
Practical RESTful PersistencePractical RESTful Persistence
Practical RESTful PersistenceShaun Smith
 
The Evolution of Java Persistence
The Evolution of Java PersistenceThe Evolution of Java Persistence
The Evolution of Java PersistenceShaun Smith
 
EclipseCon 2011-Gemini Naming
EclipseCon 2011-Gemini NamingEclipseCon 2011-Gemini Naming
EclipseCon 2011-Gemini NamingShaun Smith
 
EclipseCon 2011-Gemini Intro
EclipseCon 2011-Gemini IntroEclipseCon 2011-Gemini Intro
EclipseCon 2011-Gemini IntroShaun Smith
 
EclipseCon 2011-Gemini JPA
EclipseCon 2011-Gemini JPAEclipseCon 2011-Gemini JPA
EclipseCon 2011-Gemini JPAShaun Smith
 
RESTful Data Access Services with Java EE
RESTful Data Access Services with Java EERESTful Data Access Services with Java EE
RESTful Data Access Services with Java EEShaun Smith
 
RESTful services with JAXB and JPA
RESTful services with JAXB and JPARESTful services with JAXB and JPA
RESTful services with JAXB and JPAShaun Smith
 
OSGi Persistence With EclipseLink
OSGi Persistence With EclipseLinkOSGi Persistence With EclipseLink
OSGi Persistence With EclipseLinkShaun Smith
 

Plus de Shaun Smith (12)

Democratizing Serverless
Democratizing ServerlessDemocratizing Serverless
Democratizing Serverless
 
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
 
Lightweight Java in the Cloud
Lightweight Java in the CloudLightweight Java in the Cloud
Lightweight Java in the Cloud
 
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
 
Practical RESTful Persistence
Practical RESTful PersistencePractical RESTful Persistence
Practical RESTful Persistence
 
The Evolution of Java Persistence
The Evolution of Java PersistenceThe Evolution of Java Persistence
The Evolution of Java Persistence
 
EclipseCon 2011-Gemini Naming
EclipseCon 2011-Gemini NamingEclipseCon 2011-Gemini Naming
EclipseCon 2011-Gemini Naming
 
EclipseCon 2011-Gemini Intro
EclipseCon 2011-Gemini IntroEclipseCon 2011-Gemini Intro
EclipseCon 2011-Gemini Intro
 
EclipseCon 2011-Gemini JPA
EclipseCon 2011-Gemini JPAEclipseCon 2011-Gemini JPA
EclipseCon 2011-Gemini JPA
 
RESTful Data Access Services with Java EE
RESTful Data Access Services with Java EERESTful Data Access Services with Java EE
RESTful Data Access Services with Java EE
 
RESTful services with JAXB and JPA
RESTful services with JAXB and JPARESTful services with JAXB and JPA
RESTful services with JAXB and JPA
 
OSGi Persistence With EclipseLink
OSGi Persistence With EclipseLinkOSGi Persistence With EclipseLink
OSGi Persistence With EclipseLink
 

Dernier

Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
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 🔝✔️✔️Delhi Call girls
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
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 ...harshavardhanraghave
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
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...ICS
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
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 CCTVshikhaohhpro
 
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.pdfkalichargn70th171
 
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 WorkerThousandEyes
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
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.pdfWave PLM
 

Dernier (20)

Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
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 🔝✔️✔️
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
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 ...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
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...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
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
 
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
 
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
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
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
 

Serverless Java: JJUG CCC 2019

  • 1. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1
  • 2. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 2 Serverless Java Shaun Smith Director of Product Management Oracle Cloud Infrastructure—Serverless @shaunMsmith May 18, 2019 Challenges and Triumphs
  • 3. Copyright © 2019, 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, timing, and pricing of any features or functionality described for Oracle’s products may change and remains at the sole discretion of Oracle Corporation. 3
  • 4. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 4 Serverless
  • 5. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Serverless is an abstraction of infrastructure and its operations including provisioning, scaling, patching, etc. FaaS (Functions-as-a-Service) is the compute component in a serverless platform 5
  • 6. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 6
  • 7. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Example Java Function 7
  • 8. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Serverless Today 8
  • 9. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 9 Interest in Serverless Source: Google Trends
  • 10. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 10
  • 11. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 11
  • 12. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 12
  • 13. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 13 Source: https://jaxenter.com/technologies-dominate-2019-poll-152470.html
  • 14. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Peak of Inflated Expectations Plateau of Productivity Slope of Enlightenment Trough of Disillusionment 14
  • 15. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Serverless Java? 15
  • 16. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 16 https://blog.github.com/2018-11-15-state-of-the-octoverse-top-programming-languages/ Top programming languages by contributors as of September 30, 2018
  • 17. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 17
  • 18. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | New Relic: 9.1% of functions are Java 8!? https://blog.newrelic.com 18
  • 19. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Serverless.com: 6.1% of all functions are Java!? https://serverless.com/blog/2018-serverless-community-survey-huge-growth-usage/ 19
  • 20. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Serveless.com, Large Companies > 1000: 14.9% Java https://serverless.com/blog/2018-serverless-community-survey-huge-growth-usage/ 20
  • 21. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | And the Trend isn’t Great https://serverless.com/blog/serverless-by-the-numbers-2018-data-report/ 21
  • 22. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | http://redmonk.com/jgovernor/2016/10/12/when-web-companies-grow-up-they-turn-into-java-shops 22
  • 23. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Why isn’t Java popular for Functions? • FaaS seen as a scripting platform for the web? • Doesn't fit normal Java development patterns? • Java not suitable for short-lived “apps”? • Not supported? –Google Cloud Functions—N/A –AWS Lambda—Java support added June 2015 –Oracle Functions—Limited Availability Dec. 2018 –Azure Functions—Java 8 GA on Feb 2019 23
  • 24. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Blueprint for Serverless Java • “Plain old Java” • Established toolchains • Ability to build complex applications • Low latency/high performance • Java ecosystem 24
  • 25. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | www.fnproject.io 25
  • 26. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | • Open-source, Container Naive, Serverless Plajorm • Apache v2 licence • Run anywhere - Cloud / Datacenter / Laptop • Fn ♥ • Funcions are containers 26
  • 27. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 27
  • 28. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 28
  • 29. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Fn Java Function Development Kit (FDK) • Docker Images –A build image for repeatable builds –An optimized runtime image • JUnit Test Harness • Maven support • Input/output coercion • Flow • … 29
  • 30. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 30 Java Functions Demo!
  • 31. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Blueprint for Serverless Java • “Plain old Java” ✓ • Established toolchains ✓ • Ability to build complex applications • Low latency/high performance • JVM ecosystem 31
  • 32. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 32 Fn Flow
  • 33. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Fn Flow • Provides rich concurrency primitives including fork-join, chaining, delays and error handling • Java support based on Java 8 CompletableFuture API • Build reliable and scalable FaaS applications For long-running, reliable, scalable functions
  • 34. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Fn Flow Demo
  • 35. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | http://microservices.io/patterns/data/saga.html
  • 36. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 36 Fn Flow Demo!
  • 37. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Blueprints for Serverless Java • “Plain old Java” ✓ • Wide choice of good tooling ✓ • Ability to build complex applications ✓ • Low latency/high performance • Rich JVM ecosystem 37
  • 38. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Low Latency/High Performance – Java in Containers What do we want containerized Java applications to do? –Respect resource constraints –Start fast –Run fast 38
  • 39. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Container Friendly Java – Respecting Resource Constraints • JDK-8179498: attach in linux should be relaive to /proc/pid/root and namespace aware as jcmd, jstack, etc. fail to arach (resolved in JDK 10) • JDK-8193710: jcmd -l and jps commands do not list Java processes running in Docker containers (resolved in JDK 11) • JDK-8203357: Container Metrics (resolved in JDK 11.0.1) • JEP 318: Epsilon: A No-Op Garbage Collector (Experimental in JDK 11) • … 39
  • 40. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Fast Startup – Moving Costs to Build-Time 1. Class Data Sharing (CDS) – Avoid parsing JDK classes on start 2. Application CDS – Avoid parsing App classes on start 3. AOT compilation – Compile App classes to native .so libraries (experimental) 40
  • 41. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Fast Startup – Small Container Images Small JVM container images means faster startup by reducing: –Image to host transfer time –Docker Copy on Write (COW) cache creation –Docker Overlay FS setup 41
  • 42. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Fast Startup — Building Smaller Java Container Images 1. Use jlink to remove unused core libraries 2. Start with small base images 3. GraaVM native image - compile Java to a static binary 42
  • 43. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Fast Startup — Small Base Images Security-oriented, lightweight Linux distribution with 4MB base image Lightweight, fast, simple, free, C standard library implementation 43 Reduce OS layer size Project Portola’s goal is to run the JVM on Alpine Linux/Musl
  • 44. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Fast Startup — Smaller Java Applications 44 Reduce Java Runtime layer size - jlink Modules JLink flags Mb JDK 12 Whole JDK! 318.7 openjdk:11-jre-slim 11 (default) NB: openjdk:12-jre-slim not yet available! 217 JRE 12 all (explicit) --add-module $(java --list-modules) 168.3 100.0% + --no-header-files --no-man-pages --strip-debug 143.0 85.0% + --compress=1 107.8 64.1% + --compress=2 83.7 49.7% Custom JRE 12 base, logging --add-module $(jdeps --print-module-deps func.jar) 47.4 28.2% 100.0% + --no-header-files --no-man-pages --strip-debug 41.6 24.7% 87.8% + --compress=2 32.0 19.0% 67.5% OpenJDK (build 12-ea+29) - alpine:3.9 x86_64 318 Mb 168 Mb 47 Mb 32 Mb
  • 45. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Fast Startup — Smaller Java Applications • GraalVM compiles Java source to a single native binary • Tiny image sizes • Low VM overhead 45
  • 46. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 46 GraalVM Functions Demo!
  • 47. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Blueprint for Serverless Java • “Plain old Java” ✓ • Wide choice of good tooling ✓ • Ability to build complex applications ✓ • Low latency/high performance ✓ • Rich JVM ecosystem ✓ 47
  • 48. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 48 Serverless Java?
  • 49. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 49 Serverless Java? Absolutely!
  • 50. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Shaun Smith fnproject.io @shaunMsmith 50 Thank you!
  • 51. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 51