///////////////////////////////////////////////////////////////////////////////

    Copyright (c) 2018, 2020 Oracle and/or its affiliates.

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

///////////////////////////////////////////////////////////////////////////////

= About Helidon
:pagename: Helidon-introduction
:description: about Helidon
:keywords: helidon, java, microservices, microprofile



Helidon is a collection of Java libraries for writing microservices that run on a fast web core powered by Netty. Its available in two frameworks: Helidon SE and Helidon MP.

== A Collection of Java Libraries 

Helidon provides an open source, lightweight, fast, reactive, cloud native framework for developing Java microservices. Helidon implements and supports MicroProfile, a baseline platform definition that leverages Java EE and Jakarta EE technologies for microservices and delivers application portability across multiple runtimes. 


== Using Cloud-native Tools with Helidon

Helidon libraries interoperate with popular tools from the cloud-native space, so there's no need for any specific tooling or deployment model. Helidon can be used with:

* https://www.docker.com/[Docker]
* https://kubernetes.io/[Kubernetes]
* https://prometheus.io/[Prometheus]
* https://opentracing.io/[OpenTracing]
* https://coreos.com/etcd/[Etcd]

TIP: The <<guides/01_overview.adoc#_getting_started,Helidon Quickstart Examples>>
 contain support for Docker and Kubernetes.


== Understanding the Helidon Frameworks
Helidon supports two programming models for writing microservices: *Helidon SE* and *Helidon MP*. 

SE is designed to be a microframework that supports the reactive programming model, while Helidon MP is an Eclipse MicroProfile runtime that allows the Jakarta EE community to run microservices in a portable way. 

The table below shows to primary differences between Helidon SE and Helidon MP.

[cols="3,3"] 
|====================
| *Helidon SE* |  *Helidon MP*

|Helidon SE gives you full transparency and puts you in control.|Helidon MP is built on top of the Helidon libraries and provides platform definition that is familiar to enterprise Java developers. 
|Microframework model with a very small footprint and limited functionality (~7 MB) | https://projects.eclipse.org/proposals/eclipse-microprofile[Eclipse MicroProfile] implementation; slightly larger footprint than SE (~13 MB) 
|Functional style is reactive non-blocking   |Declarative style with dependency injection
|Transparent "no magic" development experience; pure java application development with no annotations and no dependency injections  |Jakarta EE microprofile development experience; all Jakarta components (CDI, JAX-RS, JSON-P/B)
|Learn more about <<se/01_introduction.adoc, Helidon SE>>. | Learn more about <<mp/01_introduction.adoc, Helidon MP>>.
|====================

== What's New in Helidon 2.0
The Helidon 2.0 release contains significant new features, enhancements and fixes.

TIP: For a complete list of fixes and enhancements, see the Helidon 2.0  https://github.com/oracle/helidon/blob/2.0.0/CHANGELOG.md[changelog].

* *GraalVM Native-image Support in Helidon MP* +
Helidon SE already supports GraalVM, but in 2.0 GraalVM native image support will also be available in Helidon MP. <<guides/36_graalnative.adoc,GraalVM Native Images Guide>> +

* *Helidon Command Line Tool* +
One of the new features in Helidon 2.0 is the addition of a command line interface. The Helidon CLI enables developers to get started with Helidon with minimal effort: you can create a new application, build it, run it, and more, by writing some simple commands. <<se/cli/01_introduction.adoc, Learn more about Helidon CLI>>.


* *DB Client for Helidon SE* +
The new database client for Helidon SE will include support for the MongoDB reactive driver and brings Health Checks, Metrics, and Tracing support to every Helidon API. <<se/dbclient/01_introduction.adoc, Learn more about the DB Client>>.


* *Extending MicroProfile Reactive Messaging and Reactive Operators Support* +
MP Reactive Operators will be included in both frameworks, while MP Reactive Messaging will only be included in Helidon MP. <<mp/reactivemessaging/01_introduction.adoc, Learn more about Reactive Messaging>> and <<mp/reactivestreams/01_introduction.adoc, Reactive Streams>>.

* *Helidon Web Client* +
The new reactive web client can integrate with other Helidon SE APIs. 
<<se/webclient/01_introduction.adoc, Learn more about the Helidon Web Client>>.


* *Additional Websocket Support* +
Based upon the Tyrus implementation, Helidon receives WebSocket API support. 
<<se/websocket/01_overview.adoc, Learn more about Websocket Support>>.


* *Support for Java 11 APIs* +
Helidon will require Java 11 or newer. 
<<about/03_prerequisites.adoc,  Learn more about the prerequisites for Helidon 2.0>>.


* *CORS support for MP and SE* +
Although it is possible for any Helidon application to implement its own support for CORS, there are common tasks (such as processing preflight requests) that can be provided in a Helidon module. <<se/cors/01_introduction.adoc, Learn more about CORS support>>.


* *Backward Incompatible Changes* +
View the https://github.com/oracle/helidon/blob/2.0.0-M1/CHANGELOG.md#backward-incompatible-changes[changelog] for information about potential breaking changes, including package name changes.

== Next Steps

<<guides/01_overview.adoc#_getting_started,Helidon Quickstart Examples>>




