Overview

Product video
This is a repackaged open source software wherein additional charges apply for extended support with a 24 hour response time.
Built for performance and stability, this AMI features OpenJDK 21 (Java 21) running on the reliable CentOS Stream 10 operating system. Perfect for developers and organizations seeking to leverage the latest Java advancements, this AMI allows for rapid deployment of Java applications in the AWS cloud.
Key Features:
- Latest Java Version: Leverage the enhancements and new features of OpenJDK 21 to improve application performance and developer productivity.
- CentOS 10: Incorporates a stable and secure environment, ideal for enterprise-level applications and services.
- Optimized Performance: Pre-configured for optimal performance and resource usage in cloud environments.
Benefits:
- Rapid Deployment: Quickly spin up Java applications with minimal configuration required.
- Secure and Reliable: Benefit from CentOS's reputation for security and community support.
- Cost-Effective: Open-source foundation alongside flexible cloud pricing options.
Use Cases:
- Enterprise Applications: Deploy large-scale applications requiring Java.
- Web Services: Build and manage Java-based web applications and RESTful services.
- Development and Testing: Use this AMI as a development environment for testing new features in Java 21.
Make the most of your cloud infrastructure with this cutting-edge OpenJDK 21 AMI on CentOS 10, ensuring a powerful foundation for your Java applications.
Try our most popular AMIs on AWS EC2
- Ubuntu 24.04 AMI on AWS EC2
- Ubuntu 22.04 AMI on AWS EC2
- Ubuntu 20.04 AMI on AWS EC2
- Ubuntu 18.04 AMI on AWS EC2
- CentOS 10 AMI on AWS EC2
- CentOS 9 AMI on AWS EC2
- CentOS 8 AMI on AWS EC2
- Debian 12 AMI on AWS EC2
- Debian 11 AMI on AWS EC2
- Debian 10 AMI on AWS EC2
- Debian 9 AMI on AWS EC2
- Red Hat Enterprise Linux 9 (RHEL 9) AMI on AWS EC2
- Red Hat Enterprise Linux 8 (RHEL 8) AMI on AWS EC2
- Red Hat Enterprise Linux 7 (RHEL 7) AMI on AWS EC2
- Oracle Linux 9 AMI on AWS EC2
- Oracle Linux 8 AMI on AWS EC2
- Oracle Linux 7 AMI on AWS EC2
- Amazon Linux 2023 AMI on AWS EC2
- Windows 2022 Server AMI on AWS EC2
- Windows 2019 Server AMI on AWS EC2
- Docker on Ubuntu 20 AMI on AWS EC2
- Docker on CentOS 10 AMI on AWS EC2
Highlights
- OpenJDK 21 on CentOS Stream 10 offers a robust, high-performance development environment ideal for Java applications. With the latest Java 21 features, developers can leverage improved performance, enhanced language constructs, and new APIs for modern application development. The comprehensive support for both enterprise-level applications and microservices makes it a versatile choice for deploying scalable solutions in the cloud.
- This AMI ensures seamless integration within the AWS ecosystem, allowing for easy scaling and management of Java-based applications on EC2. Pre-configured with CentOS 10, it enables developers to focus on code rather than configuration. Users benefit from optimization for cloud computing, including security enhancements and system performance tuned for AWS infrastructure.
- Use cases for OpenJDK 21 on CentOS 10 are versatile, ranging from web servers serving dynamic Java applications to backend services for microservices architecture. Additionally, its compatibility with existing Java frameworks, such as Spring and Hibernate, makes this AMI an ideal choice for enterprises transitioning to cloud-native application architectures in a cost-effective manner.
Details
Introducing multi-product solutions
You can now purchase comprehensive solutions tailored to use cases and industries.
Features and programs
Buyer guide

Financing for AWS Marketplace purchases
Pricing
- ...
Dimension | Cost/hour |
|---|---|
t2.2xlarge Recommended | $0.56 |
t2.micro | $0.21 |
t3.micro | $0.07 |
m7i-flex.4xlarge | $1.12 |
hpc7a.48xlarge | $4.48 |
i2.2xlarge | $0.56 |
h1.2xlarge | $0.56 |
g4dn.metal | $3.36 |
r7a.metal-48xl | $3.36 |
r6in.2xlarge | $0.56 |
Vendor refund policy
The instance can be terminated at anytime to stop incurring charges
How can we make this page better?
Legal
Vendor terms and conditions
Content disclaimer
Delivery details
64-bit (x86) Amazon Machine Image (AMI)
Amazon Machine Image (AMI)
An AMI is a virtual image that provides the information required to launch an instance. Amazon EC2 (Elastic Compute Cloud) instances are virtual servers on which you can run your applications and workloads, offering varying combinations of CPU, memory, storage, and networking resources. You can launch as many instances from as many different AMIs as you need.
Version release notes
System Update
Additional details
Usage instructions
SSH to the instance and login as 'ec2-user' using the key specified at launch.
OS commands via SSH: SSH as user 'ec2-user' to the running instance and use sudo to run commands requiring root access.
verify java version by running
java -version
Resources
Vendor resources
Support
Vendor support
Email support for this AMI is available through the following: https://supportedimages.com/support/ OR support@supportedimages.com
AWS infrastructure support
AWS Support is a one-on-one, fast-response support channel that is staffed 24x7x365 with experienced and technical support engineers. The service helps customers of all sizes and technical abilities to successfully utilize the products and features provided by Amazon Web Services.
Standard contract
Customer reviews
Open source tools have supported my Java learning and enabled cross platform development projects
What is our primary use case?
From my first or second semester, I have been using OpenJDK Java on my local PC as part of my college journey and academic learning. I have been using OpenJDK Java for personal projects and during my internship, where I also work on a project utilizing OpenJDK Java mainly for developing and testing Java-based applications such as those in banking sectors and many other systems.
In my third semester, I had one subject, OOPs, where I needed to perform practicals and create an application in Java. I mainly use OpenJDK Java because without it I cannot support my coding needs.
My application relies on OpenJDK Java, as my source code is in Java. Without OpenJDK Java, I cannot manage or run the application or source code because OpenJDK Java is the installer package that is needed. Otherwise, I cannot run my simple code.
For my internship, I only use OpenJDK Java for my college project. While working at my internship, I also needed OpenJDK Java for my college project. It is compatible with almost every development studio such as VS Code and IntelliJ IDEA, which is the Java software. I used both for my college project, starting with IntelliJ IDEA to run my source codes, and in the next semester, I had a subject on advanced Java, where I learned more about OpenJDK Java and Java.
Throughout many subjects in my college academic journey, I needed OpenJDK Java as part of my role as a support engineer. It provides almost all the core features required for Java development, including support for OOPs concepts. For instance, in one subject called OOPs, I needed JDK support to perform my Java programming. I also use OpenJDK Java for database work in DBMS with MS SQL , needing it to run their workbench.
What is most valuable?
OpenJDK Java offers open-source capabilities, which are significant because my laptop runs on Windows while my friend's system uses macOS. It is open-source and cross-platform, which is beneficial as it supports every system when changing the Windows operating system. Therefore, these two features are among the best for me.
I also appreciate the security updates provided by OpenJDK Java. When I download the JDK, it comes in a specific version, but subsequent updates resolve issues with earlier applications. It is continuously updating features, which is the best aspect of OpenJDK Java.
OpenJDK Java also has strong community support, making it the best option for me. OpenJDK Java has saved me time and effort, being one of my main resources that is free to use and helpful as a student. It provides almost all the core features required for Java development, including OOPs concepts, exception handling, file management, and database connectivity.
What needs improvement?
Currently, OpenJDK Java is perfect for me, and I do not think any updates are needed. It works perfectly, and I do not want to add anything else to OpenJDK Java.
For how long have I used the solution?
Since my first or second semester.
What do I think about the stability of the solution?
OpenJDK Java is stable in my experience.
What do I think about the scalability of the solution?
OpenJDK Java is completely scalable and fully reliable for me.
OpenJDK Java is fully scalable for my projects and organization.
How are customer service and support?
I find customer support to be perfect.
How was the initial setup?
I installed it on Ubuntu Linux , and the process was quite smooth using the default package manager.
What's my experience with pricing, setup cost, and licensing?
It saves me both money and time.
Which other solutions did I evaluate?
I did not evaluate other options before choosing OpenJDK Java.
Modern development has become faster and reusable with long-term support and rich language features
What is our primary use case?
OpenJDK Java is one of the open-source Java development kits that I use. With all the Java libraries included in the JRE, I can handle all cases regarding object-oriented programming. However, it does not include J2EE (Java Enterprise Edition). OpenJDK Java is used for Java development and can be utilized in Spring Boot , Spring framework, and other play frameworks.
OpenJDK Java provides nearly all the functionality that Java uses. When comparing OpenJDK Java to Java EE, OpenJDK Java offers better code reusability through OOPs features, class collections, and collection frameworks. These features also bring some J2EE capabilities through beans. A main feature is that OpenJDK Java has Long-Term Support (LTS). For example, Java 21 has long-term support, and Java 1.8, Java 11, and Java 17 also have long-term support. Additionally, there is no cost for development, whereas Java EE is a paid feature where beans are handled by Java. From Spring Boot and Spring framework, I can use OpenJDK Java effectively.
OpenJDK Java runs on Windows, Linux, and macOS across every type of operating system. Similar to Java, OpenJDK Java compiles with Java code into bytecode, which runs in the JVM machine. All the features included in JEE are already present, such as Java compile code, Java run program, Javadoc, and job running and debugging. Multithreading is supported by OpenJDK Java. These are powerful tools, and high performance is available. JIT compilation and adaptive optimization are also present, along with regular updates as a main feature.
Java typically updates twice a year, with updates occurring every six months. Regular updates include bug fixes that do not impact the code if I use LTS (Long-Term Support). If a small update comes, that is fine. If a big update comes, I can also handle it. LTS support will always be available as a key feature. Currently, Java 21 has LTS support, and any update that comes will support my code.
What is most valuable?
OpenJDK Java can be used for Java development in Spring Boot, Spring framework, and other play frameworks. OpenJDK Java provides code reusability through OOPs features, class collections, and collection frameworks. Long-Term Support exists in OpenJDK Java for versions such as Java 21, Java 1.8, Java 11, and Java 17. OpenJDK Java runs on Windows, Linux, and macOS. It compiles with Java code and supports multithreading, high performance, JIT compilation, and regular updates.
What needs improvement?
Bean optimization could be improved. When comparing Java 1.8, which has a basic structure with for loops, to the stream API, the libraries are beneficial but slower. A for loop is a single loop that runs at the core level, whereas the stream API does the same thing but with slightly lower performance. Several improvements could be handled: performance improvement, better garbage collector latency, cloud container awareness, and cleaner syntax. Additionally, lambda is complex for beginners, so the usage of lambda could be improved.
The world is moving toward generative programming and AI usage with agentic approaches. Developers should have better handling of automatic GC performance issues. When compiling anything and an error is thrown, I want developers to have better performance insights into how this error will occur. Through AI, they can debug more effectively. Currently, when errors come, they are not straightforward. Developers have to read between the lines. If AI explains the error response, that would be better. Additionally, code usability could benefit from AI agentic capabilities.
For how long have I used the solution?
I am currently using OpenJDK Java.
What do I think about the stability of the solution?
I do not think there are any stability issues. Java has a very large community, so if anything comes up, I am able to resolve it. In this AI era, most issues can already be resolved. I do not believe any challenges have come that cannot be overcome.
What do I think about the scalability of the solution?
I do not think there is any scalability issue in OpenJDK Java.
How was the initial setup?
I do not think there are any challenges with initial setup. However, when installing any application, everything should be set up automatically, similar to how Java is installed. There should be no need to write environment variables. They should already be set up in the system. At the beginner level, developers can only write the code and do not have to use environment variables at all.
What's my experience with pricing, setup cost, and licensing?
The API impact on OpenJDK Java is minimal. When using the Spring Boot framework or similar frameworks, most things and beans are handled by the Spring framework. OpenJDK Java supports method level functionality with no difference from J2EE. However, bean handling can be a consideration because J2EE handles beans more efficiently compared to other frameworks. J2EE uses better bean optimization. Apart from this, I do not think there is any other issue. Most libraries already support both J2EE and OpenJDK Java, so I do not think there is any other impact.
Regarding development impact, performance-wise, OpenJDK Java is faster. One of the best features is that I can change my code and create my own compiler. Whatever method I choose, I can modify the code in JIT within OpenJDK Java. This is not possible in J2EE as J2EE does not allow these things. In Java 1.8, I can also change the background code and library code as this is allowed.
What other advice do I have?
OpenJDK Java is open for everyone, every developer, and every company, and it is free of cost. There is no deployment cost or any such pricing. OpenJDK Java can be used for developing any type of software that uses API level functionality, such as backend software. I gave this review a rating of 8.5 out of 10. If a company is choosing Java tools, they should go for OpenJDK Java.
Centralized development has delivered fast, secure payment processing with strong community support
What is our primary use case?
OpenJDK Java is used centrally for developing back-end services like APIs, batch processing, and file processing. It is easy to integrate OpenJDK Java with any other product or other languages regarding cross-platform capabilities.
What is most valuable?
What stands out for me about OpenJDK Java is that it is good for processing fast and very efficient in memory management from a technical perspective. It is fast, reliable, and easy to develop any concept in the payment industry.
The community support in OpenJDK is very helpful for my development process. The community has helped me with information on the latest features they added, new encryption and decryption methods, and how the internal memory works. These are the pieces of information I can get from the community channels.
I see a benefit from the regular updates in OpenJDK, as it is beneficial when we face many challenges in development. The regular updates from Oracle provide patches to solve different challenges in terms of security and memory management. From a developer's point of view, it also makes tasks easier.
What needs improvement?
Regarding OpenJDK, I do see areas for improvement, though I cannot currently comment on potential improvements. I acknowledge that there is a chance for enhancement.
Comparing OpenJDK Java with Python and other scripting languages, I find it a bit bulky, as it takes a lot of effort to enable scripts in a system. While Python is good for small tasks and easy to deploy, OpenJDK Java requires more effort for similar tasks.
For how long have I used the solution?
I stopped using it in March 2025, which is more than a year back now.
What do I think about the stability of the solution?
OpenJDK Java is 100% stable and demonstrates no downtime or glitches.
What do I think about the scalability of the solution?
OpenJDK Java is scalable.
How are customer service and support?
Community support is available, and there is also technical support with many discussions happening in different communities since it is an open platform, offering a lot of assistance. In my case, community support has been sufficient, and I did not need to reach out to technical support for the product.
How was the initial setup?
Installation for OpenJDK Java is easy, with not much complexity in the steps.
What was our ROI?
I can observe savings in my ROI and categorize it as money-saving. If I quantify the savings, I see about 60% in money savings and 40% in time savings.
What's my experience with pricing, setup cost, and licensing?
In terms of licensing and pricing for OpenJDK Java, I find it affordable and not expensive.
What other advice do I have?
I have experience with TiDB Cloud as I have been using that product before. I am working right now with multiple vendors and not only with a particular database, as I am using front end and back end languages including React and Angular. I am currently writing some Python code and back end Java.
The languages I am using include Angular, React, Java, and Python. PowerCARD is the product I am currently working on, which is a card product and an HPS product.
I am using OpenJDK Java and confirm that I use OpenJDK Java. I have around 10 plus years of experience with OpenJDK Java. I work with the product not only as a user but also as a consultant, working as a consultant with the vendor.
APIs impact my development speed positively as it is fast and secure, and it is easy to integrate across platforms with different tools and technologies. Almost all the tools available in the market are Java JDK enabled, making integration with OpenJDK Java very easy.
The cloud-native capabilities in OpenJDK Java are beneficial for my projects, as about 80 to 90% of the projects I work on in the card and payment industry are running on OpenJDK Java. I work in a hybrid environment, using a mix of cloud and on-premises solutions.
I have solutions available on AWS Cloud, and OpenJDK Java is compatible with AWS and Azure , as I use both. As of now, I have not purchased anything from the AWS marketplace.
I give this review a rating of 8 out of 10.
Which deployment model are you using for this solution?
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Building secure microservices has improved reliability and supports high-volume enterprise workflows
What is our primary use case?
My main use case for OpenJDK Java is developing enterprise-level back-end applications. I used Java, particularly with Spring Boot frameworks, to build secure and high-performance REST APIs. Java is also my go-to language for integrating it with databases like Oracle and MySQL and handling message systems such as Kafka and RabbitMQ, as well as implementing validation frameworks.
In my recent role, I developed and maintained OpenJDK Java Spring Boot microservices for an enterprise compliance and sanctions platform using OpenJDK Java as the runtime environment for all our back-end services to ensure open-source compatibility and ease of deployment. My responsibilities included designing the REST APIs, implementing the business validation frameworks, and integrating with Oracle databases and Kafka systems. The application handled critical workflows like watchlist onboarding and attestation and required high reliability and scalability, which OpenJDK Java provided.
In addition to the back-end, I used OpenJDK Java for implementing automated testing frameworks such as JUnit and Selenium to ensure code quality and reliability. I appreciate OpenJDK Java's regular updates and security patches, which helped maintain compliance and stability in production environments.
How has it helped my organization?
Out of those features, I rely mostly on OpenJDK Java's strong support for multithreading and concurrency in my day-to-day work. I often build back-end microservices that need to handle multiple requests simultaneously and process large volumes of data efficiently. OpenJDK Java's concurrency features, like the executor framework and synchronized collections, help me design scalable and responsive applications.
Using OpenJDK Java has impacted my organization positively. It has significantly improved productivity by providing a stable and mature platform. The rich set of libraries and frameworks like Spring Boot and Hibernate accelerates development and reduces the time needed.
By leveraging these OpenJDK Java frameworks and libraries, we reduced our development time by approximately twenty-five percent, allowing us to deliver features faster, and the automated memory management and troubleshooting have contributed to a fifteen percent reduction in production incidents and downtime.
What is most valuable?
The best features OpenJDK Java offers include robust cross-platform compatibility allowing applications to run seamlessly on different operating systems, strong memory management and garbage collection. There are rich standard libraries and APIs for networking, excellent support for multithreading, regular updates and security patches, wide ecosystem support including frameworks like Spring Boot, and strong backward compatibility, making it easier to maintain, along with an active community and extensive documentation.
Its cross-platform compatibility has reduced infrastructure costs as applications can be deployed on various operating systems without major changes. OpenJDK Java's strong memory management and garbage collection have contributed to system reliability, minimizing downtime and performance issues.
What needs improvement?
OpenJDK Java can be improved in startup time and memory footprint, especially for microservices and cloud-native applications where lightweight containers are preferred. Enhancing native integration and support for modern deployment models like serverless and containerized environments would make OpenJDK Java even more competitive. Simplifying the module system and improving the documentation could help reduce the learning curve for new developers. Continued investment in performance optimizations, especially for garbage collection and low-latency applications, would benefit high-throughput systems. Expanding the ecosystem of tools for monitoring, profiling, and debugging OpenJDK Java applications in distributed environments would further support enterprise adoption.
Improving the onboarding experience for new developers by providing more interactive tutorials, better documentation, and enhancing IDE integration with more out-of-the-box tools for code analysis is necessary. Increasing the visibility and accessibility of community-driven resources would also be beneficial.
For how long have I used the solution?
I have been using OpenJDK Java for seven years, starting from the early stages of my career. I have used various distributions of OpenJDK Java. In my recent years, it has become more of a standard in many of our enterprise environments.
What other advice do I have?
I would advise others looking into using OpenJDK Java to take advantage of it and regularly update to the latest release, mainly to benefit from security patches. Also evaluate your application's compatibility with the specific version planned for use and leverage strong community support and extensive documentation available for troubleshooting and best practices. It is wise to integrate automated testing and CI/CD pipelines to ensure smooth deployments and maintain code quality.
OpenJDK Java has a very reliable and robust platform, and its open-source model encourages innovation and transparency. The flexibility to deploy OpenJDK Java across different environments, on-premise, cloud, or containers makes it a versatile choice. I would rate this product a ten out of ten.
Which deployment model are you using for this solution?
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Cross-platform backend services have accelerated certificate APIs and simplified developer work
What is our primary use case?
My main use case for OpenJDK Java is for backend services.
A specific example of how I use OpenJDK Java in my work is for the backend server for textual service certificates.
The kind of backend systems or applications I support with OpenJDK Java is an API that's mostly for developers who communicate through our API.
What is most valuable?
In my opinion, the best feature that OpenJDK Java offers is that it's a cross-platform solution you can use on any operating system.
The way that helps my team or projects is that it definitely makes our backend developers' lives easier. It's easy to develop and faster to deploy.
OpenJDK Java is well supported, and it really helps our developers.
OpenJDK Java has positively impacted my organization because if developers can deliver work faster, it has of course positively impacted the company.
What needs improvement?
Unfortunately, I cannot answer how OpenJDK Java can be improved. The only thing I can say is that perhaps it could provide more functions or available libraries.
The improvements OpenJDK Java needs are mostly just the functions and drivers that need to be set up.
For how long have I used the solution?
I have been using OpenJDK Java for four years.
What do I think about the stability of the solution?
In my experience, OpenJDK Java is stable.
What do I think about the scalability of the solution?
The scalability of OpenJDK Java is good so far.
How are customer service and support?
The customer support for OpenJDK Java is good.
How would you rate customer service and support?
Which solution did I use previously and why did I switch?
I did not use a different solution before OpenJDK Java.
What about the implementation team?
I purchased OpenJDK Java through the AWS Marketplace as a company decision.
What was our ROI?
I have not seen a return on investment with OpenJDK Java.
What's my experience with pricing, setup cost, and licensing?
My experience with pricing, setup cost, and licensing is that I cannot speak to it because I have not experienced anything.
Which other solutions did I evaluate?
I have not evaluated any other options before choosing OpenJDK Java.
What other advice do I have?
I think everything is clear regarding how I use OpenJDK Java in my setup, so I have nothing other than that to add.
I would rate OpenJDK Java an eight out of ten.
I chose eight out of ten because, as I mentioned, I believe it is a strong solution.
I do not have any advice to give to others looking into using OpenJDK Java.
My company does not have a business relationship with this vendor other than being a customer.
The overall rating for this review is eight out of ten.