Six runtimes. One control plane. Choose per application.
Every JavaGrove plan lets you provision independent JVM containers, each running the servlet container or application server your app expects, patched, monitored, and tuned by us.
Not a shared process. Not a generic Docker box. A JVM built for one app.
A JVM container on JavaGrove is a dedicated Java Virtual Machine instance, provisioned with its own heap ceiling, thread pool, and CPU allocation, running exactly one runtime and one application. You pick the runtime, the Java version, and the resource limits; we handle the process supervision, patching, and restarts.
- Dedicated heap and metaspace, no noisy-neighbor GC pauses
- Independent restart, scaling, and patch schedule per container
- Optional OCI/Docker packaging on Canopy & Enterprise plans
$ grove containers list NAME RUNTIME JVM HEAP STATE checkout-api wildfly 21 LTS 1024Mi running auth-service payara 21 LTS 512Mi running docs-site tomcat 17 LTS 256Mi running batch-worker tomee 25 LTS 768Mi running
Pick the runtime that matches your architecture.
Apache Tomcat
The default for Spring Boot, lightweight servlet apps, and JSP sites. Fast cold starts and a minimal footprint make it the go-to for most new services.
Best for: microservices, REST APIs, Spring Boot
Eclipse Jetty
Embeddable and event-driven, Jetty shines in high-concurrency, low-latency workloads and apps that rely heavily on WebSockets or async I/O.
Best for: real-time apps, WebSocket gateways, embedded servers
Eclipse GlassFish
The Jakarta EE reference implementation. Full EJB, JMS, JPA, and CDI support for teams building against the complete enterprise stack.
Best for: full Jakarta EE applications, enterprise integrations
Payara Server & Micro
A production-hardened GlassFish descendant with MicroProfile support, rolling/zero-downtime deploys, and built-in clustering.
Best for: enterprise apps that need clustering & MicroProfile
WildFly
Red Hat's modular Jakarta EE server. Domain-mode clustering and fine-grained subsystem configuration for large, multi-service deployments.
Best for: large enterprise deployments, JBoss migrations
Apache TomEE
Tomcat's lightweight core with Java EE APIs (CDI, JAX-RS, JPA) layered in: a middle ground between a plain servlet container and full EE.
Best for: teams outgrowing Tomcat but not needing full EE
Not sure which runtime fits your stack? Start here.
Recommended: Apache Tomcat. Spring Boot ships its own embedded Tomcat by default, so deploying the packaged JAR or WAR to a Tomcat-backed JVM container is usually a drop-in fit. Jetty is a solid alternative if your app leans on WebSockets or reactive endpoints.
Recommended: GlassFish, Payara, or WildFly. If your app uses EJB, JMS, or full CDI, you need a runtime that implements the full Jakarta EE profile. Payara adds clustering and MicroProfile on top of the same GlassFish foundation.
Recommended: Eclipse Jetty or Payara Micro. Both start fast and carry a small memory footprint, which matters when you're running many small JVM containers instead of one large monolith.
Recommended: WildFly. As the upstream project behind Red Hat JBoss EAP, WildFly is typically the closest match for applications migrating off JBoss. Teams moving off Oracle WebLogic usually land on GlassFish or Payara instead.
Choose your JDK per container.
All builds are OpenJDK-based and kept current with security patches. Pick per JVM container and mix versions freely across one account.
| Version | Status | Typical use | Available on |
|---|---|---|---|
| Java 25 | Current LTS | New projects, latest language features | All plans |
| Java 21 | LTS | Enterprise standard, broad library support | All plans |
| Java 17 | LTS | Existing Spring Boot 3.x / Jakarta EE apps | All plans |
| Java 11 | LTS (maintenance) | Legacy application support | Grove, Canopy, Enterprise |
| Java 8 | Legacy (maintenance) | Older Java EE / javax.* applications | Canopy, Enterprise |