Skip to main content

What is Java on Zerops?

Zerops provides a fully managed Java runtime environment with automatic compilation, built-in Maven/Gradle support, and zero-config deployment. Build and deploy enterprise Java applications with reliability and performance.
Java is a high-level, class-based, object-oriented programming language designed to have as few implementation dependencies as possible. Learn more about Java →

Key Features

Multiple Java Versions

Support for Java 8, 11, 17, and 21 LTS versions

Automatic Scaling

Horizontal and vertical auto-scaling based on resource usage

Build Tool Support

Built-in Maven and Gradle support for dependency management

JVM Optimization

Configurable JVM parameters for optimal performance

Supported Versions

  • Java 21 (Latest LTS)
  • Java 17 (LTS)
  • Java 11 (LTS)
  • Java 8 (Legacy LTS)
You can change the Java version at any time through the zerops.yaml configuration.

Quick Example

project:
  name: my-java-app
services:
  - hostname: app
    type: java@21
    minContainers: 1
    maxContainers: 3
    buildFromGit: https://github.com/zeropsio/recipe-java-hello-world@main
    enableSubdomainAccess: true

Runtime Environment

The Java runtime includes:
  • Alpine Linux or Ubuntu
  • OpenJDK (selected version)
  • Maven and Gradle
  • Git utilities
  • Zerops CLI tools

Common Use Cases

Deploy Spring Boot microservices and web applications.
zerops:
  - setup: app
    build:
      base: java@21
      buildCommands:
        - mvn clean package -DskipTests
      deployFiles:
        - target/*.jar
    run:
      start: java -jar target/app.jar
Run Jakarta EE applications on application servers.
zerops:
  - setup: webapp
    build:
      base: java@17
      buildCommands:
        - mvn clean package
      deployFiles:
        - target/*.war
    run:
      start: java -jar target/app.war
Deploy cloud-native Java with Quarkus.
zerops:
  - setup: service
    build:
      base: java@21
      buildCommands:
        - ./mvnw package -Pnative
      deployFiles:
        - target/*-runner
    run:
      start: ./target/app-runner

Build Process

Maven Build

zerops:
  - setup: app
    build:
      base: java@21
      buildCommands:
        - mvn clean install -DskipTests
      deployFiles:
        - target/*.jar
      cache: ~/.m2/repository

Gradle Build

build:
  base: java@21
  buildCommands:
    - gradle build -x test
  deployFiles:
    - build/libs/*.jar
  cache: ~/.gradle/caches

Runtime Configuration

Standard JAR Execution

run:
  start: java -jar app.jar
  ports:
    - port: 8080
      httpSupport: true

With JVM Options

run:
  start: java -Xmx512m -Xms256m -jar app.jar
  envVariables:
    JAVA_OPTS: "-Xmx512m -Xms256m"

Spring Boot Application

run:
  start: java -jar app.jar --server.port=8080
  envVariables:
    SPRING_PROFILES_ACTIVE: production

JVM Optimization

Memory Configuration

run:
  start: java -Xmx1g -Xms512m -XX:MaxMetaspaceSize=256m -jar app.jar

Garbage Collection

run:
  start: java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -jar app.jar

Container-Aware JVM

run:
  start: java -XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0 -jar app.jar

Framework Examples

Spring Boot

zerops:
  - setup: api
    build:
      base: java@21
      buildCommands:
        - mvn clean package -DskipTests
      deployFiles:
        - target/*.jar
    run:
      start: java -jar target/api-0.0.1-SNAPSHOT.jar
      envVariables:
        SPRING_PROFILES_ACTIVE: production

Quarkus

zerops:
  - setup: app
    build:
      base: java@21
      buildCommands:
        - ./mvnw package -Dquarkus.package.type=uber-jar
      deployFiles:
        - target/*-runner.jar
    run:
      start: java -jar target/app-runner.jar

Micronaut

zerops:
  - setup: service
    build:
      base: java@21
      buildCommands:
        - ./gradlew build -x test
      deployFiles:
        - build/libs/*-all.jar
    run:
      start: java -jar build/libs/app-all.jar

Database Integration

PostgreSQL with JDBC

import java.sql.Connection;
import java.sql.DriverManager;

public class Database {
    public static Connection getConnection() throws Exception {
        String url = String.format(
            "jdbc:postgresql://db:5432/%s",
            System.getenv("DB_NAME")
        );
        return DriverManager.getConnection(
            url,
            System.getenv("DB_USER"),
            System.getenv("DB_PASSWORD")
        );
    }
}

Spring Data JPA

run:
  envVariables:
    SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/${DB_NAME}
    SPRING_DATASOURCE_USERNAME: ${DB_USER}
    SPRING_DATASOURCE_PASSWORD: ${DB_PASSWORD}

Next Steps

Quickstart Guide

Deploy your first Java application

Example Projects

Explore Java examples on GitHub

Build docs developers (and LLMs) love