Project Helidon, introduced by Oracle in September 2018, features an asynchronous reactive web server built on top of Netty. Oracle designed Helidon to be lightweight, easy, and fast for building microservices-based applications. There are two programming modes: Helidon SE, featuring microframeworks, and Helidon MP, which supports MicroProfile. This session provides an overview of Helidon, followed by live demonstrations of how to get started with both Helidon SE and Helidon MP, along with an application.
2. WHO'S MIKE?WHO'S MIKE?
Bachelor of Science, Computer Science from
Senior Research Technician, petrochemical research
organization
Java Queue News Editor,
Past President,
(ACGNJ)
Founder & Co-Facilitator,
Rutgers University
InfoQ
Amateur Computer Group of New
Jersey
ACGNJ Java Users Group
1 . 2
4. WHAT IS HELIDON?WHAT IS HELIDON?
A collection of Java libraries designed for creating
microservices-based applications
Helidon SE
Helidon MP
supports MicroPro le 3.0 and MicroPro le 2.2
Cloud Native Java
Latest version: 1.3.0
7. WHY HELIDON?WHY HELIDON?
Dmitry KornilovDmitry Kornilov
Senior Software Development Manager at OracleSenior Software Development Manager at Oracle
“The work on Helidon started some time ago. When
microservices architecture started to become very
popular for creating cloud services, the development
experience also needed to change. Java EE is a stable
technology but it has a lot of legacy code. Instead of
building microservices on top of Java EE, we realized
that we needed a new framework which is designed
to build microservices from the scratch. That's how
Helidon was born.”
9. HELIDON COMPONENTSHELIDON COMPONENTS
WEB SERVERWEB SERVER
Fully reactive and non-blocking HTTP server built on
The WebServer interface includes support for
con guration, routing, error handling, and building
metrics and health endpoints
Netty
12. // starts the server on a random available port
public static void main(String[] args) throws Exception {
WebServer webServer = WebServer
.create(Routing.builder()
.any((req, res) -> res.send("It works!"))
.build())
.start()
.toCompletableFuture()
.get(10, TimeUnit.SECONDS);
System.out.println("Server started at: http://localhost:"
}
6 . 3
13. CONFIGCONFIG
Allows an application to load and process
con guration properties into a Config object
Properties are read from a de ned
application.properties or
application.yaml le in
/src/main/resources
6 . 4
16. // starts the server on a port defined in application.yaml
public void startWebServerUsingDefinedPort() throws Exception {
Config config = Config.create();
ServerConfiguration serverConfig = ServerConfiguration.fromCo
WebServer webServer = WebServer
.create(serverConfig,Routing.builder()
.any((req,res) -> res.send("It works!" + "n")
.build())
.start()
.toCompletableFuture()
.get(10,TimeUnit.SECONDS);
System.out.println("Server started at: http://localhost:" + w
webServer.shutdown().toCompletableFuture();
}
6 . 7
17. SECURITYSECURITY
The Security class provides support for:
authentication
authorization
audit
A number of security providers for use in Helidon
applications have been implemented
6 . 8
24. Config config = Config.create();
Security security = Security.builder()
.config(config)
.addProvider(...)
.build();
String user = config.get("http-basic-auth.users.login").asString(
String password = config.get("http-basic-auth.users.password").as
System.out.println("n");
System.out.println("INFO: user = " + user);
System.out.println("INFO: password = " + password);
SecurityTime time = SecurityTime.builder().build();
time = security.getServerTime();
System.out.println("INFO: server time = " + time.toString());
System.out.println("n");
6 . 15
25. MICROPROFILEMICROPROFILE
A full suite of APIs for optimizing enterprise Java in
a microservices architecture
A collaboration of Java EE vendors
6 . 16
28. CDI PORTABLE EXTENSIONSCDI PORTABLE EXTENSIONS
HikariCP Data Sources
Oracle UCP Data Sources
Jedis Clients
Oracle Cloud Infrastructure (OCI) Object Storage
Clients
Java Transaction API objects
6 . 19
29. METRICSMETRICS
Provides a uni ed way to export monitoring data
(telemetry) to management agents, and a uni ed
API that all application developers can use to
expose their telemetry data
6 . 20
39. GETTING STARTEDGETTING STARTED
HELIDON SEHELIDON SE
// generates and packages the Helidon SE example to create a REST
$ mvn archetype:generate -DinteractiveMode=false
-DarchetypeGroupId=io.helidon.archetypes
-DarchetypeArtifactId=helidon-quickstart-se
-DarchetypeVersion=1.3.0
-DgroupId=io.helidon.examples
-DartifactId=helidon-quickstart-se
-Dpackage=io.helidon.examples.quickstart.se
$ cd quickstart-se
$ mvn package
$ java -jar target/quickstart-se.jar
43. DEMO APPLICATIONDEMO APPLICATION
A movie application built on top the Helidon MP
quickstart example
Based on a written by , self-
employed technical consultant, solution architect
and full-stack developer
tutorial Hantsy Bai
46. NY/NJ/PA JAVA USERS GROUPSNY/NJ/PA JAVA USERS GROUPS
ACGNJ Java Users Group
facilitated by Mike Redlich & Barry Burd
NYJavaSIG
facilitated by Frank Greco
javasig.org
javasig.com
48. PhillyJUG
facilitated by Paul Burton, et.al.
Princeton Java Users Group
facilitated by Yakov Fain
meetup.com/PhillyJUG
meetup.com/NJFlex
12 . 2
49. FURTHER READINGFURTHER READING
TECHNICAL ARTICLESTECHNICAL ARTICLES
Hantsy Bai
November 30, 2018
Eugen Paraschiv
November 8, 2018
Todd Sharp
October 3, 2018
Building an Application with Helidon MP
Microservices with Oracle Helidon
Microservices From Dev To Deploy, Part 1: Getting Started With
Helidon
52. INFOQ NEWSINFOQ NEWS
July 19, 2019
March 12, 2019
October 10, 2018
Helidon Supports GraalVM for Native Executable Applications
Helidon V1 Brings API Stability and MicroPro le 1.2 Support
Oracle Introduces Helidon - A Lightweight Java Microservices
Framework
13 . 3
53. UPCOMING ACGNJ JAVA USERSUPCOMING ACGNJ JAVA USERS
GROUP MEETINGSGROUP MEETINGS
Tuesday, October 8, 2019
Tuesday, October 22, 2019
Monday, November 18, 2019
Beautiful SDK Design in Java for APIs
Reza Rahman
Ray Tsang
Micah Silverman
14