Java · Temurin JRE 21

Hosting Java 24/7

Sube un bot en JDA, una API Spring Boot o un worker de cola empaquetado en JAR y déjalo funcionando. La imagen trae el Temurin JRE, START define la línea del java -jar y la plataforma reinicia el proceso sola, en cualquier plan, cuando se cae.

Origen

Quién diseñó Java

James Gosling y el Green Team en Sun empezaron en 1991 un lenguaje llamado Oak, pensado para set-top y dispositivos. Rebautizado Java, se anunció en 1995 con la tesis write once, run anywhere: el compilador emite bytecode, la máquina virtual lo ejecuta en cualquier sistema. La 1.0 salió en 1996. No era solo una gramática — era la VM, las bibliotecas y la promesa de portabilidad.

James Gosling

Peter Campbell · CC BY-SA 4.0

El mismo programa en cualquier máquina

Write once, run anywhere no era eslogan: era el motivo. javac emite bytecode; la VM lo ejecuta en cualquier sistema que la tuviera — un binario por sistema era lo que Sun quería evitar.

La máquina virtual en el medio

Quien corre no es el procesador desnudo. Esa capa es la diferencia con C: portabilidad, bibliotecas y un modelo de memoria iguales en todas partes.

Lenguaje que nació con plataforma

Java no era solo la gramática. Era la VM, las APIs y la promesa de que el mismo código servía en el set-top, el escritorio y el servidor.

Lo que la plataforma hace por un proyecto Java

Lo esencial ya viene configurado en toda aplicación Java aquí; las funciones que dependen del plan se indican en la tarjeta.

El JAR arranca listo

La imagen ya trae el Temurin JRE; tú subes el artefacto empaquetado y START dice cómo ejecutarlo. No hay JDK que instalar ni Dockerfile que mantener en el repositorio.

Dos versiones, una línea de config

Temurin JRE 21 y 17 disponibles. Cambiar es modificar VERSION en vertracloud.config y volver a desplegar — el mismo JAR corre en las dos, siempre que se haya compilado para el destino correcto.

Heap dentro del techo del contenedor

MEMORY define cuánta RAM puede ocupar el contenedor y -Xmx en START limita el heap de la JVM por debajo de ese techo. Sin ese margen, la JVM crece hasta el límite del contenedor y el proceso se cierra por OOM.

Auto-reinicio con freno

Una excepción no capturada no tumba el servicio: el proceso se reinicia solo, en cualquier plan. Si se rompe 5 veces en 10 minutos, la plataforma marca crash loop y apaga el auto-reinicio durante 24 horas. Salir con exit code 0 no dispara reinicio.

Lo que la gente ejecuta en Java aquí

El mismo JAR sirve para el bot que queda conectado y para la API que responde en el subdominio.

Bots de Discord en JDA y Discord4J

El bot corre como proceso en segundo plano, sin puerto HTTP. El token va en las variables de entorno del panel, nunca en un .env dentro del zip — la plataforma no lee archivos .env.

APIs Spring Boot y Javalin

Publica la aplicación para recibir un subdominio en vertraweb.app con TLS. El servidor embebido tiene que escuchar en 0.0.0.0 en el puerto 80 — en localhost, la petición externa da timeout.

Workers y servicios programados

Consumidor de cola, rutina de integración, tarea programada: procesos largos que solo necesitan mantenerse en pie. El auto-reinicio cubre la caída ocasional de red sin intervención.

Aplicación con base de datos gestionada

Un PostgreSQL 17 o un MySQL 8.0 creado en el panel se vuelve la fuente de datos de Hibernate o Spring Data por la URL JDBC del host interno. TLS es obligatorio, y MySQL exige X509: el certificado de cliente va al truststore de la JVM.

Versiones de Java disponibles

Temurin JRE 21 es la recomendada y la más reciente; la 17 sigue disponible para un JAR compilado para un destino más antiguo. La elección es la clave VERSION del vertracloud.config.

Versiónvertracloud.configEstado
Temurin JRE 21VERSION=21RecomendadaMás reciente
Temurin JRE 17VERSION=17

La configuración entera

vertracloud.config es un archivo INI opcional en la raíz del proyecto. MAIN apunta al JAR; START trae la línea del java con las flags de heap; VERSION elige el JRE; MEMORY define el techo de RAM.

vertracloud.config
NAME=meu-app
MAIN=app.jar
START=java -Xmx256m -jar app.jar
VERSION=21
MEMORY=512

Un plan para cada etapa del proyecto

La memoria y el almacenamiento cambian según el plan; el lenguaje, no. Compara lo que abre cada plan y elige el que le sirve al proyecto hoy.

Comparar planes

También corre aquí

Misma plataforma, mismo deploy, otro stack.

Preguntas frecuentes sobre hosting Java

JAR, heap y memoria: lo que más llega a soporte en proyectos Java.

¿Qué versiones de Java puedo usar?

Temurin JRE 21 (recomendada y la más reciente) y Temurin JRE 17. La elección se hace con la clave VERSION en vertracloud.config; sin ella, la aplicación arranca en la recomendada.

Recibí no main manifest attribute al iniciar. ¿Qué es?

El JAR se empaquetó sin apuntar a la clase de entrada. Configura la herramienta de build para generar un fat JAR con Main-Class en el manifiesto — con Maven Shade, Assembly o el Shadow de Gradle — y sube ese artefacto.

Mi aplicación muere con OutOfMemoryError. ¿Cómo lo arreglo?

Java necesita 512 MB o más de RAM asignada. Sube el MEMORY y limita el heap por debajo del techo del contenedor con flags en START, por ejemplo java -Xmx256m -Xms128m -jar app.jar.

¿Puedo desplegar automáticamente en cada push?

Sí, a partir del plan Intermediary: el webhook de GitHub dispara un nuevo despliegue en cada push al repositorio conectado. En los planes inferiores, desplegar sigue siendo enviar el zip o pulsar el botón de despliegue del panel.

¿Qué debo dejar fuera del zip?

Las carpetas de build: target y .gradle. Sube el JAR empaquetado y el vertracloud.config — el límite del zip es 100 MB, y las clases sueltas y las cachés de build solo ocupan espacio.

Sube tu proyecto Java hoy

Crea la cuenta, sube el JAR empaquetado en un zip o conecta el repositorio de GitHub, y ajusta las flags de heap en START antes del primer arranque.

Crear cuenta