Project Helidon Introduction Confidential – Oracle Internal/Restricted/Highly Restricted Project Helidon Introduction Java Libraries for Microservices 5This is a Title Slide without Graphic slide ideal for including a picture with a brief title, subtitle and presenter information. Do not customize this slide with your own background. Joe Di Pol Romain Grécourt Oracle Oct 24, 2018
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.
Agenda 1 Helidon Overview Demo 2
A set of Java libraries for developing microservices.
Microframework Functional style Reactive Transparent MicroProfile Declarative style CDI, JAX-RS, JSON-P Familiar to Java EE devs
Java Microservice Frameworks Larger Full-Stack Spring Boot Dropwizard What Java Frameworks are out there for writing microservices? They fall into a few categories: Microframeworks Simple, fun, intentionally small feature set Spark, Javalin, Micronaut, etc MicroProfile Friendly to Java EE developers. A bit heavier (CDI) Thorntail (was Wildfly Swarm), OpenLiberty, Payara Full Featured Fuller feature set, more to learn Spring Boot And some float in between: DropWizard Helidon is a MicroProfile implementation on top of Helidon Core – a microframework. So you get your choice of programing models: Helidon Core: simple, functional, lightweight. For those that want a microframework. MicroProfile; JAX-RS, CDI, plus more. Familiar to Java EE developers MicroProfile Based Open Liberty Microframeworks Smaller
Helidon Architecture Helidon SE Helidon MP Netty Simple Transparent No classloading tricks No packaging tricks Just a Java SE application CDI JAX-RS JSON-P WebServer Config Security Netty
What is Eclipse MicroProfile? Proposed in 2016 as a microservices profile for Java EE Initiated by RedHat, IBM, Tomitribe and Payara Defines a profile for microservices Key Java EE APIs + new MicroProfile APIs Implemented by multiple vendors Currently at 2.1: JAX-RS, CDI, JSON-P, JSON-B MP Config, Metrics, Health Check, Fault Tolerance, JWT Auth Open API, OpenTracing, RestClient 1.x: JAX-RS 2.0, CDI 1.2, JSON-P 1.0 1.4: Config 1.3, Fault tolerance 1.1, Health Check 1.0, Metrics 1.1, JWT Auth 1.1, OpenAPI 1.0, OpenTracing 1.1, Rest Client 1.1 1.3: Config 1.2, Fault tolerance 1.0, Health Check 1.0, Metrics 1.1, JWT Auth 1.0, OpenAPI 1.0, OpenTracing 1.0, Rest Client 1.0 1.2: Config 1.1, Fault tolerance 1.0, Health Check 1.0, Metrics 1.0, JWT Auth 1.0 2.x: CDI 2.0, JAX-RS 2.1, JSON-B 1.0, JSON-P 1.1, Common Annotations 1.3 2.0: Config 1.3, Fault tolerance 1.1, Health Check 1.0, Metrics 1.1, JWT Auth 1.1, OpenAPI 1.0, OpenTracing 1.1, Rest Client 1.1 2.1: Config 1.3, Fault tolerance 1.1, Health Check 1.0, Metrics 1.1, JWT Auth 1.1, OpenAPI 1.0, OpenTracing 1.2, Rest Client 1.1 Helidon: CDI 2.0, JAX-RS 2.1, JSON-P 1.1.2 0.10.2: Config 1.2.1, Fault tolerance 1.0, Health Check 1.0, Metrics 1.1, JWT Auth 1.1, OpenAPI 1.0, OpenTracing 1.1, Rest Client 1.1
What is Helidon SE? Reactive WebServer Functional routing model with reactive Flow API Built on Netty OpenTracing and Metrics JAX-RS, JSON-P support Static content support Config Flexible, typed config model Multiple data sources Hierarchical model Dynamic updates Extensible Security Authentication Authorization Outbound Security Auditing Extensible Built-in Providers OIDC JWT Google Login
Hello Worlds Helidon SE Helidon MP 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(); } import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; public class GreetService { @GET @Path(“/greet”) public String getMsg() { return "Hello World!"; }
Helidon CDI Extensions CDI extensions to ease integration with cloud services DataSource Redis Oracle Cloud Object Store Tech Preview For details see talk DEV5422
Status 0.10.4 Backlog Helidon MP: Microprofile ~1.2 Helidon SE Less JWT plus CDI 2.0, JAX-RS 2.1, JSON-P 1.1, JSON-B 1.0 Helidon SE WebServer, Config, Security JSON-P Metrics OpenTracing HTTP/2 (experimental) CDI Extensions MicroProfile 2.x Reactive HTTP Client GraalVM integration Project Starter UI Reactive storage (NoSQL, ADBC) Open API Eventing
Open Source Project https://github.com/oracle/helidon @helidon_project https://helidon.slack.com https://helidon.io
Sessions Day Time Room Session Title Tue 4:00pm Lounge A THT6770 Meet the Experts Area at the Developer Exchange: Helidon Wed 12:30pm 2011 DEV5539 Helidon: Java Libraries for Writing Microservices 2016 DEV5432 Writing Kubernetes controllers using Java SE and CDI 2.0 Thu 11:00am DEV5422 Helidon Extensions: CDI Extensions for the Cloud 12:00pm 2003 DEV5371 Helidon Deep Dive: An Up-close Look at the Helidon Java APIs for Microservices 2:00pm 2006 DEV5580 GraalVM Vision and Roadmap
Demo Quickstarts Server config and startup Basic Routing Basic JSON handling
Copyright © 2018 Oracle. All rights reserved. Q & A Copyright © 2018 Oracle. All rights reserved.