Monday, March 31, 2025 - 07:00
  • Share this article:

The Java community is celebrating some remarkable milestones. This year marks 30 years of Java, while its enterprise application development platform, Jakarta EE (formerly J2EE and then Java EE), turned 25 last December. 

This longevity in the tech world is far from usual. It attests to Java’s ability to evolve, stay relevant, and continue delivering value in the software development industry for the past three decades. The same can be said of Java’s younger sibling, enterprise Java. 

As one of the most enduring and influential programming languages and platforms, Java has kept evolving to meet the demands of modern software development. Likewise, Jakarta EE has been developed non-stop to remain a cornerstone of business applications. The original technology and its ecosystem have been continuously innovated on by, and for, the Java community.

Enterprise Java Introduced a Standardised Platform 

The internet had just started taking off when the Java 2 Platform Enterprise Edition (J2EE) debuted in 1999. But pioneering companies were already starting to leverage Java for pioneering applications. J2EE supported the rapid advancement of enterprise software development by introducing a standardised platform for building robust, distributed enterprise applications. 

Components unique to J2EE facilitated enterprise application development in new, more efficient ways. Java Database Connectivity (JDBC) standardised API for database access and Java Message Service (JMS) for asynchronous communication between application components via messaging queues. Developers could leverage the Java Naming and Directory Interface (JNDI), allowing applications to look up and manage resources such as databases and distributed objects. Enterprise JavaBeans (EJB) provided a structured approach to transaction management, security, and remote method invocation.

Over the years, J2EE continued to evolve and improve its capabilities, such as with web service integration and security enhancements. In 2006, J2EE version 5 became Java EE, bringing valuable enhancements in modularity, scalability, and performance. This version marked a decisive shift towards developer productivity and ease of use, which were the most pressing user needs. 

By the time Java EE 6 was released in 2009, the platform had embraced an even more modular and flexible approach, with features such as Context and Dependency Injection (CDI) and an improved Servlet 3.0 specification offering greater adaptability. 

Navigating Uncertainty in 2010s Clarified Need for a New Approach

Despite widespread adoption, Java EE encountered turbulent times in the 2010s, with a combination of acquisitions, licensing changes, development slowdowns, and the discontinuation of commercial support for key products. This culminated in 2015 when contributions to the project slowed down dramatically, leading to stagnation and widespread concern for the platform’s viability, long-term support, and sustainability.

Key initiatives emerged to safeguard Java EE’s future. Notably, in 2016, a group of industry leaders formed the “Java EE Guardians” coalition to advocate for the continued development of Java EE. 

These challenges made it clear that change was necessary for survival. Java EE would need to address existing issues and adopt new strategies to better support developers and the broader tech community if it was to remain relevant in the enterprise landscape.

Jakarta EE Provided a Stable Framework for Modernisation

The first major shift was Java’s new six-month release schedule. Instead of waiting years between updates, the language could evolve incrementally and stay up to date with modern demands. 

The second was Oracle moving Java EE to the Eclipse Foundation in 2018, where it was rebranded as Jakarta EE. This marked a new era. The platform became open source and independent of any one corporate entity, enabling greater participation from developers and organisations. This more community-driven governance allowed users to define and implement any upgrades and features that were needed to overcome real-world issues.

One of the most pressing concerns was ensuring continuity. So, the Jakarta EE 8 release in 2019 offered backward compatibility with Java EE, laying the groundwork for modernisation. Jakarta EE has taken significant strides since then, with Jakarta EE 9 laying the foundation by transitioning to the jakarta.* namespace, lowering barriers to entry and simplifying migration. Jakarta EE 10 introduced the Core Profile, focused for smaller runtimes with microservice-oriented architectures.

Thanks to these efforts, enterprise Java has regained a strong foothold in the market. Jakarta EE’s usage has increased significantly, rising from 53% in 2023 to 60% in 2024. And up to 35% of Java applications run on Jakarta EE runtimes, as reported in the Eclipse Foundation's 2024 Jakarta EE Developer Survey Report.

Jakarta EE 11 and 12 Continue to Innovate on Enterprise Java

The latest version, Jakarta EE 11, is just around the corner — and the latest version of the Core Profile is already available. This upcoming release is designed to meet the evolving needs of developers in both cloud native and traditional enterprise environments. It integrates new Java features, enhancing existing APIs and introducing new specifications to enhance the developer experience with advanced capabilities, and improvements in consistency and simplicity. It also features an update to the Core Profile TCK, which attempts to validate the ability to combine individual component specifications into composite test applications.

One key aspect of Jakarta EE 11 is alignment with Java SE 17 and 21, incorporating the latest advancements from the broader Java ecosystem. Notably, Jakarta EE 11 includes support for Virtual Threads, which are among the most significant additions to the Java language in recent years. Additionally, Jakarta EE 11 addresses the deprecation of the Security Manager, ensuring that the platform can maximise security and robustness. Other improvements involve CDI to offer more seamless integration and improved support for CDI in various Jakarta EE technologies, leading to more consistent and intuitive programming models across the entire Jakarta EE platform.

One of the most exciting additions is Jakarta Data, a new API designed to streamline data access and provide a more flexible and standardised approach for working with databases. This specification introduces a higher level, repository-based abstraction that simplifies database interactions, making data persistence more intuitive, flexible, and aligned with modern development practices.

These improvements streamline development, making it easier for developers to build applications that are not only powerful but also easier to maintain. While Jakarta EE 11 is almost here, planning for Jakarta EE 12 is already underway, with a focus on further advancing enterprise Java in key areas. One major ongoing project goal is to create a predictable release schedule.

The next release will continue aligning Jakarta EE with Java SE and CDI, focusing on greater modularity, modernised Technology Compatibility Kits (TCKs), and enhanced CDI support for Jakarta REST and Jakarta Concurrency. Additionally, Jakarta EE 12 is expected to bring deeper cloud native integration while enhancing standardised configuration management. At the same time, Jakarta EE 12 will likely continue deprecating outdated technologies, encouraging lighter alternatives while refining the platform for better microservices and event-driven architectures.

By embracing these innovations, Jakarta EE is well set to deliver a standard-based, valuable, future-oriented enterprise Java platform that can help application developers thrive in the digital era. As such, it is strongly positioned to remain one of the leading enterprise application development choices of the Java platform for the next 30 years.

About the Author

Steve Millidge

Steve Millidge

Steve Millidge is the CEO and founder of Payara Services. He is an expert in Java EE, Jakarta EE, and MicroProfile, and a project lead for the Eclipse GlassFish project and the Jakarta EE Platform project.