Twenty years ago this week, enterprise Java was born. The Java 2 Platform, Enterprise Edition (J2EE) launched as version 1.2 on Dec. 12, 1999. It built upon many years of work previously in the enterprise distributed systems arena, such as the common object request broker architecture (CORBA) and distributed computing environment (DCE), and its birth marked the beginning of a technology that would become a powerhouse in the world of enterprise application development.
Building on the "write once, run anywhere" promise of the Java programming language, the enterprise Java platform extends this neutrality and portability with a set of specifications that are well-suited for building large scale applications. As a result, enterprise Java has been able to offer an appealing option for developers that enables them to take advantage of the reliability, speed, efficiency and ease-of-use needed for enterprise-grade development.
Java remains one of the most popular languages in the world across multiple indices—including the RedMonk Programming Language Rankings, TIOBE Index, GitHub’s State of the Octoverse, and the Stack Overflow Developer Survey—and has seen massive adoption and has millions of developers across its diverse ecosystem. We believe this is important context that perhaps can help us better understand some of the broader industry factors that have contributed to the longevity of the enterprise Java platform over the years.
Despite its success, the journey hasn’t always been smooth, and even today, many questions remain over how Java the platform—now known as Jakarta EE—will continue to evolve in a cloud-native era.
This month we are celebrating the past two decades of enterprise Java, and today we are looking at several notable innovations that emerged through community development on and around the platform.
This is by no means meant to be a comprehensive list, but rather three of our favorites that were selected for their foundational role in the evolution of enterprise Java. Ultimately, these technologies also played a role in influencing enterprise application development over the years, whether they built on and improved a technology, process or approach from other tools or themselves laid the groundwork for new application development innovations down the line.
And so, without further ado, here are a few of our favorites:
Contexts and Dependency Injection (CDI)
This popular framework celebrates a milestone of its own this week. The "Contexts and Dependency Injection for the Java EE platform" was first introduced with the release of Java EE 6 on Dec. 10, 2009, making it 10 years old today.
When it was released CDI represented an entirely new method for managing components across application layers, offering developers more flexibility and control over the Java EE platform as a whole. In addition, CDI enabled developers to build more robust applications in a type safe manner, giving it even more of an edge over other dependency injection methods.
Java Persistence API (JPA)
The JPA specification was created to help give developers a consistent and straightforward way to define and manage the persistence of data in a Java application. This is important for maintaining the state of key business objects, and a necessary part of developing enterprise applications. When the API was introduced, it gave developers a much simpler and standardized way of addressing persistence, as well as a greater degree of flexibility in implementing an object-relational mapping (ORM) layer.
ORM tools such as Hibernate serve an important role alongside JPA, helping to translate data from object models to relational models as it passes back and forth between the application and database.
In essence, servlets enabled developers to extend the core infrastructure capabilities of the application server—things like speed, reliability and security—out to the applications they were building to run on those servers. As a result, servlets played a pivotal role in paving the way for enterprises to more fully embrace Java for their mission-critical application workloads. Using the Java servlet API, developers were able to build portable, platform-independent and dynamic services aimed at meeting specific business needs.
The servlet API rounds out our list of notable innovations with its balance of simplicity and features, the vast number of frameworks that have layered on top of it, and the number of implementations it has generated over the years.
Follow along as we continue to explore two decades of enterprise Java, from J2EE to Java EE to Jakarta EE, through a series of posts on the Red Hat blog highlighting marquee moments; reflections from colleagues, community members and industry watchers; and views of where we believe the platform is heading in the future.