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

    Copyright (c) 2019, 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.

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

= Helidon MP Introduction
:description: about Helidon MP
:keywords: helidon, java, microservices, microprofile
:h1Prefix:MP

Helidon MP is an Eclipse MicroProfile runtime that allows the Jakarta EE community to run microservices in a portable way.


== About Helidon MP Components

Helidon MP {helidon-version} is an implementation of the
https://microprofile.io[MicroProfile]
https://github.com/eclipse/microprofile/releases[specification] and supports MicroProfile {mp-version}. Since
MicroProfile has its roots in Java EE, the MicroProfile
APIs follow a familiar, declarative approach with heavy use of annotations.
This makes it a good choice for Java EE developers. 

Helidon has added additional APIs to the core set of Microprofile APIs giving you all the capabilities you need for writing modern cloud native applications.

[cols="2,5"]
|=======
|CDI Extensions
|In addition to MicroProfile support, Helidon MP provides CDI extensions to address areas not covered by MicroProfile.<<mp/extensions/01_overview.adoc,Learn more>>.

|Configuration
|The MP Config component provides a Java API to load and process configuration properties in key/value form into a Config object which the application can use to retrieve config data.
<<mp/config/introduction.adoc, Learn more>>. 

|  CORS Support
|  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. <<mp/cors/01_introduction.adoc, Learn more>>. 

|GraalVM Native Image Support for Helidon MP
|GraalVM native-image support is now available for both Helidon MP and Helidon SE. Helidon MP includes support for GraalVM to enable the conversion of Helidon MP applications to native executable code via the native-image utility.<<mp/guides/36_graalnative.adoc, Learn more>>.

| gRPC 
|  Helidon gRPC Server provides a framework for creating gRPC (general-purpose Remote Procedure Calls) applications.
<<mp/grpc/01_introduction.adoc, Learn more>>.

| Health Checks 
|  The health check API combines the statuses of all the dependencies that affect availability and the ability to perform correctly such as network latency and storage. <<mp/health/01_health.adoc, Learn more>>.


|JAX-RS/Jersey
|Helidon MP supports building RESTful services using JAX-RS/Jersey. <<mp/jaxrs/02_server-configuration.adoc, Learn more>>.


|JSON-P and JSON-B  
|  Helidon supports both JSON processing (JSON P) and JSON building (JSON B) APIs.


|Metrics 
|Heldion supports both a base set and a Helidon-specific set of metrics that expose information in JSON format (as specified by the MicroProfile Metrics specification) or in plain text (for Prometheus metrics). 
<<mp/metrics/01_metrics.adoc, Learn more>>.


|OpenAPI  
|The OpenAPI in Helidon SE allows your Helidon SE application to serve an OpenAPI document that describes your application’s endpoints.
<<mp/openapi/01_openapi.adoc, Learn more>>.

|OpenTracing 
|Helidon includes support for tracing through the OpenTracing APIs. Tracing is integrated with WebServer, gRPC Server, and Security.
<<mp/tracing/07_tracing.adoc, Learn more>>.


|Reactive Messaging and Reactive Operators
|With Helidon MP 2.0 you can now formalize manipulation with reactive streams and reactive messaging. Reactive messaging heavily depends on standardized operators so together they provide great portability between existing implementations. <<mp/reactivemessaging/01_introduction.adoc, Learn more about Reactive Messaging>> and <<mp/reactivestreams/01_introduction.adoc, Reactive Streams>>.

|Security 
|The MP security modules support authentication, authorization, outbound security and audits for your applications.
<<mp/security/01_introduction.adoc, Learn more>>.


|=======

//need JPA and JWT Auth info, fault tolerance


== Next Steps
Learn about the steps needed to get started with Helidon MP <<mp/introduction/02_microprofile.adoc, Getting Started>>.

For more information about the Helidon MicroProfile APIs see  https://github.com/oracle/helidon/wiki/Supported-APIs[the Helidon API Wiki page].

Try the <<mp/guides/03_quickstart.adoc,Helidon MP quickstart>> to get your
first Helidon MP application up and running in minutes.
