SlideShare a Scribd company logo
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Project Helidon
Akihiro Nishikawa
Oracle Corporation Japan
Java Libraries for Microservices
1
Copyright © 2018, 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, and timing of any features or
functionality described for Oracle’s products remains at the sole discretion of Oracle.
2
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Program Agenda
What’s Helidon?
Demo
Diving a little bit deeply...
Helidon can also run on Custom JRE!
Resources
1
2
3
4
5
3
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
What’s Helidon?
4
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 5
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 6
• Microframework
• Functional Style
• Reactive
• Transparent
• MicroProfile
• Declarative Style
• CDI, JAX-RS, JSON-P
• Familiar to Java EE developers
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 7
Java Microservice Frameworks
Smaller
Larger
Spring Boot
Microframeworks
MicroProfile Based
Open Liberty
Full-Stack
Dropwizard
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 8
Architecture
Helidon SE
Netty
WebServer SecurityConfig
Helidon MP
CDI JAX-RS JSON-P
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Eclipse MicroProfile
• Java EE 2016
• RedHat IBM Tomitribe Payara
•
• Java EE API MicroProfile API
– JAX-RS, CDI, JSON-P, JSON-B
– MP Config, Metrics, Health Check, Fault Tolerance, JWT Auth
– Open API, OpenTracing, RestClient
•
9
2.1 (2018/10/19)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Reactive WebServer
•
Flow API
• Netty
• OpenTracing Metrics
• JAX-RS, JSON-P support
•
Config
•
•
•
•
•
10
Security
•
•
•
•
•
– OIDC
– JWT
– Google Login
Helidon SE
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Helidon SE
import io.helidon.webserver.Routing;
import io.helidon.webserver.WebServer;
public static void main(String[] args)
{
WebServer.create(
Routing.builder()
.get("/greet", (req, res) ->
res.send("Hello World!"))
.build()).start();
}
Helidon MP
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
public class GreetService {
@GET
@Path("/greet")
public String getMsg() {
return "Hello World!";
}
}
11
SE/MP Hello World
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 12
CDI Extensions Preview
0.10.5
Helidon MP
Helidon SE
Microprofile 1.2
• WebServer, Config, Security
• JSON-P
• Metrics
• OpenTracing
• HTTP/2 (experimental)
CDI Extensions MicroProfile Config CDI 2.0
CDI Extension
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
• MicroProfile 2.x
• Reactive HTTP Client
• GraalVM
• Project Starter UI
• Reactive storage (NoSQL, ADBA)
• Open API
• Eventing
13
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Demo
14
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Demo
• Quickstart
• Server config and startup
• Basic Routing
• Basic JSON handling
• Docker Container Creation
• Running on Kubernetes
15
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 16
Archetype
Helidon SE
mvn archetype:generate -DinteractiveMode=false ¥
-DarchetypeGroupId=io.helidon.archetypes ¥
-DarchetypeArtifactId=helidon-quickstart-se ¥
-DarchetypeVersion=0.10.5 ¥
-DgroupId=io.helidon.examples ¥
-DartifactId=quickstart-se ¥
-Dpackage=io.helidon.examples.quickstart.se
Helidon MP
mvn archetype:generate -DinteractiveMode=false ¥
-DarchetypeGroupId=io.helidon.archetypes ¥
-DarchetypeArtifactId=helidon-quickstart-mp ¥
-DarchetypeVersion=0.10.5 ¥
-DgroupId=io.helidon.examples ¥
-DartifactId=quickstart-mp ¥
-Dpackage=io.helidon.examples.quickstart.mp
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 17
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 18
mvn package
java -jar target/quickstart-se.jar
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Dockerfile
#FROM openjdk:8-jre-slim
FROM openjdk:8-jre-alpine
RUN mkdir /app
COPY libs /app/libs
COPY quickstart-se.jar /app
CMD ["java", "-jar", "/app/quickstart-se.jar"]
19
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 20
Docker
docker build -t quickstart-se target
docker run --rm -p 8080:8080 quickstart-se
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
kind: Service
apiVersion: v1
metadata:
name: quickstart-se
labels:
app: quickstart-se
spec:
type: NodePort
selector:
app: quickstart-se
ports:
- port: 8080
targetPort: 8080
name: http
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: quickstart-se
spec:
replicas: 1
template:
metadata:
labels:
app: quickstart-se
version: v1
spec:
containers:
- name: quickstart-se
image: quickstart-se:12alpine-custom
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
---
21
app.yaml
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 22
Kubernetes
kubectl create -f target/app.yaml
kubectl get service
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Diving a little bit deeply...
23
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 24
Module
$ jar --file=target/libs/helidon-common-0.10.5.jar --describe-module
io.helidon.common
jar:file:///Users/oracle/Documents/Helidon/quickstart-
se8/target/libs/helidon-common-0.10.5.jar/!module-info.class
exports io.helidon.common
requires java.base mandated
requires java.logging
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Server (SE)
# application.yaml
app:
greeting: "Hello"
server:
sockets:
- secure:
port: 443
backlog: 1024
receive-buffer: 0
timeout: 60000
ssl:
....
- another:
port: 12041
25
ServerConfiguration serverConfig =
ServerConfiguration.fromConfig(config.get("server"));
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
# 3 default MicroProfile Config sources:
# System.getProperties()
# System.getenv()
# META-INF/microprofile-config.properties
# default is localhost
server.host=some.host
# default is 7001
server.port=7011
# Helidon configuration (optional)
# Length of queue for incoming connections.
server.backlog: 512
# TCP receive window (Default:0)
server.receive-buffer: 256
# Socket timeout (msec) defaults:0 (infinite)
server.timeout: 30000
# Default is CPU_COUNT * 2
server.workers=4
# Default is not to use SSL
ssl:
private-key:
keystore-resource-path: "certificate.p12"
keystore-passphrase: "abcd"
26
Server (MP)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Routing (SE)
27
MP JAX-RS 2.0
private static Routing createRouting() {
return Routing.builder()
.register(JsonSupport.get())
.register("/greet", new GreetService())
.build();
}
public class GreetService implements Service {
...
public final void update(final Routing.Rules rules) {
rules
.get("/", this::getDefaultMessage)
.get("/{name}", this::getMessage)
.put("/greeting/{greeting}", this::updateGreeting);
}
}
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
JSON
28
SE JSON-P
private static Routing createRouting() {
return Routing.builder()
.register(JsonSupport.get())
.register("/greet", new GreetService())
.build();
}
public class GreetService implements Service {
...
public final void update(final Routing.Rules rules) {
rules
.get("/", this::getDefaultMessage)
.get("/{name}", this::getMessage)
.put("/greeting/{greeting}", this::updateGreeting);
}
}
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Metrics
• Prometheus
• maven
29
<dependencies>
<dependency>
<groupId>io.helidon.microprofile.metrics</groupId>
<artifactId>helidon-metrics-se</artifactId>
</dependency>
</dependencies>
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 30
import io.helidon.metrics.MetricsSupport;
...
final MetricsSupport metrics = MetricsSupport.create();
...
// Endpoint
final MetricsSupport metrics = MetricsSupport.create();
greetService = new GreetService();
return Routing.builder()
.register(JsonSupport.get())
.register(metrics)
.register("/greet", greetService)
.get("/alive", Main::alive)
.get("/ready", Main::ready)
.build();
...
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 31
import io.helidon.metrics.RegistryFactory;
import org.eclipse.microprofile.metrics.Counter;
import org.eclipse.microprofile.metrics.MetricRegistry;
...
private final MetricRegistry registry = RegistryFactory.getRegistryFactory()
.get()
.getRegistry(MetricRegistry.Type.APPLICATION);
...
// Counter
private final Counter greetCounter = registry.counter("accessctr");
...
// Counter
greetCounter.inc();
...
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 32
Prometheus JSON
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
OpenTracing
• Reactive Web Server OpenTracing Zipkin
• Zipkin Tracing
•
33
<dependency>
<groupId>io.helidon.webserver</groupId>
<artifactId>helidon-webserver-zipkin</artifactId>
</dependency>
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 34
// OpenTracing Tracer
ServerConfiguration.builder()
.tracer(new ZipkinTracerBuilder.forService("Tracing ")
.zipkin("Zipkin URL")
.build())
.build()
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 35
Routing
Routing.builder()
.register(webSecurity)
.register(JsonSupport.get())
.register(MetricsSupport.create())
.get("/ready", (req, res) -> {
res.status(Http.Status.OK_200);
res.send("Ready!");
})
.register(StaticContentSupport.builder("/WEB", Main.class.getClassLoader())
.welcomeFileName("index.html")
.build())
.register("/greet", new GreetService())
.build();
<src>/resources
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
•
•
•
• Audit
36
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Authentication
artifactId
JWT Provider helidon-security-provider-jwt
HTTP Basic Authorization helidon-security-provider-http-auth
HTTP Digest Authorization helidon-security-provider-http-auth
Header Assertion helidon-security-provider-header-atn
HTTP Signatures helidon-security-provider-http-signature
ABAC (Attribute based access control) Authorization helidon-security-provider-abac
Google Login Authentication Provider helidon-security-provider-google-login
OIDC (Open ID Connect) Authentication provider helidon-security-provider-oidc
IDCS Role Mapping Provider helidon-security-provider-idcs-mapper
37
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 38
•
• Reactive Web Server
• Jersey
<dependency>
<groupId>io.helidon.security</groupId>
<artifactId>helidon-security</artifactId>
</dependency>
<dependency>
<groupId>io.helidon.security</groupId>
<artifactId>helidon-security-integration-webserver</artifactId>
</dependency>
<dependency>
<groupId>io.helidon.security</groupId>
<artifactId>helidon-security-integration-jersey</artifactId>
</dependency>
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
•
39
private static WebSecurity createWebSecurity(final Config config) {
Security security = Security.builder()
.addProvider(GoogleTokenProvider
.builder()
.clientId(
config.get("security.properties.google-client-id")
.asString()))
.build();
return WebSecurity.from(security);
}
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
(2)
• Routing
•
40
Routing.builder().register(webSecurity)
.register(JsonSupport.get())
.register(MetricsSupport.create())
.register("/greet", new GreetService())
.build();
final Routing.Rules rules;
rules.any(this::counterFilter)
.get("/", this::getDefaultMessageHandler)
.get("/greeting",this::getGreetingHandler)
.get("/{name}", this::getMessageHandler)
.put("/greeting/{greeting}", WebSecurity.authenticate(),
this::updateGreetingHandler);
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Etcd
•
•
41
Etcd
<dependency>
<groupId>io.helidon.config</groupId>
<artifactId>helidon-config-etcd</artifactId>
</dependency>
Config config = Config.from(
EtcdConfigSourceBuilder.from(URI.create("http://my-etcd:2379"),
"/config.yaml",
EtcdConfigSourceBuilder.EtcdApi.v3));
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Helidon can also run on Custom JRE!
42
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 43
Java 8, 11, 12...
$ docker images quickstart-se
REPOSITORY TAG IMAGE ID CREATED SIZE
quickstart-se 12-oracle 35675acf14d4 7 days ago 468MB
quickstart-se 11-oracle c3d347de8d23 7 days ago 469MB
quickstart-se 8-alpine fae858de0489 7 days ago 88.6MB
quickstart-se 8-slim 3a505f8068dc 7 days ago 210MB
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 44
Java 8, 11, 12...
$ docker images quickstart-se
REPOSITORY TAG IMAGE ID CREATED SIZE
quickstart-se 12-oracle 35675acf14d4 7 days ago 468MB
quickstart-se 11-oracle c3d347de8d23 7 days ago 469MB
quickstart-se 8-alpine fae858de0489 7 days ago 88.6MB
quickstart-se 8-slim 3a505f8068dc 7 days ago 210MB
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
JRE
• jdeps
• jlink JRE
45
$ jdeps --list-deps quickstart-se.jar
$ jlink --compress=2 --module-path /opt/openjdk-12/jmods ¥
--add-modules ¥
java.base,java.logging,java.sql,java.desktop ¥
--no-header-files ¥
--no-man-pages ¥
--output /linked
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 46
FROM openjdk:11.0.1-jdk-oraclelinux7 AS jlink-package
RUN jlink --compress=2 --module-path /usr/java/openjdk-11/jmods ¥
--add-modules java.base,java.logging,java.sql,java.desktop ¥
--no-header-files ¥
--strip-debug ¥
--no-man-pages ¥
--output /linked
FROM oraclelinux:7-slim
COPY --from=jlink-package /linked /usr/java/openjdk-11
ENV JAVA_HOME= /usr/java/openjdk-11
ENV PATH="$PATH:$JAVA_HOME/bin"
RUN mkdir /app
COPY libs /app/libs
COPY quickstart-se.jar /app
CMD ["java", "-jar", "/app/quickstart-se.jar"]
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 47
1/3
$ docker images quickstart-se
REPOSITORY TAG IMAGE ID CREATED SIZE
quickstart-se 12-oracle-custom edafa9a43204 7 days ago 172MB
quickstart-se 12-oracle 35675acf14d4 7 days ago 468MB
quickstart-se 11-oracle-custom acc0127977c8 7 days ago 172MB
quickstart-se 11-oracle c3d347de8d23 7 days ago 469MB
quickstart-se 8-alpine fae858de0489 7 days ago 88.6MB
quickstart-se 8-slim 3a505f8068dc 7 days ago 210MB
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 48
1/3
$ docker images quickstart-se
REPOSITORY TAG IMAGE ID CREATED SIZE
quickstart-se 12-oracle-custom edafa9a43204 7 days ago 172MB
quickstart-se 12-oracle 35675acf14d4 7 days ago 468MB
quickstart-se 11-oracle-custom acc0127977c8 7 days ago 172MB
quickstart-se 11-oracle c3d347de8d23 7 days ago 469MB
quickstart-se 8-alpine fae858de0489 7 days ago 88.6MB
quickstart-se 8-slim 3a505f8068dc 7 days ago 210MB
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
• JDK Alpine Linux • Musl libc
49
Project Portola
https://www.musl-libc.org/
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 50
Alpine Linux ...
$ docker images quickstart-se
REPOSITORY TAG IMAGE ID CREATED SIZE
quickstart-se 12-alpine-custom d948b732d796 7 days ago 58.4MB
quickstart-se 12-alpine ba31e688dcb6 7 days ago 341MB
quickstart-se 12-oracle-custom edafa9a43204 7 days ago 172MB
quickstart-se 12-oracle 35675acf14d4 7 days ago 468MB
quickstart-se 11-oracle-custom acc0127977c8 7 days ago 172MB
quickstart-se 11-oracle c3d347de8d23 7 days ago 469MB
quickstart-se 8-alpine fae858de0489 7 days ago 88.6MB
quickstart-se 8-slim 3a505f8068dc 7 days ago 210MB
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Resources
51
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Resources
52
https://github.com/oracle/helidon
@helidon_project
https://helidon.slack.com
https://helidon.io
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Safe Harbor Statement
The preceding 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.
53
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 54
Project Helidon Overview (Japanese)
Project Helidon Overview (Japanese)

More Related Content

What's hot

Moving Towards JDK 12
Moving Towards JDK 12Moving Towards JDK 12
Moving Towards JDK 12
Simon Ritter
 
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
Leonardo Zanivan
 
Jfokus 2017 Oracle Dev Cloud and Containers
Jfokus 2017 Oracle Dev Cloud and ContainersJfokus 2017 Oracle Dev Cloud and Containers
Jfokus 2017 Oracle Dev Cloud and Containers
Mika Rinne
 
JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?
Arun Gupta
 
Spring boot microservice metrics monitoring
Spring boot   microservice metrics monitoringSpring boot   microservice metrics monitoring
Spring boot microservice metrics monitoring
Oracle Korea
 
Perth APAC Groundbreakers tour - 18c features
Perth APAC Groundbreakers tour - 18c featuresPerth APAC Groundbreakers tour - 18c features
Perth APAC Groundbreakers tour - 18c features
Connor McDonald
 
Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?
Simon Ritter
 
MySQL Innovation Day Chicago - MySQL HA So Easy : That's insane !!
MySQL Innovation Day Chicago  - MySQL HA So Easy : That's insane !!MySQL Innovation Day Chicago  - MySQL HA So Easy : That's insane !!
MySQL Innovation Day Chicago - MySQL HA So Easy : That's insane !!
Frederic Descamps
 
AIOUG - Groundbreakers - Jul 2019 - 19 Troubleshooting Tips and Tricks for Da...
AIOUG - Groundbreakers - Jul 2019 - 19 Troubleshooting Tips and Tricks for Da...AIOUG - Groundbreakers - Jul 2019 - 19 Troubleshooting Tips and Tricks for Da...
AIOUG - Groundbreakers - Jul 2019 - 19 Troubleshooting Tips and Tricks for Da...
Sandesh Rao
 
Oracle Open World 2018 / Code One : MySQL 8.0 High Availability with MySQL I...
Oracle Open World 2018 / Code One  : MySQL 8.0 High Availability with MySQL I...Oracle Open World 2018 / Code One  : MySQL 8.0 High Availability with MySQL I...
Oracle Open World 2018 / Code One : MySQL 8.0 High Availability with MySQL I...
Frederic Descamps
 
Whats new in oracle trace file analyzer 18.3.0
Whats new in oracle trace file analyzer 18.3.0Whats new in oracle trace file analyzer 18.3.0
Whats new in oracle trace file analyzer 18.3.0
Gareth Chapman
 
Hit Refresh with Oracle GoldenGate Microservices
Hit Refresh with Oracle GoldenGate MicroservicesHit Refresh with Oracle GoldenGate Microservices
Hit Refresh with Oracle GoldenGate Microservices
Bobby Curtis
 
Oracle Open World 2018 / Code One : MySQL 8.0 Document Store
Oracle Open World 2018 /  Code One : MySQL 8.0 Document StoreOracle Open World 2018 /  Code One : MySQL 8.0 Document Store
Oracle Open World 2018 / Code One : MySQL 8.0 Document Store
Frederic Descamps
 
Advanced modular development
Advanced modular development  Advanced modular development
Advanced modular development
Srinivasan Raghavan
 
Latin America Tour 2019 - 18c and 19c featues
Latin America Tour 2019   - 18c and 19c featuesLatin America Tour 2019   - 18c and 19c featues
Latin America Tour 2019 - 18c and 19c featues
Connor McDonald
 
Sangam 18 - The New Optimizer in Oracle 12c
Sangam 18 - The New Optimizer in Oracle 12cSangam 18 - The New Optimizer in Oracle 12c
Sangam 18 - The New Optimizer in Oracle 12c
Connor McDonald
 
Javantura v6 - Java SE, Today and Tomorrow - Dalibor Topic
Javantura v6 - Java SE, Today and Tomorrow - Dalibor TopicJavantura v6 - Java SE, Today and Tomorrow - Dalibor Topic
Javantura v6 - Java SE, Today and Tomorrow - Dalibor Topic
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Java ee7 1hour
Java ee7 1hourJava ee7 1hour
Java ee7 1hour
Frank Rodriguez
 
2015 JavaOne LAD JSF 2.3 & MVC 1.0
2015 JavaOne LAD JSF 2.3 & MVC 1.02015 JavaOne LAD JSF 2.3 & MVC 1.0
2015 JavaOne LAD JSF 2.3 & MVC 1.0
mnriem
 
Enterprise Java Web Application Frameworks Sample Stack Implementation
Enterprise Java Web Application Frameworks   Sample Stack ImplementationEnterprise Java Web Application Frameworks   Sample Stack Implementation
Enterprise Java Web Application Frameworks Sample Stack Implementation
Mert Çalışkan
 

What's hot (20)

Moving Towards JDK 12
Moving Towards JDK 12Moving Towards JDK 12
Moving Towards JDK 12
 
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
 
Jfokus 2017 Oracle Dev Cloud and Containers
Jfokus 2017 Oracle Dev Cloud and ContainersJfokus 2017 Oracle Dev Cloud and Containers
Jfokus 2017 Oracle Dev Cloud and Containers
 
JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?
 
Spring boot microservice metrics monitoring
Spring boot   microservice metrics monitoringSpring boot   microservice metrics monitoring
Spring boot microservice metrics monitoring
 
Perth APAC Groundbreakers tour - 18c features
Perth APAC Groundbreakers tour - 18c featuresPerth APAC Groundbreakers tour - 18c features
Perth APAC Groundbreakers tour - 18c features
 
Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?
 
MySQL Innovation Day Chicago - MySQL HA So Easy : That's insane !!
MySQL Innovation Day Chicago  - MySQL HA So Easy : That's insane !!MySQL Innovation Day Chicago  - MySQL HA So Easy : That's insane !!
MySQL Innovation Day Chicago - MySQL HA So Easy : That's insane !!
 
AIOUG - Groundbreakers - Jul 2019 - 19 Troubleshooting Tips and Tricks for Da...
AIOUG - Groundbreakers - Jul 2019 - 19 Troubleshooting Tips and Tricks for Da...AIOUG - Groundbreakers - Jul 2019 - 19 Troubleshooting Tips and Tricks for Da...
AIOUG - Groundbreakers - Jul 2019 - 19 Troubleshooting Tips and Tricks for Da...
 
Oracle Open World 2018 / Code One : MySQL 8.0 High Availability with MySQL I...
Oracle Open World 2018 / Code One  : MySQL 8.0 High Availability with MySQL I...Oracle Open World 2018 / Code One  : MySQL 8.0 High Availability with MySQL I...
Oracle Open World 2018 / Code One : MySQL 8.0 High Availability with MySQL I...
 
Whats new in oracle trace file analyzer 18.3.0
Whats new in oracle trace file analyzer 18.3.0Whats new in oracle trace file analyzer 18.3.0
Whats new in oracle trace file analyzer 18.3.0
 
Hit Refresh with Oracle GoldenGate Microservices
Hit Refresh with Oracle GoldenGate MicroservicesHit Refresh with Oracle GoldenGate Microservices
Hit Refresh with Oracle GoldenGate Microservices
 
Oracle Open World 2018 / Code One : MySQL 8.0 Document Store
Oracle Open World 2018 /  Code One : MySQL 8.0 Document StoreOracle Open World 2018 /  Code One : MySQL 8.0 Document Store
Oracle Open World 2018 / Code One : MySQL 8.0 Document Store
 
Advanced modular development
Advanced modular development  Advanced modular development
Advanced modular development
 
Latin America Tour 2019 - 18c and 19c featues
Latin America Tour 2019   - 18c and 19c featuesLatin America Tour 2019   - 18c and 19c featues
Latin America Tour 2019 - 18c and 19c featues
 
Sangam 18 - The New Optimizer in Oracle 12c
Sangam 18 - The New Optimizer in Oracle 12cSangam 18 - The New Optimizer in Oracle 12c
Sangam 18 - The New Optimizer in Oracle 12c
 
Javantura v6 - Java SE, Today and Tomorrow - Dalibor Topic
Javantura v6 - Java SE, Today and Tomorrow - Dalibor TopicJavantura v6 - Java SE, Today and Tomorrow - Dalibor Topic
Javantura v6 - Java SE, Today and Tomorrow - Dalibor Topic
 
Java ee7 1hour
Java ee7 1hourJava ee7 1hour
Java ee7 1hour
 
2015 JavaOne LAD JSF 2.3 & MVC 1.0
2015 JavaOne LAD JSF 2.3 & MVC 1.02015 JavaOne LAD JSF 2.3 & MVC 1.0
2015 JavaOne LAD JSF 2.3 & MVC 1.0
 
Enterprise Java Web Application Frameworks Sample Stack Implementation
Enterprise Java Web Application Frameworks   Sample Stack ImplementationEnterprise Java Web Application Frameworks   Sample Stack Implementation
Enterprise Java Web Application Frameworks Sample Stack Implementation
 

Similar to Project Helidon Overview (Japanese)

JAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web ServicesJAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web Services
Arun Gupta
 
20180921_DOAG_BigDataDays_OracleSpatialandPython_kpatenge
20180921_DOAG_BigDataDays_OracleSpatialandPython_kpatenge20180921_DOAG_BigDataDays_OracleSpatialandPython_kpatenge
20180921_DOAG_BigDataDays_OracleSpatialandPython_kpatenge
Karin Patenge
 
Oracle GoldenGate 18c - REST API Examples
Oracle GoldenGate 18c - REST API ExamplesOracle GoldenGate 18c - REST API Examples
Oracle GoldenGate 18c - REST API Examples
Bobby Curtis
 
Java Cloud and Container Ready
Java Cloud and Container ReadyJava Cloud and Container Ready
Java Cloud and Container Ready
CodeOps Technologies LLP
 
ADBA (Asynchronous Database Access)
ADBA (Asynchronous Database Access)ADBA (Asynchronous Database Access)
ADBA (Asynchronous Database Access)
Logico
 
Oracle goldegate microservice
Oracle goldegate microserviceOracle goldegate microservice
Oracle goldegate microservice
Mojtaba Khandan
 
Developing cloud-native microservices using project Helidon
Developing cloud-native microservices using project HelidonDeveloping cloud-native microservices using project Helidon
Developing cloud-native microservices using project Helidon
Dmitry Kornilov
 
Helidon: Java Libraries for Writing Microservices
Helidon: Java Libraries for Writing MicroservicesHelidon: Java Libraries for Writing Microservices
Helidon: Java Libraries for Writing Microservices
Dmitry Kornilov
 
Diagnose Your Microservices
Diagnose Your MicroservicesDiagnose Your Microservices
Diagnose Your Microservices
Marcus Hirt
 
Java EE7
Java EE7Java EE7
Java EE7
Jay Lee
 
Marcin Szałowicz - MySQL Workbench
Marcin Szałowicz - MySQL WorkbenchMarcin Szałowicz - MySQL Workbench
Marcin Szałowicz - MySQL Workbench
Women in Technology Poland
 
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
Olivier DASINI
 
2015 Java update and roadmap, JUG sevilla
2015  Java update and roadmap, JUG sevilla2015  Java update and roadmap, JUG sevilla
2015 Java update and roadmap, JUG sevilla
Trisha Gee
 
Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019
Shaun Smith
 
“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core
C4Media
 
JDK 10 Java Module System
JDK 10 Java Module SystemJDK 10 Java Module System
JDK 10 Java Module System
Wolfgang Weigend
 
112815 java ee8_davidd
112815 java ee8_davidd112815 java ee8_davidd
112815 java ee8_davidd
Takashi Ito
 
20190713_MySQL開発最新動向
20190713_MySQL開発最新動向20190713_MySQL開発最新動向
20190713_MySQL開発最新動向
Machiko Ikoma
 
Have You Seen Java EE Lately?
Have You Seen Java EE Lately?Have You Seen Java EE Lately?
Have You Seen Java EE Lately?
Reza Rahman
 
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX LondonJAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
Arun Gupta
 

Similar to Project Helidon Overview (Japanese) (20)

JAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web ServicesJAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web Services
 
20180921_DOAG_BigDataDays_OracleSpatialandPython_kpatenge
20180921_DOAG_BigDataDays_OracleSpatialandPython_kpatenge20180921_DOAG_BigDataDays_OracleSpatialandPython_kpatenge
20180921_DOAG_BigDataDays_OracleSpatialandPython_kpatenge
 
Oracle GoldenGate 18c - REST API Examples
Oracle GoldenGate 18c - REST API ExamplesOracle GoldenGate 18c - REST API Examples
Oracle GoldenGate 18c - REST API Examples
 
Java Cloud and Container Ready
Java Cloud and Container ReadyJava Cloud and Container Ready
Java Cloud and Container Ready
 
ADBA (Asynchronous Database Access)
ADBA (Asynchronous Database Access)ADBA (Asynchronous Database Access)
ADBA (Asynchronous Database Access)
 
Oracle goldegate microservice
Oracle goldegate microserviceOracle goldegate microservice
Oracle goldegate microservice
 
Developing cloud-native microservices using project Helidon
Developing cloud-native microservices using project HelidonDeveloping cloud-native microservices using project Helidon
Developing cloud-native microservices using project Helidon
 
Helidon: Java Libraries for Writing Microservices
Helidon: Java Libraries for Writing MicroservicesHelidon: Java Libraries for Writing Microservices
Helidon: Java Libraries for Writing Microservices
 
Diagnose Your Microservices
Diagnose Your MicroservicesDiagnose Your Microservices
Diagnose Your Microservices
 
Java EE7
Java EE7Java EE7
Java EE7
 
Marcin Szałowicz - MySQL Workbench
Marcin Szałowicz - MySQL WorkbenchMarcin Szałowicz - MySQL Workbench
Marcin Szałowicz - MySQL Workbench
 
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
 
2015 Java update and roadmap, JUG sevilla
2015  Java update and roadmap, JUG sevilla2015  Java update and roadmap, JUG sevilla
2015 Java update and roadmap, JUG sevilla
 
Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019
 
“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core
 
JDK 10 Java Module System
JDK 10 Java Module SystemJDK 10 Java Module System
JDK 10 Java Module System
 
112815 java ee8_davidd
112815 java ee8_davidd112815 java ee8_davidd
112815 java ee8_davidd
 
20190713_MySQL開発最新動向
20190713_MySQL開発最新動向20190713_MySQL開発最新動向
20190713_MySQL開発最新動向
 
Have You Seen Java EE Lately?
Have You Seen Java EE Lately?Have You Seen Java EE Lately?
Have You Seen Java EE Lately?
 
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX LondonJAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
 

More from Logico

Welcome, Java 15! (Japanese)
Welcome, Java 15! (Japanese)Welcome, Java 15! (Japanese)
Welcome, Java 15! (Japanese)
Logico
 
Look into Project Valhalla from CLR viewpoint
Look into Project Valhalla from CLR viewpointLook into Project Valhalla from CLR viewpoint
Look into Project Valhalla from CLR viewpoint
Logico
 
Jvmls 2019 feedback valhalla update
Jvmls 2019 feedback   valhalla updateJvmls 2019 feedback   valhalla update
Jvmls 2019 feedback valhalla update
Logico
 
Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)
Logico
 
Another compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilationAnother compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilation
Logico
 
Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)
Logico
 
CDI 2.0 (JSR 365) - Java Day Tokyo 2017 (English)
CDI 2.0 (JSR 365) - Java Day Tokyo 2017 (English)CDI 2.0 (JSR 365) - Java Day Tokyo 2017 (English)
CDI 2.0 (JSR 365) - Java Day Tokyo 2017 (English)
Logico
 
Polyglot on the JVM with Graal (Japanese)
Polyglot on the JVM with Graal (Japanese)Polyglot on the JVM with Graal (Japanese)
Polyglot on the JVM with Graal (Japanese)
Logico
 
Nashorn in the future (Japanese)
Nashorn in the future (Japanese)Nashorn in the future (Japanese)
Nashorn in the future (Japanese)
Logico
 
Nashorn in the future (English)
Nashorn in the future (English)Nashorn in the future (English)
Nashorn in the future (English)
Logico
 
これからのNashorn
これからのNashornこれからのNashorn
これからのNashorn
Logico
 
Nashorn in the future (English)
Nashorn in the future (English)Nashorn in the future (English)
Nashorn in the future (English)
Logico
 
Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)
Logico
 
Nashorn : JavaScript Running on Java VM (Japanese)
Nashorn : JavaScript Running on Java VM (Japanese)Nashorn : JavaScript Running on Java VM (Japanese)
Nashorn : JavaScript Running on Java VM (Japanese)
Logico
 

More from Logico (14)

Welcome, Java 15! (Japanese)
Welcome, Java 15! (Japanese)Welcome, Java 15! (Japanese)
Welcome, Java 15! (Japanese)
 
Look into Project Valhalla from CLR viewpoint
Look into Project Valhalla from CLR viewpointLook into Project Valhalla from CLR viewpoint
Look into Project Valhalla from CLR viewpoint
 
Jvmls 2019 feedback valhalla update
Jvmls 2019 feedback   valhalla updateJvmls 2019 feedback   valhalla update
Jvmls 2019 feedback valhalla update
 
Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)
 
Another compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilationAnother compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilation
 
Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)
 
CDI 2.0 (JSR 365) - Java Day Tokyo 2017 (English)
CDI 2.0 (JSR 365) - Java Day Tokyo 2017 (English)CDI 2.0 (JSR 365) - Java Day Tokyo 2017 (English)
CDI 2.0 (JSR 365) - Java Day Tokyo 2017 (English)
 
Polyglot on the JVM with Graal (Japanese)
Polyglot on the JVM with Graal (Japanese)Polyglot on the JVM with Graal (Japanese)
Polyglot on the JVM with Graal (Japanese)
 
Nashorn in the future (Japanese)
Nashorn in the future (Japanese)Nashorn in the future (Japanese)
Nashorn in the future (Japanese)
 
Nashorn in the future (English)
Nashorn in the future (English)Nashorn in the future (English)
Nashorn in the future (English)
 
これからのNashorn
これからのNashornこれからのNashorn
これからのNashorn
 
Nashorn in the future (English)
Nashorn in the future (English)Nashorn in the future (English)
Nashorn in the future (English)
 
Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)
 
Nashorn : JavaScript Running on Java VM (Japanese)
Nashorn : JavaScript Running on Java VM (Japanese)Nashorn : JavaScript Running on Java VM (Japanese)
Nashorn : JavaScript Running on Java VM (Japanese)
 

Recently uploaded

Photoshop Tutorial for Beginners (2024 Edition)
Photoshop Tutorial for Beginners (2024 Edition)Photoshop Tutorial for Beginners (2024 Edition)
Photoshop Tutorial for Beginners (2024 Edition)
alowpalsadig
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
dakas1
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
Marcin Chrost
 
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptxMigration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
ervikas4
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
kalichargn70th171
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
Bert Jan Schrijver
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
kalichargn70th171
 
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Paul Brebner
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
Luigi Fugaro
 
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
kgyxske
 
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptxOperational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
sandeepmenon62
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...
Paul Brebner
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
XfilesPro
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
ShulagnaSarkar2
 
Boost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management AppsBoost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management Apps
Jhone kinadey
 
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid
 

Recently uploaded (20)

Photoshop Tutorial for Beginners (2024 Edition)
Photoshop Tutorial for Beginners (2024 Edition)Photoshop Tutorial for Beginners (2024 Edition)
Photoshop Tutorial for Beginners (2024 Edition)
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
 
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptxMigration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
 
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
 
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
 
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptxOperational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
 
Boost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management AppsBoost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management Apps
 
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
 

Project Helidon Overview (Japanese)

  • 1. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Project Helidon Akihiro Nishikawa Oracle Corporation Japan Java Libraries for Microservices 1
  • 2. Copyright © 2018, 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, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. 2
  • 3. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Program Agenda What’s Helidon? Demo Diving a little bit deeply... Helidon can also run on Custom JRE! Resources 1 2 3 4 5 3
  • 4. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. What’s Helidon? 4
  • 5. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 5
  • 6. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 6 • Microframework • Functional Style • Reactive • Transparent • MicroProfile • Declarative Style • CDI, JAX-RS, JSON-P • Familiar to Java EE developers
  • 7. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 7 Java Microservice Frameworks Smaller Larger Spring Boot Microframeworks MicroProfile Based Open Liberty Full-Stack Dropwizard
  • 8. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 8 Architecture Helidon SE Netty WebServer SecurityConfig Helidon MP CDI JAX-RS JSON-P
  • 9. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Eclipse MicroProfile • Java EE 2016 • RedHat IBM Tomitribe Payara • • Java EE API MicroProfile API – JAX-RS, CDI, JSON-P, JSON-B – MP Config, Metrics, Health Check, Fault Tolerance, JWT Auth – Open API, OpenTracing, RestClient • 9 2.1 (2018/10/19)
  • 10. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Reactive WebServer • Flow API • Netty • OpenTracing Metrics • JAX-RS, JSON-P support • Config • • • • • 10 Security • • • • • – OIDC – JWT – Google Login Helidon SE
  • 11. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Helidon SE import io.helidon.webserver.Routing; import io.helidon.webserver.WebServer; public static void main(String[] args) { WebServer.create( Routing.builder() .get("/greet", (req, res) -> res.send("Hello World!")) .build()).start(); } Helidon MP import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; public class GreetService { @GET @Path("/greet") public String getMsg() { return "Hello World!"; } } 11 SE/MP Hello World
  • 12. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 12 CDI Extensions Preview 0.10.5 Helidon MP Helidon SE Microprofile 1.2 • WebServer, Config, Security • JSON-P • Metrics • OpenTracing • HTTP/2 (experimental) CDI Extensions MicroProfile Config CDI 2.0 CDI Extension
  • 13. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. • MicroProfile 2.x • Reactive HTTP Client • GraalVM • Project Starter UI • Reactive storage (NoSQL, ADBA) • Open API • Eventing 13
  • 14. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Demo 14
  • 15. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Demo • Quickstart • Server config and startup • Basic Routing • Basic JSON handling • Docker Container Creation • Running on Kubernetes 15
  • 16. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 16 Archetype Helidon SE mvn archetype:generate -DinteractiveMode=false ¥ -DarchetypeGroupId=io.helidon.archetypes ¥ -DarchetypeArtifactId=helidon-quickstart-se ¥ -DarchetypeVersion=0.10.5 ¥ -DgroupId=io.helidon.examples ¥ -DartifactId=quickstart-se ¥ -Dpackage=io.helidon.examples.quickstart.se Helidon MP mvn archetype:generate -DinteractiveMode=false ¥ -DarchetypeGroupId=io.helidon.archetypes ¥ -DarchetypeArtifactId=helidon-quickstart-mp ¥ -DarchetypeVersion=0.10.5 ¥ -DgroupId=io.helidon.examples ¥ -DartifactId=quickstart-mp ¥ -Dpackage=io.helidon.examples.quickstart.mp
  • 17. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 17
  • 18. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 18 mvn package java -jar target/quickstart-se.jar
  • 19. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Dockerfile #FROM openjdk:8-jre-slim FROM openjdk:8-jre-alpine RUN mkdir /app COPY libs /app/libs COPY quickstart-se.jar /app CMD ["java", "-jar", "/app/quickstart-se.jar"] 19
  • 20. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 20 Docker docker build -t quickstart-se target docker run --rm -p 8080:8080 quickstart-se
  • 21. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. kind: Service apiVersion: v1 metadata: name: quickstart-se labels: app: quickstart-se spec: type: NodePort selector: app: quickstart-se ports: - port: 8080 targetPort: 8080 name: http --- kind: Deployment apiVersion: extensions/v1beta1 metadata: name: quickstart-se spec: replicas: 1 template: metadata: labels: app: quickstart-se version: v1 spec: containers: - name: quickstart-se image: quickstart-se:12alpine-custom imagePullPolicy: IfNotPresent ports: - containerPort: 8080 --- 21 app.yaml
  • 22. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 22 Kubernetes kubectl create -f target/app.yaml kubectl get service
  • 23. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Diving a little bit deeply... 23
  • 24. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 24 Module $ jar --file=target/libs/helidon-common-0.10.5.jar --describe-module io.helidon.common jar:file:///Users/oracle/Documents/Helidon/quickstart- se8/target/libs/helidon-common-0.10.5.jar/!module-info.class exports io.helidon.common requires java.base mandated requires java.logging
  • 25. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Server (SE) # application.yaml app: greeting: "Hello" server: sockets: - secure: port: 443 backlog: 1024 receive-buffer: 0 timeout: 60000 ssl: .... - another: port: 12041 25 ServerConfiguration serverConfig = ServerConfiguration.fromConfig(config.get("server"));
  • 26. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. # 3 default MicroProfile Config sources: # System.getProperties() # System.getenv() # META-INF/microprofile-config.properties # default is localhost server.host=some.host # default is 7001 server.port=7011 # Helidon configuration (optional) # Length of queue for incoming connections. server.backlog: 512 # TCP receive window (Default:0) server.receive-buffer: 256 # Socket timeout (msec) defaults:0 (infinite) server.timeout: 30000 # Default is CPU_COUNT * 2 server.workers=4 # Default is not to use SSL ssl: private-key: keystore-resource-path: "certificate.p12" keystore-passphrase: "abcd" 26 Server (MP)
  • 27. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Routing (SE) 27 MP JAX-RS 2.0 private static Routing createRouting() { return Routing.builder() .register(JsonSupport.get()) .register("/greet", new GreetService()) .build(); } public class GreetService implements Service { ... public final void update(final Routing.Rules rules) { rules .get("/", this::getDefaultMessage) .get("/{name}", this::getMessage) .put("/greeting/{greeting}", this::updateGreeting); } }
  • 28. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. JSON 28 SE JSON-P private static Routing createRouting() { return Routing.builder() .register(JsonSupport.get()) .register("/greet", new GreetService()) .build(); } public class GreetService implements Service { ... public final void update(final Routing.Rules rules) { rules .get("/", this::getDefaultMessage) .get("/{name}", this::getMessage) .put("/greeting/{greeting}", this::updateGreeting); } }
  • 29. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Metrics • Prometheus • maven 29 <dependencies> <dependency> <groupId>io.helidon.microprofile.metrics</groupId> <artifactId>helidon-metrics-se</artifactId> </dependency> </dependencies>
  • 30. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 30 import io.helidon.metrics.MetricsSupport; ... final MetricsSupport metrics = MetricsSupport.create(); ... // Endpoint final MetricsSupport metrics = MetricsSupport.create(); greetService = new GreetService(); return Routing.builder() .register(JsonSupport.get()) .register(metrics) .register("/greet", greetService) .get("/alive", Main::alive) .get("/ready", Main::ready) .build(); ...
  • 31. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 31 import io.helidon.metrics.RegistryFactory; import org.eclipse.microprofile.metrics.Counter; import org.eclipse.microprofile.metrics.MetricRegistry; ... private final MetricRegistry registry = RegistryFactory.getRegistryFactory() .get() .getRegistry(MetricRegistry.Type.APPLICATION); ... // Counter private final Counter greetCounter = registry.counter("accessctr"); ... // Counter greetCounter.inc(); ...
  • 32. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 32 Prometheus JSON
  • 33. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. OpenTracing • Reactive Web Server OpenTracing Zipkin • Zipkin Tracing • 33 <dependency> <groupId>io.helidon.webserver</groupId> <artifactId>helidon-webserver-zipkin</artifactId> </dependency>
  • 34. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 34 // OpenTracing Tracer ServerConfiguration.builder() .tracer(new ZipkinTracerBuilder.forService("Tracing ") .zipkin("Zipkin URL") .build()) .build()
  • 35. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 35 Routing Routing.builder() .register(webSecurity) .register(JsonSupport.get()) .register(MetricsSupport.create()) .get("/ready", (req, res) -> { res.status(Http.Status.OK_200); res.send("Ready!"); }) .register(StaticContentSupport.builder("/WEB", Main.class.getClassLoader()) .welcomeFileName("index.html") .build()) .register("/greet", new GreetService()) .build(); <src>/resources
  • 36. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. • • • • Audit 36
  • 37. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Authentication artifactId JWT Provider helidon-security-provider-jwt HTTP Basic Authorization helidon-security-provider-http-auth HTTP Digest Authorization helidon-security-provider-http-auth Header Assertion helidon-security-provider-header-atn HTTP Signatures helidon-security-provider-http-signature ABAC (Attribute based access control) Authorization helidon-security-provider-abac Google Login Authentication Provider helidon-security-provider-google-login OIDC (Open ID Connect) Authentication provider helidon-security-provider-oidc IDCS Role Mapping Provider helidon-security-provider-idcs-mapper 37
  • 38. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 38 • • Reactive Web Server • Jersey <dependency> <groupId>io.helidon.security</groupId> <artifactId>helidon-security</artifactId> </dependency> <dependency> <groupId>io.helidon.security</groupId> <artifactId>helidon-security-integration-webserver</artifactId> </dependency> <dependency> <groupId>io.helidon.security</groupId> <artifactId>helidon-security-integration-jersey</artifactId> </dependency>
  • 39. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. • 39 private static WebSecurity createWebSecurity(final Config config) { Security security = Security.builder() .addProvider(GoogleTokenProvider .builder() .clientId( config.get("security.properties.google-client-id") .asString())) .build(); return WebSecurity.from(security); }
  • 40. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. (2) • Routing • 40 Routing.builder().register(webSecurity) .register(JsonSupport.get()) .register(MetricsSupport.create()) .register("/greet", new GreetService()) .build(); final Routing.Rules rules; rules.any(this::counterFilter) .get("/", this::getDefaultMessageHandler) .get("/greeting",this::getGreetingHandler) .get("/{name}", this::getMessageHandler) .put("/greeting/{greeting}", WebSecurity.authenticate(), this::updateGreetingHandler);
  • 41. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Etcd • • 41 Etcd <dependency> <groupId>io.helidon.config</groupId> <artifactId>helidon-config-etcd</artifactId> </dependency> Config config = Config.from( EtcdConfigSourceBuilder.from(URI.create("http://my-etcd:2379"), "/config.yaml", EtcdConfigSourceBuilder.EtcdApi.v3));
  • 42. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Helidon can also run on Custom JRE! 42
  • 43. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 43 Java 8, 11, 12... $ docker images quickstart-se REPOSITORY TAG IMAGE ID CREATED SIZE quickstart-se 12-oracle 35675acf14d4 7 days ago 468MB quickstart-se 11-oracle c3d347de8d23 7 days ago 469MB quickstart-se 8-alpine fae858de0489 7 days ago 88.6MB quickstart-se 8-slim 3a505f8068dc 7 days ago 210MB
  • 44. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 44 Java 8, 11, 12... $ docker images quickstart-se REPOSITORY TAG IMAGE ID CREATED SIZE quickstart-se 12-oracle 35675acf14d4 7 days ago 468MB quickstart-se 11-oracle c3d347de8d23 7 days ago 469MB quickstart-se 8-alpine fae858de0489 7 days ago 88.6MB quickstart-se 8-slim 3a505f8068dc 7 days ago 210MB
  • 45. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. JRE • jdeps • jlink JRE 45 $ jdeps --list-deps quickstart-se.jar $ jlink --compress=2 --module-path /opt/openjdk-12/jmods ¥ --add-modules ¥ java.base,java.logging,java.sql,java.desktop ¥ --no-header-files ¥ --no-man-pages ¥ --output /linked
  • 46. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 46 FROM openjdk:11.0.1-jdk-oraclelinux7 AS jlink-package RUN jlink --compress=2 --module-path /usr/java/openjdk-11/jmods ¥ --add-modules java.base,java.logging,java.sql,java.desktop ¥ --no-header-files ¥ --strip-debug ¥ --no-man-pages ¥ --output /linked FROM oraclelinux:7-slim COPY --from=jlink-package /linked /usr/java/openjdk-11 ENV JAVA_HOME= /usr/java/openjdk-11 ENV PATH="$PATH:$JAVA_HOME/bin" RUN mkdir /app COPY libs /app/libs COPY quickstart-se.jar /app CMD ["java", "-jar", "/app/quickstart-se.jar"]
  • 47. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 47 1/3 $ docker images quickstart-se REPOSITORY TAG IMAGE ID CREATED SIZE quickstart-se 12-oracle-custom edafa9a43204 7 days ago 172MB quickstart-se 12-oracle 35675acf14d4 7 days ago 468MB quickstart-se 11-oracle-custom acc0127977c8 7 days ago 172MB quickstart-se 11-oracle c3d347de8d23 7 days ago 469MB quickstart-se 8-alpine fae858de0489 7 days ago 88.6MB quickstart-se 8-slim 3a505f8068dc 7 days ago 210MB
  • 48. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 48 1/3 $ docker images quickstart-se REPOSITORY TAG IMAGE ID CREATED SIZE quickstart-se 12-oracle-custom edafa9a43204 7 days ago 172MB quickstart-se 12-oracle 35675acf14d4 7 days ago 468MB quickstart-se 11-oracle-custom acc0127977c8 7 days ago 172MB quickstart-se 11-oracle c3d347de8d23 7 days ago 469MB quickstart-se 8-alpine fae858de0489 7 days ago 88.6MB quickstart-se 8-slim 3a505f8068dc 7 days ago 210MB
  • 49. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. • JDK Alpine Linux • Musl libc 49 Project Portola https://www.musl-libc.org/
  • 50. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 50 Alpine Linux ... $ docker images quickstart-se REPOSITORY TAG IMAGE ID CREATED SIZE quickstart-se 12-alpine-custom d948b732d796 7 days ago 58.4MB quickstart-se 12-alpine ba31e688dcb6 7 days ago 341MB quickstart-se 12-oracle-custom edafa9a43204 7 days ago 172MB quickstart-se 12-oracle 35675acf14d4 7 days ago 468MB quickstart-se 11-oracle-custom acc0127977c8 7 days ago 172MB quickstart-se 11-oracle c3d347de8d23 7 days ago 469MB quickstart-se 8-alpine fae858de0489 7 days ago 88.6MB quickstart-se 8-slim 3a505f8068dc 7 days ago 210MB
  • 51. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Resources 51
  • 52. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Resources 52 https://github.com/oracle/helidon @helidon_project https://helidon.slack.com https://helidon.io
  • 53. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Safe Harbor Statement The preceding 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. 53
  • 54. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 54