about.introduction.adoc Maven / Gradle / Ivy
///////////////////////////////////////////////////////////////////////////////
Copyright (c) 2018, 2024 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.
///////////////////////////////////////////////////////////////////////////////
= Introducing Helidon
:description: Helidon
:keywords: helidon, java, microservices, microprofile
:rootdir: {docdir}/..
include::{rootdir}/includes/attributes.adoc[]
== What is Helidon?
* <>
* <>
** <>
* <>
* <>
== What is Helidon?
link:https://helidon.io[Helidon] is a collection of Java libraries for writing microservices.
Helidon is open source under the Apache license. Sources are available on link:{helidon-github-tree-url}[GitHub].
Helidon is cloud-native ready. It provides fast start-up time and has low memory consumption and a small disk footprint. It also comes with a full observability stack out of the box including health checks, metrics, tracing and logging.
Helidon fully supports GraalVM native image allowing you to build a native executable from your Java application.
Helidon applications are stand-alone Java applications running in their own JVM and powered by the Helidon WebServer.
== Helidon Flavors
Helidon comes in two flavors: *Helidon SE* and *Helidon MP*. Think about these flavors as frameworks providing similar functionality but offering different developer experiences.
[cols="3,3"]
|====================
| *Helidon SE* | *Helidon MP*
|Gives you full transparency and puts you in control.
|Built on top of the Helidon SE libraries and provides a platform 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[MicroProfile] implementation; slightly larger footprint than SE (~13 MB).
|Helidon SE is Helidon’s foundational set of APIs. As of Helidon 4, virtual threads have enabled these APIs to change from asynchronous to blocking. This results in much simpler code that is easier to write, maintain, debug and understand..
|Declarative style with dependency injection.
|Transparent "no magic" development experience; pure java application development with no annotations and no dependency injections.
|Developer experience similar to that of Spring Boot, Jakarta EE and MicroProfile; layers on some Jakarta EE components (CDI, JAX-RS, JSON-P, JSON-B).
|Learn more about xref:{rootdir}/se/introduction.adoc[Helidon SE]. | Learn more about xref:{rootdir}/mp/introduction.adoc[Helidon MP].
|====================
To help illustrate the differences, below are two samples implementing a simple RESTful service. One uses Helidon SE, the other Helidon MP.
.Helidon SE sample
[source,java]
----
include::{sourcedir}/about/IntroductionSnippets.java[tag=snippet_1, indent=0]
----
.Helidon MP sample
[source,java]
----
include::{sourcedir}/about/IntroductionSnippets.java[tag=snippet_2, indent=0]
----
Even though Helidon MP supports Jakarta EE APIs it does not require
an application server. Helidon MP applications are stand-alone Java applications running
in their own JVM powered by Helidon WebServer.
=== What flavor shall I use?
Use Helidon SE if
- Performance is your main goal.
- Your application is heavily using concurrency.
- You are not planning to use any CDI-based components.
- You want to use a minimum number of third-party dependencies.
Use Helidon MP if
- You want to base your application on modern enterprise Java standards such as Jakarta EE and MicroProfile.
- You are familiar with Java EE, Jakarta EE or Spring Boot and would like to have a similar development experience.
- You are migrating existing Java EE/Jakarta EE application to microservices.
- You are planning to use CDI components or extensions.
- You are planning to use JPA for data access and Jersey (JAX-RS) for RESTful services.
[NOTE]
====
If you don't know which Helidon flavor to use – use *Helidon MP*.
====
== Prerequisites
// tag::prereqs[]
Helidon requires Java and Maven.
You might also need Docker and Kubernetes depending on how you plan to deploy your services.
.Prerequisite product versions for Helidon {helidon-version}
[%autowidth]
|====
include::{rootdir}/includes/prerequisites.adoc[tag=prerequisites-table-rows]
|====
// end::prereqs[]
We also strongly suggest installing the xref:cli.adoc[Helidon CLI] (command line interface) which helps in generating and building Helidon projects.
== Upgrade
To upgrade your current version of Helidon, follow the `Upgrade Guides`:
To upgrade from Helidon 3.x to 4.x:
* xref:{rootdir}/se/guides/upgrade_4x.adoc[Helidon SE 4x Upgrade Guide]
* xref:{rootdir}/mp/guides/upgrade_4x.adoc[Helidon MP 4x Upgrade Guide]
To upgrade from Helidon 2.x to 3.x:
* xref:{rootdir}/se/guides/upgrade_3x.adoc[Helidon SE 3x Upgrade Guide]
* xref:{rootdir}/mp/guides/upgrade_3x.adoc[Helidon MP 3x Upgrade Guide]
To upgrade from Helidon 1.x to 2.x:
* xref:{rootdir}/se/guides/upgrade.adoc[Helidon SE 2x Upgrade Guide]
* xref:{rootdir}/mp/guides/upgrade.adoc[Helidon MP 2x Upgrade Guide]
== Next Steps
Choose a Helidon flavor to explore and start using it. Check out the following:
- xref:{rootdir}/se/introduction.adoc[Helidon SE Documentation]
- xref:{rootdir}/mp/introduction.adoc[Helidon MP Documentation]