:jbake-type: page
:jbake-status: published

= Tamaya in 5 minutes - a short introduction

Apache Tamaya (incubating) provides a flexible and powerful
configuration solution
for Java developers using Java SE as well as for more complex
usage scenarios like cloud or Java EE. It provides a modern
type-safe property based Configuration API combined with a
powerful environment model and a flexible SPI.

== Features

* Unified Configuration API
* Pluggable Configuration Backends
* Enforceable Configuration Policies
* Configuration Validation and Documentation
* Seamless Enterprise Integration

== Documentation

* link:documentation/usecases.html[Use Cases and Requirements]
* link:highleveldesign.html[High Level Design]
* link:documentation/api.html[API]
* link:documentation/core.html[Core]
* link:documentation/extensions.html[Extensions]


== Quickstart

Using Apache Tamaya is simple:

1. Add `{tamaya_mvn_group_id}:tamaya-core:{tamaya_version}` to your dependencies.
2. Add your config to `META-INF/javaconfiguration.properties`
3. Access your configuration by `Configuration.current()` and use it.
4. Look at the link:documentation/extensions.html[extensions modules] to customize your setup!
5. Enjoy!


== Rationale

Configuration is one of the most prominent cross-cutting concerns similar to logging. Most of us already have been
writing similar code again and again in each of our projects. Sometimes in a similar way but mostly always slightly
different, but certainly with high coupling to your configuration backends. Given your code is reused or integrated
some how, or deployed by some customers, struggling starts: not supported backends, different policies, missing
combination and validation mechanisms and so on. Tamaya solves all this by defining a common API and backend SPI.
Your code is decoupled from the configuration backend. There is no difference if your code is deployed on your dev box
or in a clustered Docker environment in production, it stays the same!
