> ## Documentation Index
> Fetch the complete documentation index at: https://cloudinary.com/documentation/llms.txt
> Use this file to discover all available pages before exploring further.

# Java quick start


[readme-version-support-link]:https://github.com/cloudinary/cloudinary_java#version-support
This quick start lets you get an end-to-end implementation up and running using the Java SDK in 5 minutes or less.

#### Prerequisites **To perform this quick start, you'll need:**

* A Cloudinary account. If you don't have one yet, you can quickly [register for free](https://cloudinary.com/users/register_free).
* Your product environment credentials. You can find your [credentials](product_environment_settings#api_keys) on the [API Keys](https://console.cloudinary.com/app/settings/api-keys) page of the Cloudinary Console Settings. 
  * To use your **API environment variable**, copy the provided format and replace the `<your_api_key>` and `<your_api_secret>` placeholders with the actual values found on the page. Your cloud name will already be correctly included in the format.
* A working Java development environment with a [supported version][readme-version-support-link] of Java.

> **NOTES**:
>
> * This quick start is designed for quick onboarding.  It doesn't necessarily employ coding best practices and the code you create here isn't intended for production.  

> * If you aren't familiar with Cloudinary, you may want to first take a look at the [Developer Kickstart](dev_kickstart) for a hands-on, step-by-step introduction to Cloudinary features. You may also find our [Glossary](cloudinary_glossary) helpful to understand Cloudinary-specific terminology.
## 1. Set up and configure the library

Using a clean Java project using Maven, add the **cloudinary** and **dotenv** dependencies to the list of dependencies in `pom.xml`: 

pom.xml

```
<dependency>
    <groupId>com.cloudinary</groupId>
    <artifactId>cloudinary-http5</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
    <groupId>com.cloudinary</groupId>
    <artifactId>cloudinary-taglib</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
    <groupId>io.github.cdimascio</groupId>
    <artifactId>dotenv-java</artifactId>
    <version>2.2.4</version>
</dependency>
```

> **NOTE**: We recommend updating the version number to use the [latest version](https://github.com/cloudinary/cloudinary_java) of the Java SDK.

Then, in your project, create a file called `.env` and add the following line with your Cloudinary environment variable (replace `cloudinary://<API_KEY>:<API_SECRET>@<CLOUD_NAME>` below with your own environment variable value):

.env

```
// Copy and paste your API environment variable

CLOUDINARY_URL=cloudinary://<API_KEY>:<API_SECRET>@<CLOUD_NAME>
```

More info

Using your **environment variable URL** is one of a few options to [configure credentials](java_integration#configuration).

> **INFO**: When writing your own applications, follow your organization's policy on storing secrets and don't expose your API secret.

In your code, include the following `Cloudinary` libraries as well as the `dotenv` library in your project. Copy and paste the following code into your `Main.java` file:

Main.java

```java
// Import the required packages

import com.cloudinary.*;
import com.cloudinary.utils.ObjectUtils;
import io.github.cdimascio.dotenv.Dotenv;

import java.util.Map;
```

You can now load your Cloudinary credentials from your .env file as shown below. Copy and paste the following code into your Main class:

Main.java (continued)

```java
// Set your Cloudinary credentials

Dotenv dotenv = Dotenv.load();
Cloudinary cloudinary = new Cloudinary(dotenv.get("CLOUDINARY_URL"));
System.out.println(cloudinary.config.cloudName);

```

Tip

You can set any [configuration parameters](cloudinary_sdks#configuration_parameters) in this way.

## 2. Upload an image

Copy and paste the following code into a `try` block within your Main class:

Main.java (continued)

```java

// Upload the image
Map params1 = ObjectUtils.asMap(
    "use_filename", true,
    "unique_filename", false,
    "overwrite", true
);

System.out.println(
        cloudinary.uploader().upload("https://cloudinary-devs.github.io/cld-docs-assets/assets/images/coffee_cup.jpg", params1));
```

More info about upload...

* You can upload from various sources, including local files, but this quick start uses a remote file available at: 
[https://cloudinary-devs.github.io/cld-docs-assets/assets/images/coffee_cup.jpg](https://cloudinary-devs.github.io/cld-docs-assets/assets/images/coffee_cup.jpg "with_code: false, with_url: false").
* The [public ID](cloudinary_glossary#public_id) in this example will use the filename of the uploaded file `coffee_cup` and ensure that it is overwritten each time you run this quick start. Without these parameters set, the default option of using a random public ID would be applied, and a new asset would be created each time.
* See the `upload` method of the [Upload API](image_upload_api_reference#upload).
* Learn more about [uploading assets](upload_images).

## 3. Get details of the image

Main.java (continued)

```java
// Get the asset details
Map params2 = ObjectUtils.asMap(
        "quality_analysis", true
);

System.out.println(
        cloudinary.api().resource("coffee_cup", params2));
```

More info about quality analysis...

* The quality analysis parameter returns a quality score between 0.0 and 1.0 for the uploaded image. This is useful when deciding if a user uploaded image meets your quality requirements. You can find more information about quality analysis in the [documentation](image_quality_analysis).

## 4. Transform the uploaded image

Main.java (continued)

```java

// Create the image tag with the transformed image and log it to the console
System.out.println(
        cloudinary.url().transformation(new Transformation()
        .crop("pad")
        .width(300)
        .height(400)
        .background("auto:predominant"))
        .imageTag("coffee_cup"));

// The code above generates an HTML image tag similar to the following:
//  <img src='https://res.cloudinary.com/demo/image/upload/b_auto:predominant,c_pad,h_400,w_300/coffee_cup' height='400' width='300'/>
```

## 5. Run your code

Run your code by clicking the **Run** button on the `main` class.

You can use the returned image tag to display the image on your website. For now, copy and paste the URL to see the transformed image in the browser:

![Transformed coffee_cup image](https://res.cloudinary.com/demo/image/upload/b_auto:predominant,c_pad,h_400,w_300/coffee_cup "with_code:false")

## View the completed code

You can find the full code example for this on [GitHub](https://github.com/cloudinary-devs/java-sdk-quickstart).

## Next steps
* Learn more about the Java SDK by visiting the other pages in this SDK guide.
* Get comprehensive details about Cloudinary features and capabilities:
    * [Upload guide](upload_images): Provides details and examples of the upload options.
    * [Image transformations guide](image_transformations): Provides details and examples of the transformations you can apply to image assets.
    * [Video transformations guide](video_manipulation_and_delivery): Provides details and examples of the transformations you can apply to video assets.
    * [Transformation URL API Reference](transformation_reference): Provides details and examples of all available transformation parameters. 
    * [Admin API guide](admin_api): Provides details and examples of the methods available for managing and organizing your media assets.