Javantura/ February 22th, 2020 / © 2020 IBM Corporation
Cloud-Native Java Microservices
Workshop
Jamie L Coleman
Software Engineer/Advocate Team Lead
Yasmin Aumeeruddy
Software Engineer/Advocate
Contents
2Javantura/ February 22th, 2020 / © 2020 IBM Corporation
Why move to the Cloud? 03
What the Cloud offers 04
What is the Hybrid Cloud? 07
Eclipse MicroProfile 08
Contributors 10
Community 11
Vendors/Implementations 14
MicroProfile Technologies 15
MicroProfile Stack 16
MicroProfile Core Technologies 17
Docker, Kubenetes and Istio 29
Deploying to the Cloud with Containers 30
MicroProfile Health and Config 33
A Full Open Stack 35
Open Liberty Overview 37
Open J9 Overview 38
@Jamie_Lee_C
Why move to
the Cloud?
3Javantura/ February 22th, 2020 / © 2020 IBM Corporation
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 4
What the Cloud offers
Demand
time
One big server running all the time?
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 5
What the Cloud offers
Demand
time
One big server running all the time?
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 6
What the Cloud offers
Demand
time
One big server running all the time?
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 7
What is Hybrid Cloud and why
Use it?
Hybrid Cloud
The platform for digital
transformation
Integrate seamlessly across
any platform
Add cognitive
capabilities
Adopt a hybrid cloud
strategy
Optimize the cost of
existing infrastructure
Implement Microservices Architecture &
leverage Docker Containers for portability
Enhance applications with new
services
Adopt and Expand API
usage
Move a portion of IT infrastructure to
cloud
DevTest in the cloud
@Jamie_Lee_C
Eclipse
MicroProfile
8Javantura/ February 22th, 2020 / © 2020 IBM Corporation
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 9
What is MicroProfile?
● Eclipse MicroProfile is an open-source
community specification for Enterprise Java
microservices
● A community of individuals, organizations, and
vendors collaborating within an open source
(Eclipse) project to bring microservices to the
Enterprise Java community
microprofile.io
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 10
MicroProfile Contributors
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 11
MicroProfile Community
● Over a dozen vendors and Java user groups
● 140 individual contributors
● Over half a dozen independent
implementations
@Jamie_Lee_C
Locations of some
MicroProfile Contributors
12Javantura/ February 22th, 2020 / © 2020 IBM Corporation
Seattle – USA
Ontario – Canada
Canberra – Australia
Stuttgart – Germany
Rochester – USA
Prague – Czech Rep
Newcastle – UK
Munich – Germany
Paris – France
Hursley – UK
Centurion – South Africa
Boston – USA
Sao Paulo – Brazil
Rio de Janeiro – Brazil
Coimbra – Portugal
Amsterdam – Netherlands
Source: MicroProfile.io
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 13
MicroProfile Community
Video HangoutsBi-Weekly & Quarterly
General community
Meetings
MicroProfile ProjectsGoogle Groups
YouTube Channel
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 14
MicroProfile
Vendors/Implementations
@Jamie_Lee_C
MicroProfile
Technologies
15Javantura/ February 22th, 2020 / © 2020 IBM Corporation
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 16
MicroProfile 3.0 Stack
JSON-B 1.0JSON-P 1.1CDI 2.0
Config 1.3
Fault
Tolerance 2.0
JWT
Propagation
1.1
Health
Check 2.0
Metrics 2.0
Open Tracing
1.3
Open API 1.1
JAX-RS 2.1
Rest Client
1.3
@Jamie_Lee_C
MicroProfile Core Technologies
17Javantura/ February 22th, 2020 / © 2020 IBM Corporation
B
@Path("/brews")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class BrewsResource {
@POST
public Response startCoffeeBrew(CoffeeBrew brew) {...)
}
JAX-RS
@Jamie_Lee_C
MicroProfile Core Technologies
18Javantura/ February 22th, 2020 / © 2020 IBM Corporation
REST Client
BA
@RegisterRestClient
@Path("/resources/brews")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public interface BaristaClient {
@POST
public Response startCoffeeBrew(CoffeeBrew brew);
}
@Jamie_Lee_C
MicroProfile Core Technologies
19Javantura/ February 22th, 2020 / © 2020 IBM Corporation
CDI
BA
@Path("/orders")
public class OrdersResource {
@Inject
CoffeeShop coffeeShop;
...
}
@Jamie_Lee_C
MicroProfile Core Technologies
20Javantura/ February 22th, 2020 / © 2020 IBM Corporation
JSON-B &
JSON-P
A B
...
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response startCoffeeBrew(CoffeeBrew brew) {
CoffeeType coffeeType = brew.getType();
...
}
public class CoffeeBrew {
private CoffeeType type;
public CoffeeType getType() {
return type;
}
public void setType(CoffeeType type) {
this.type = type;
}
}
@Jamie_Lee_C
MicroProfile Core Technologies
21Javantura/ February 22th, 2020 / © 2020 IBM Corporation
Open API
A B
openapi: 3.0.0
info:
title: Deployed APIs
version: 1.0.0
servers:
- url: http://grahams-mbp-2.lan:9081/barista
paths:
/resources/brews:
post:
operationId: startCoffeeBrew
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CoffeeBrew'
responses:
default:
description: default response
components:
schemas:
CoffeeBrew:
type: object
properties:
type:
type: string
enum:
- ESPRESSO
- LATTE
- POUR_OVER
@Jamie_Lee_C
MicroProfile Core Technologies
22Javantura/ February 22th, 2020 / © 2020 IBM Corporation
JWT
@POST
@RolesAllowed({ "admin", "coffee-shop" })
public Response startCoffeeBrew(CoffeeBrew brew) {...}
BA
@Jamie_Lee_C
MicroProfile Core Technologies
23Javantura/ February 22th, 2020 / © 2020 IBM Corporation
Fault
Tolerance
A B
@Retry(retryOn = TimeoutException.class,
maxRetries = 4,
maxDuration = 10,
durationUnit = ChronoUnit.SECONDS)
public void startCoffeeBrew(CoffeeBrew brew) {
Response response = baristaClient.startCoffeeBrew(brew);
...
}
@Jamie_Lee_C
MicroProfile Core Technologies
24Javantura/ February 22th, 2020 / © 2020 IBM Corporation
Config
A B
@ApplicationScoped
public class Barista {
@Inject
@ConfigProperty(name="default_barista_base_url")
String baristaBaseURL;
...
}
@Jamie_Lee_C
MicroProfile Core Technologies
25Javantura/ February 22th, 2020 / © 2020 IBM Corporation
Health
A B
{
"checks": [
{
"data": {
"barista service": "available"
},
"name": "CoffeeShopHealth",
"state": "UP"
}
],
"outcome": "UP"
}
@Health
@ApplicationScoped
public class HealthResource implements HealthCheck {
...
public boolean isHealthy() {...}
@Override
public HealthCheckResponse call() {
if (!isHealthy()) {
return HealthCheckResponse.named(...).down().build();
}
return HealthCheckResponse.named(...).up().build();
}
}
@Jamie_Lee_C
MicroProfile Core Technologies
26Javantura/ February 22th, 2020 / © 2020 IBM Corporation
Metrics
A B
@POST
@Counted(name="order", displayName="Order count",
description="Number of times orders requested.", monotonic=true)
public Response orderCoffee(@Valid @NotNull CoffeeOrder order) {
...
}
@Jamie_Lee_C
MicroProfile Core Technologies
27Javantura/ February 22th, 2020 / © 2020 IBM Corporation
Open
Tracing
A B
@Traced
public void startBrew(CoffeeType coffeeType) {
...
}
JAX-RS methods
are automatically
traced by default
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 28
MicroProfile 3.0 Stack
JSON-B 1.0JSON-P 1.1CDI 2.0
Config 1.3
Fault
Tolerance 2.0
JWT
Propagation
1.1
Health
Check 2.0
Metrics 2.0
Open Tracing
1.3
Open API 1.1
JAX-RS 2.1
Rest Client
1.3
Reactive
Streams
Operators 1.1
Reactive
Messaging
1.0
GraphQL 1.0
Context
Propagation
1.0
Standalone Projects
@Jamie_Lee_C
Containers
Kubernetes
& Istio
29Javantura/ February 22th, 2020 / © 2020 IBM Corporation
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 30
MicroProfile & Containers
JSON-B 1.0JSON-P 1.1CDI 2.0
Config 1.3
Fault
Tolerance 2.0
JWT
Propagation
1.1
Health
Check 2.0
Metrics 2.0
Open Tracing
1.3
Open API 1.1
JAX-RS 2.1
Rest Client
1.3
Containers Kubernetes Istio
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 31
Containers
docker build -t ol-runtime --no-cache=true .
docker run -d --name rest-app -p 9080:9080 -p
9443:9443 -v <absolute path to
guide>/start/target/liberty/wlp/usr/servers:/servers
ol-runtime
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 32
Kubernetes @Jamie_Lee_C
MicroProfile with Kubernetes
33Javantura/ February 22th, 2020 / © 2020 IBM Corporation
Config
A B
env:
- name: GREETING
valueFrom:
configMapKeyRef:
name: greeting-
config
key: message
kubectl create configmap greeting-config --from-literal
message=Greetings...
@Inject
@ConfigProperty(name =
"GREETING")
private String greeting;
@Jamie_Lee_C
MicroProfile with Kubernetes
34Javantura/ February 22th, 2020 / © 2020 IBM Corporation
Health
A B
readinessProbe:
httpGet:
path: /health
port: 9080
initialDelaySeconds:
15
periodSeconds: 5
failureThreshold: 1
@Jamie_Lee_C
A Full Open
Stack
35Javantura/ February 22th, 2020 / © 2020 IBM Corporation
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 36
A Full Open Stack
MicroProfile
Open Liberty
OpenJ9
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 37
Open Liberty Overview
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 38
Open J9 Overview
Designed from the start to span all the
operating systems needed by IBM products
This JVM can go from small to large
Can handle constrained environments or
memory rich ones
Is used by the largest enterprises on the
planet
If any JVM can be said to be at the heart of
the enterprise – its this one.
@Jamie_Lee_C
Javantura/ February 22th, 2020 / © 2020 IBM Corporation 39
Recap
MicroProfile
• No vendor lock in
• Full set of cloud ready APIs
• Config
• Health
• Metrics
• Fault Tolerance
• …
• Big community
Open Liberty
• Modular Application server
• Light weight
• Easy to configure
• Jakarta EE 8 certified
• Production ready
• Official Docker images available
All Open Source!
Open J9
• Low memory footprint
• Fast startup time
• High application throughput
• Smoother ramp-up in the cloud
• Easy to use Docker images
@Jamie_Lee_C
Thank you
40Javantura/ February 22th, 2020 / © 2020 IBM Corporation
Jamie Lee Coleman
Software Engineer/Advocate Team Lead
Email: jlcoleman@uk.ibm.com
Twitter: @Jamie_Lee_C
Yasmin Aumeeruddy
Software Engineer/Advocate
Email: tevans@uk.ibm.com
@Jamie_Lee_C
41Javantura/ February 22th, 2020 / © 2020 IBM Corporation
Time To Code
To get started visit the following URL in your browser
https://ide.skillsnetwork.site/events/javantura
Please log out after each module to clear your
workspace
@Jamie_Lee_C

Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura

  • 1.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation Cloud-Native Java Microservices Workshop Jamie L Coleman Software Engineer/Advocate Team Lead Yasmin Aumeeruddy Software Engineer/Advocate
  • 2.
    Contents 2Javantura/ February 22th,2020 / © 2020 IBM Corporation Why move to the Cloud? 03 What the Cloud offers 04 What is the Hybrid Cloud? 07 Eclipse MicroProfile 08 Contributors 10 Community 11 Vendors/Implementations 14 MicroProfile Technologies 15 MicroProfile Stack 16 MicroProfile Core Technologies 17 Docker, Kubenetes and Istio 29 Deploying to the Cloud with Containers 30 MicroProfile Health and Config 33 A Full Open Stack 35 Open Liberty Overview 37 Open J9 Overview 38 @Jamie_Lee_C
  • 3.
    Why move to theCloud? 3Javantura/ February 22th, 2020 / © 2020 IBM Corporation @Jamie_Lee_C
  • 4.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 4 What the Cloud offers Demand time One big server running all the time? @Jamie_Lee_C
  • 5.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 5 What the Cloud offers Demand time One big server running all the time? @Jamie_Lee_C
  • 6.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 6 What the Cloud offers Demand time One big server running all the time? @Jamie_Lee_C
  • 7.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 7 What is Hybrid Cloud and why Use it? Hybrid Cloud The platform for digital transformation Integrate seamlessly across any platform Add cognitive capabilities Adopt a hybrid cloud strategy Optimize the cost of existing infrastructure Implement Microservices Architecture & leverage Docker Containers for portability Enhance applications with new services Adopt and Expand API usage Move a portion of IT infrastructure to cloud DevTest in the cloud @Jamie_Lee_C
  • 8.
    Eclipse MicroProfile 8Javantura/ February 22th,2020 / © 2020 IBM Corporation @Jamie_Lee_C
  • 9.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 9 What is MicroProfile? ● Eclipse MicroProfile is an open-source community specification for Enterprise Java microservices ● A community of individuals, organizations, and vendors collaborating within an open source (Eclipse) project to bring microservices to the Enterprise Java community microprofile.io @Jamie_Lee_C
  • 10.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 10 MicroProfile Contributors @Jamie_Lee_C
  • 11.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 11 MicroProfile Community ● Over a dozen vendors and Java user groups ● 140 individual contributors ● Over half a dozen independent implementations @Jamie_Lee_C
  • 12.
    Locations of some MicroProfileContributors 12Javantura/ February 22th, 2020 / © 2020 IBM Corporation Seattle – USA Ontario – Canada Canberra – Australia Stuttgart – Germany Rochester – USA Prague – Czech Rep Newcastle – UK Munich – Germany Paris – France Hursley – UK Centurion – South Africa Boston – USA Sao Paulo – Brazil Rio de Janeiro – Brazil Coimbra – Portugal Amsterdam – Netherlands Source: MicroProfile.io @Jamie_Lee_C
  • 13.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 13 MicroProfile Community Video HangoutsBi-Weekly & Quarterly General community Meetings MicroProfile ProjectsGoogle Groups YouTube Channel @Jamie_Lee_C
  • 14.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 14 MicroProfile Vendors/Implementations @Jamie_Lee_C
  • 15.
    MicroProfile Technologies 15Javantura/ February 22th,2020 / © 2020 IBM Corporation @Jamie_Lee_C
  • 16.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 16 MicroProfile 3.0 Stack JSON-B 1.0JSON-P 1.1CDI 2.0 Config 1.3 Fault Tolerance 2.0 JWT Propagation 1.1 Health Check 2.0 Metrics 2.0 Open Tracing 1.3 Open API 1.1 JAX-RS 2.1 Rest Client 1.3 @Jamie_Lee_C
  • 17.
    MicroProfile Core Technologies 17Javantura/February 22th, 2020 / © 2020 IBM Corporation B @Path("/brews") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public class BrewsResource { @POST public Response startCoffeeBrew(CoffeeBrew brew) {...) } JAX-RS @Jamie_Lee_C
  • 18.
    MicroProfile Core Technologies 18Javantura/February 22th, 2020 / © 2020 IBM Corporation REST Client BA @RegisterRestClient @Path("/resources/brews") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public interface BaristaClient { @POST public Response startCoffeeBrew(CoffeeBrew brew); } @Jamie_Lee_C
  • 19.
    MicroProfile Core Technologies 19Javantura/February 22th, 2020 / © 2020 IBM Corporation CDI BA @Path("/orders") public class OrdersResource { @Inject CoffeeShop coffeeShop; ... } @Jamie_Lee_C
  • 20.
    MicroProfile Core Technologies 20Javantura/February 22th, 2020 / © 2020 IBM Corporation JSON-B & JSON-P A B ... @POST @Consumes(MediaType.APPLICATION_JSON) public Response startCoffeeBrew(CoffeeBrew brew) { CoffeeType coffeeType = brew.getType(); ... } public class CoffeeBrew { private CoffeeType type; public CoffeeType getType() { return type; } public void setType(CoffeeType type) { this.type = type; } } @Jamie_Lee_C
  • 21.
    MicroProfile Core Technologies 21Javantura/February 22th, 2020 / © 2020 IBM Corporation Open API A B openapi: 3.0.0 info: title: Deployed APIs version: 1.0.0 servers: - url: http://grahams-mbp-2.lan:9081/barista paths: /resources/brews: post: operationId: startCoffeeBrew requestBody: content: application/json: schema: $ref: '#/components/schemas/CoffeeBrew' responses: default: description: default response components: schemas: CoffeeBrew: type: object properties: type: type: string enum: - ESPRESSO - LATTE - POUR_OVER @Jamie_Lee_C
  • 22.
    MicroProfile Core Technologies 22Javantura/February 22th, 2020 / © 2020 IBM Corporation JWT @POST @RolesAllowed({ "admin", "coffee-shop" }) public Response startCoffeeBrew(CoffeeBrew brew) {...} BA @Jamie_Lee_C
  • 23.
    MicroProfile Core Technologies 23Javantura/February 22th, 2020 / © 2020 IBM Corporation Fault Tolerance A B @Retry(retryOn = TimeoutException.class, maxRetries = 4, maxDuration = 10, durationUnit = ChronoUnit.SECONDS) public void startCoffeeBrew(CoffeeBrew brew) { Response response = baristaClient.startCoffeeBrew(brew); ... } @Jamie_Lee_C
  • 24.
    MicroProfile Core Technologies 24Javantura/February 22th, 2020 / © 2020 IBM Corporation Config A B @ApplicationScoped public class Barista { @Inject @ConfigProperty(name="default_barista_base_url") String baristaBaseURL; ... } @Jamie_Lee_C
  • 25.
    MicroProfile Core Technologies 25Javantura/February 22th, 2020 / © 2020 IBM Corporation Health A B { "checks": [ { "data": { "barista service": "available" }, "name": "CoffeeShopHealth", "state": "UP" } ], "outcome": "UP" } @Health @ApplicationScoped public class HealthResource implements HealthCheck { ... public boolean isHealthy() {...} @Override public HealthCheckResponse call() { if (!isHealthy()) { return HealthCheckResponse.named(...).down().build(); } return HealthCheckResponse.named(...).up().build(); } } @Jamie_Lee_C
  • 26.
    MicroProfile Core Technologies 26Javantura/February 22th, 2020 / © 2020 IBM Corporation Metrics A B @POST @Counted(name="order", displayName="Order count", description="Number of times orders requested.", monotonic=true) public Response orderCoffee(@Valid @NotNull CoffeeOrder order) { ... } @Jamie_Lee_C
  • 27.
    MicroProfile Core Technologies 27Javantura/February 22th, 2020 / © 2020 IBM Corporation Open Tracing A B @Traced public void startBrew(CoffeeType coffeeType) { ... } JAX-RS methods are automatically traced by default @Jamie_Lee_C
  • 28.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 28 MicroProfile 3.0 Stack JSON-B 1.0JSON-P 1.1CDI 2.0 Config 1.3 Fault Tolerance 2.0 JWT Propagation 1.1 Health Check 2.0 Metrics 2.0 Open Tracing 1.3 Open API 1.1 JAX-RS 2.1 Rest Client 1.3 Reactive Streams Operators 1.1 Reactive Messaging 1.0 GraphQL 1.0 Context Propagation 1.0 Standalone Projects @Jamie_Lee_C
  • 29.
    Containers Kubernetes & Istio 29Javantura/ February22th, 2020 / © 2020 IBM Corporation @Jamie_Lee_C
  • 30.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 30 MicroProfile & Containers JSON-B 1.0JSON-P 1.1CDI 2.0 Config 1.3 Fault Tolerance 2.0 JWT Propagation 1.1 Health Check 2.0 Metrics 2.0 Open Tracing 1.3 Open API 1.1 JAX-RS 2.1 Rest Client 1.3 Containers Kubernetes Istio @Jamie_Lee_C
  • 31.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 31 Containers docker build -t ol-runtime --no-cache=true . docker run -d --name rest-app -p 9080:9080 -p 9443:9443 -v <absolute path to guide>/start/target/liberty/wlp/usr/servers:/servers ol-runtime @Jamie_Lee_C
  • 32.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 32 Kubernetes @Jamie_Lee_C
  • 33.
    MicroProfile with Kubernetes 33Javantura/February 22th, 2020 / © 2020 IBM Corporation Config A B env: - name: GREETING valueFrom: configMapKeyRef: name: greeting- config key: message kubectl create configmap greeting-config --from-literal message=Greetings... @Inject @ConfigProperty(name = "GREETING") private String greeting; @Jamie_Lee_C
  • 34.
    MicroProfile with Kubernetes 34Javantura/February 22th, 2020 / © 2020 IBM Corporation Health A B readinessProbe: httpGet: path: /health port: 9080 initialDelaySeconds: 15 periodSeconds: 5 failureThreshold: 1 @Jamie_Lee_C
  • 35.
    A Full Open Stack 35Javantura/February 22th, 2020 / © 2020 IBM Corporation @Jamie_Lee_C
  • 36.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 36 A Full Open Stack MicroProfile Open Liberty OpenJ9 @Jamie_Lee_C
  • 37.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 37 Open Liberty Overview @Jamie_Lee_C
  • 38.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 38 Open J9 Overview Designed from the start to span all the operating systems needed by IBM products This JVM can go from small to large Can handle constrained environments or memory rich ones Is used by the largest enterprises on the planet If any JVM can be said to be at the heart of the enterprise – its this one. @Jamie_Lee_C
  • 39.
    Javantura/ February 22th,2020 / © 2020 IBM Corporation 39 Recap MicroProfile • No vendor lock in • Full set of cloud ready APIs • Config • Health • Metrics • Fault Tolerance • … • Big community Open Liberty • Modular Application server • Light weight • Easy to configure • Jakarta EE 8 certified • Production ready • Official Docker images available All Open Source! Open J9 • Low memory footprint • Fast startup time • High application throughput • Smoother ramp-up in the cloud • Easy to use Docker images @Jamie_Lee_C
  • 40.
    Thank you 40Javantura/ February22th, 2020 / © 2020 IBM Corporation Jamie Lee Coleman Software Engineer/Advocate Team Lead Email: jlcoleman@uk.ibm.com Twitter: @Jamie_Lee_C Yasmin Aumeeruddy Software Engineer/Advocate Email: tevans@uk.ibm.com @Jamie_Lee_C
  • 41.
    41Javantura/ February 22th,2020 / © 2020 IBM Corporation Time To Code To get started visit the following URL in your browser https://ide.skillsnetwork.site/events/javantura Please log out after each module to clear your workspace @Jamie_Lee_C

Editor's Notes