A look at the Past, Present and Future
Over the last three decades, technology has been evolving at a breakneck pace, with innovations constantly redefining every aspect of application development. In such a fast-moving and dynamic landscape, few technologies stand the test of time, especially in computer science. Yet, Java has done just that. As we celebrate 30 years of Java and 25 years of enterprise Java, it’s clear that these solutions have not only endured but thrived—adapting, advancing and proving their lasting value to software engineers worldwide.
The rise of personal computers transformed technology from a niche tool into something accessible to millions. This widespread adoption sparked collaboration and innovation, particularly through open-source projects, shaping the digital world we know today. Within this short yet prolific period of technological advancement, it’s easy to assume that early developments have long been replaced. Yet, some technologies, namely Java and enterprise Java, have not only remained relevant but also essential. Their longevity isn’t just a matter of persistence. It is the result of solving fundamental challenges that developers have faced for decades.
A duke is born: Java
The first of such challenges became especially clear in the early 1990s. Back then, a common pain point was surfacing in the software industry: engineers involved in commercial programming, typically using C/C++, struggled with reliability and portability. As a result, software development was fragmented, with programs often requiring extensive modification to run on different platforms. Recognizing this gap, Sun Microsystems’ “Green Team,” led by James Gosling, set out to create a solution that would solve the practical problems experienced by engineers, making the software development process a more platform-neutral process.
The answer was Java, which made its debut in 1995 as a processor-independent, object-oriented programming language for dynamic content delivered over the internet. Its defining feature, “Write Once, Run Anywhere” (WORA), made it an instant hit and helped Java quickly gain traction, as developers could write code once and deploy it across multiple systems without modification.
In particular, the technology offered a versatile, portable, easy to use yet powerful general-purpose solution for the newly born world-wide web, which was invented in 1989 and was beginning to gain momentum. The popularity of Java skyrocketed when the first popular internet browser, Netscape Navigator, incorporated Java support.
The availability, accessibility as well as the ability of Java to remain relevant were (and still are) enhanced by the Java Community Process (JCP) designed to support its development. Established in 1998, the JCP offers a formal mechanism for interested parties to propose new features to the Java platform (Java Specification Requests, JSRs) and develop standard technical specifications. This collaborative effort, which exists to this day, has been helping Java adapt to changing user and market needs while expanding the programming language into a comprehensive platform.
Thanks to all these elements, Java’s reach soon began to extend and permeate all aspects of software development beyond web applications, encompassing even enterprise solutions. In effect, while the potential of the web to organizations was still untapped and enterprise web strategies didn’t exist, pioneering companies were beginning to leverage Java.
The rise of another star: J2EE
Recognizing Java’s potential for enterprise computing as well as the demand for such a solution, Sun Microsystems introduced Java 2 Platform, Enterprise Edition (J2EE) in 1999. This continued to rely on the WORA approach of the Java programming language while including specifications designed to support the needs of enterprise frameworks, namely the design of large-scale applications and distributed systems.
Simultaneously, application server technology gained prominence as a valuable middleware solution for creating effective distributed applications, further supporting Java’s adoption and platform independence. The nature of application servers and Java made the two technologies complementary, offering users a common, ubiquitous, platform-independent substrate upon which enterprise applications could be built. As such, this combination helped standardize enterprise application development, providing developers with tools for scalability, security and robustness while redefining how enterprises perceived and interacted with the web.
The next few years saw continued innovations in the Java and application server space, with a wealth of new APIs added to the language. In 2006, a number of key events influencing the future of the technologies took place.
Firstly, following the launch of Java version 5 and 6, J2EE was renamed Java Enterprise Edition (Java EE). Then, Red Hat acquired JBoss open-source middleware provider, which was seen as an expansion of the application server industry to support growing market needs. Finally, by releasing the core Java technologies under the GNU General Public License 2.0 (GPLv2) and formally open-sourcing the technology, Sun took a key step in helping Java become a collaborative, community-driven language.
In 2008, interest in Java grew further, as a new, popular platform using Java for its UI code and application development was released: Android. The following year, the first version of the videogame Minecraft further drove Java adoption, inspiring many young developers to learn the language in order to add new content to the game, like skins and mods.
A past of uncertainties and major changes
The story of Java and enterprise Java would be very boring without a proper hero’s journey. In fact, we wouldn’t be here celebrating if our beloved technologies didn’t manage to win a decisive victory after a crisis. This happened in the 2010s.
Despite their success and large-scale adoption, Java and its enterprise counterpart began to face turbulent times, leaving many developers and industry leaders uncertain about the future of the technologies. In effect, the adoption of Java was declining. For example, on increasingly more popular mobile phones, Java was pushed aside by Apple, and although Google used Java as the primary app development language for Android, it also developed its own runtime, Dalvik.
The enterprise Java landscape was presenting equal challenges. A series of acquisitions, licensing changes, development slowdowns and commercial support endings for key products culminated in 2015, when contributions to the Java EE project stopped. This led to stagnation and industry-wide speculation about the platform’s viability, support and sustainability.
Key initiatives were established to help ensure Java EE’s longevity. In particular, a group of industry leaders formed the “Java EE Guardians” in 2016. This group included leading industry experts, such as James Gosling and Java EE expert Reza Rahman, whose mission was to advocate for the continued development of Java EE and ensure its relevance in the enterprise landscape.
While the work from such organizations was successful, as it helped Java and enterprise Java survive this challenging period, uncertainties still permeated the industry. These, together with the simultaneous rise of microservices (in place of monoliths), cloud computing and DevOps, created a fertile ground for the development and adoption of key alternatives, such as the Spring framework.
Java and Jakarta EE today: stability and growth
The issues encountered in the 2010s made it clear that something had to change if Java and enterprise Java were going to survive in the tech world. They needed to address current challenges and find new, more suitable ways to support developers as well as the broader tech community.
The first major move was the shift in Java’s release model. Instead of waiting years between updates, a new version of Java would be (and still is) released every six months. This was a game-changer, as it helped the technology evolve incrementally and consistently to stay relevant. The introduction of Java 9 in 2017, with its modular system (Java Platform Module System, JPMS), marked the beginning of Java’s transformation into a more modern, flexible language.
Meanwhile, Java EE was donated to the Eclipse Foundation in 2017 as Jakarta EE. Jakarta EE 8 was released in 2019 and ensured backward compatibility with Java EE 8. These two events represented a decisive step to help enterprise Java modernize and maintain its competitiveness.
At the same time, Java had to address its biggest disadvantage in the cloud-native era: performance. Compared to newer languages, Java applications were often slow to start and consumed too much memory, making them less suited for containerized environments. The solution came in the form of GraalVM, which allowed Java applications to be compiled ahead of time into native executables. This drastically improved startup times and reduced memory usage, making Java viable for cloud and Kubernetes deployments.
In addition, Jakarta EE leaned into microservices. The MicroProfile initiative provided lightweight APIs for cloud-native development. Jakarta EE 10, released in 2022, delivered valuable features, such as modular architecture and microservices-first design.
As a result of these actions, Java and Jakarta EE have been able to re-establish a strong presence in the market. For example, Jakarta EE has seen a notable rise in usage, growing from 53% in 2023 to 60% in 2024, according to the Eclipse Foundation’s 2024 Jakarta EE Developer Survey Report [1].
The code ahead: what’s next for Java and enterprise Java
Just like in the best hero stories, our protagonists Java and enterprise Java managed to improve and recover, despite the challenges in the 2010s. In fact, we are here commemorating their 30th and 25th anniversaries and hoping to celebrate 30 more.
The latest developments with the two platforms hint at a positive future. Several key OpenJDK initiatives, such as Project Loom, are helping advance Java, so that it remains a robust and modern language as well as framework, well-suited for contemporary application development.
The Eclipse Foundation’s Jakarta EE Future Directions Interest Group is designed to help the technology remain up to date by looking at emerging technologies, new industry use cases and integrations, among others.
In addition, the Open Regulatory Compliance Working Group (also from the Eclipse Foundation) will assist open-source participants with adhering to global regulatory requirements, such as the EU’s Cyber Resilience Act.
conclusions
In this highly technological era, it’s all too easy to forget about the many computing technologies that once ruled our work and our lives but are now irrelevant. Only those that have been able to evolve to address changing needs have succeeded in remaining a mainstay. Java and enterprise Java stand as rare examples of longevity in the industry, driven by constant innovation, large-scale engineering investments and strong community support, such as the JCP.
Their ability to evolve has ensured their place as foundational technologies in application development. Even more, their continued growth and relevance suggest that their journey is far from over.