# Which JDK distributions are best optimized for container and cloud environments?

<p class="elv-tracking-normal elv-text-default elv-font-figtree elv-text-base elv-leading-base elv-font-normal" elv="true">If your team is containerizing Java services, the choice of JDK affects image size, startup time, and resource consumption more than you expect. Amazon Corretto, Liberica JDK, and Microsoft Build of OpenJDK all market themselves as container-friendly. Here's how they actually compare according to G2 users in the <a class="a a--md" elv="true" href="https://www.g2.com/categories/java-development-kit-jdk-distributions">JDK distributions</a> category:</p><ul>
<li>
<a class="a a--md" elv="true" href="https://www.g2.com/products/amazon-corretto/reviews"><strong>Amazon Corretto</strong></a> ships official Docker images optimized for ECS, EKS, and Lambda. Teams running on AWS find the pre-built images well-maintained, with Alpine-based variants available for smaller footprints. The integration with AWS Graviton (ARM) instances means Corretto is already tuned for the cost-efficient instance types many teams are migrating to.</li>
<li>
<a class="a a--md" elv="true" href="https://www.g2.com/products/liberica-jdk/reviews"><strong>Liberica JDK</strong></a> takes container optimization further than most competitors. BellSoft offers Alpaquita Linux, a purpose-built OS for Java containers that significantly reduces image size and memory overhead. The Liberica NIK (Native Image Kit) enables ahead-of-time compilation for near-instant startup, which is valuable for serverless and scale-to-zero architectures. Strong satisfaction among teams using these capabilities shows in its G2 rating.</li>
<li>
<a class="a a--md" elv="true" href="https://www.g2.com/products/microsoft-build-of-openjdk/reviews"><strong>Microsoft Build of OpenJDK</strong></a> is the natural fit for teams deploying to Azure. The container images are optimized for Azure Kubernetes Service and Azure App Service, with built-in telemetry that feeds into Azure Monitor. Teams in mixed .NET/Java environments on Azure appreciate having a single vendor supporting both runtimes.</li>
<li>
<a class="a a--md" elv="true" href="https://www.g2.com/products/azul-platform-core-zulu/reviews"><strong>Azul Platform Core (Zulu)</strong></a> provides container-aware JVM ergonomics that automatically detect container memory and CPU limits, preventing the over-provisioning issues that plague Java in containers. Azul's container images support a wide range of base OS options and architectures, and the commercial support extends to containerized deployments.</li>
</ul><p class="elv-tracking-normal elv-text-default elv-font-figtree elv-text-base elv-leading-base elv-font-normal" elv="true">What's been the biggest challenge with Java in containers for your team: image size, memory overhead, startup time, or something else?</p>

##### Post Metadata
- Posted at: 2 months ago
- Author title: Marketer
- Net upvotes: 1


## Comments
### Comment 1

Memory overhead, and specifically the JVM not knowing what the container had given it. Zulu&#39;s container-aware ergonomics detecting memory and CPU limits automatically solves the version of this that bit us.

##### Comment Metadata
- Posted at: 8 days ago
- Author title: SEO Content Specialist



### Comment 2

Amazon Corretto is a strong fit here, built by AWS and widely used in containerized and cloud-native environments specifically because of that optimization.

##### Comment Metadata
- Posted at: 9 days ago



### Comment 3

&lt;p&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;Memory, and usually for a specific and fixable reason: the JVM sizes its heap as a fraction of what it believes available memory to be, so a container limit set without thinking produces a surprisingly small heap and constant garbage collection that looks like an application problem. Setting the heap explicitly rather than relying on the default percentage removes most of it. Azul&#39;s container-aware ergonomics detecting container memory and CPU limits is aimed directly at this, and it is worth checking behaviour under a CPU limit too, since thread pool sizing reads the same signal.&lt;/span&gt;&lt;/p&gt;

##### Comment Metadata
- Posted at: 17 days ago
- Author title: Tech Consultant



### Comment 4

Curious what teams have found to be the actual bottleneck when running Java in containers. The thread covers image size, startup time, and memory overhead, but in my experience the memory overhead issue has been the one that creates the most operational pain at scale, specifically because it interacts with cluster autoscaling in ways that are hard to predict until you&#39;re running real traffic.

##### Comment Metadata
- Posted at: 2 months ago
- Author title: Marketing Executive





## Related discussions
- [How well does Trello scale into a larger team?](https://www.g2.com/discussions/1-how-well-does-trello-scale-into-a-larger-team)
  - Posted at: over 13 years ago
  - Comments: 6
- [Can we please add a new section](https://www.g2.com/discussions/2-can-we-please-add-a-new-section)
  - Posted at: over 13 years ago
  - Comments: 0
- [Quantifiable benefits from implementing your CRM](https://www.g2.com/discussions/quantifiable-benefits-from-implementing-your-crm)
  - Posted at: over 13 years ago
  - Comments: 4


