The Java platform is one of the most widely used platforms for application development in the world.
The platform is so popular that there are several different flavors of Java that can be used for developing
applications that run on different mediums. From development of desktop, mobile, or web applications
and hardware operating systems, Java can be utilized for development of just about any solution. As such,
Java has become a very popular platform for development of web and enterprise applications, offering web
services, reliability, security, and much more.
Java Enterprise Edition was originally released in 1999 as Java 2 Platform, Enterprise Edition (J2EE).
Although several enterprise frameworks were available for development of reliable and secure applications
on the Java platform, it made sense to standardize some solutions in order to minimize customization and
help provide standards around Java Enterprise development to make it more prevalent in the industry.
The platform originally included a terse number of specifications for standardization, including Java
Servlet, JavaServer Pages, RMI, Java Database Connectivity (JDBC), Java Message Service API (JMS), Java
Transaction API (JTA), and Enterprise JavaBeans. Early development of J2EE applications had a large
learning curve, and it was cumbersome because it required lots of XML configuration. Even with these
setbacks, it became popular among larger organizations and companies due to the prevalence of Java and
its well-known security benefits. In 2001, J2EE 1.3 was released, adding more specifications to the platform,
including the JavaServer Pages Standard Tag Library (JSTL), and Java Authentication and Authorization
Service (JAAS). Other specifications, such as Java Servlet, also gained enhancements under the J2EE 1.3
release, making evolutionary enhancements to the platform. The release of J2EE 1.4 in 2003 marked a major
milestone for Java Enterprise, as many new specifications were added to the platform, providing standards
for even more Java technologies. The release of J2EE 1.4 marked the first iteration of Web Services for J2EE
1.1, JavaServer Faces (JSF), and Java APIs for XML solutions such as JAXP, JAXR, and more. Although the
release of J2EE 1.4 included many specifications, it was still deemed as “difficult to learn,” “cumbersome,”
and “not productive”.
Over the next few years, J2EE was re-worked in an attempt to make it easier to learn and utilize for the
construction of modern web applications. Although XML is an excellent means for configuration, it can
be cumbersome and difficult to manage, so configuration was a big item that was being addressed for the
next release. Technologies such as Enterprise JavaBeans (EJB) included some redundant characteristics,
making EJB coding time-consuming and difficult to manage, so an overhaul of EJB was also in order. In
May of 2006, Java EE 5 was released, leaving the J2EE acronym behind, and changing to simply Java EE
instead. The Java EE 5 platform was significantly easier to use and maintain because features such as
annotations were introduced, cutting down the amount of XML configuration significantly, as configuration
could now be injected via annotations. EJBs were made easier to develop, and Java Persistence API (JPA)
became a marketable technology for object-relational mapping. Java Enterprise Edition has since become
a widely adopted and mature platform for enterprise development. Java EE 6 was released in 2009, making
configuration and APIs even easier, and adding more specifications to the platform. Specifications such as
Contexts and Dependency Injection and Bean Validation were introduced, vastly changing the landscape
of the platform and streamlining development. Java EE 7 (released in 2013) continued to strengthen and
modernize the platform, adding the WebSockets and JSON-P specifications. In the Java EE 7 release,
specifications such as JSF and EJB were also enhanced, adding even more features to increase productivity
and functionality and allowing them to work better for more modern web solutions.